Nodos virtuales - AWS App Mesh

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Nodos virtuales

Un nodo virtual actúa como un puntero lógico a un determinado grupo de tareas, como, por ejemplo, un servicio ECS de Amazon o una implementación de Kubernetes. Al crear un nodo virtual, debe especificar un método de detección de servicios para su grupo de tareas. Todo el tráfico de entrada que el nodo virtual espera debe especificarse como un oyente. Cualquier servicio virtual al que un nodo virtual envía tráfico saliente se especifica como backend.

Los metadatos de respuesta del nuevo nodo virtual contienen el Nombre de recurso de Amazon (ARN) que se asocia al nodo virtual. Establezca este valor como la variable de entorno APPMESH_RESOURCE_ARN del contenedor del proxy de Envoy del grupo de tareas en la definición de tarea de Amazon ECS o la especificación del pod de Kubernetes. Por ejemplo, el valor podría ser arn:aws:appmesh:us-west-2:111122223333:mesh/myMesh/virtualNode/myVirtualNode. Después, esto se asigna a los parámetros node.id y node.cluster de Envoy. Debe utilizar la versión 1.15.0 o posterior de la imagen de Envoy al establecer esta variable. Para obtener más información sobre las variables de App Mesh Envoy, consulte Imagen de Envoy.

nota

De forma predeterminada, App Mesh utiliza el nombre del recurso que se especificó en APPMESH_RESOURCE_ARN cuando Envoy hace referencia a sí mismo en métricas y registros de seguimiento. Puede anular este comportamiento estableciendo la variable de entorno APPMESH_RESOURCE_CLUSTER con su propio nombre.

Creación de un nodo virtual

AWS Management Console
Para crear un nodo virtual mediante la AWS Management Console
  1. Abra la consola de App Mesh en https://console.aws.amazon.com/appmesh/.

  2. Elija la malla en la que desea crear el nodo virtual. Se muestran todas las mallas que son de su propiedad y que se han compartido con usted.

  3. Elija Nodos virtuales en el panel de navegación izquierdo.

  4. Seleccione Crear nodo virtual y, a continuación, especifique la configuración del nodo virtual.

  5. En Nombre del nodo virtual, escriba un nombre para el nodo virtual.

  6. En Método de detección de servicios, elija una de las siguientes opciones:

    • DNS: especifique el nombre de host DNS del servicio real que representa el nodo virtual. El proxy de Envoy se implementa en una VPC de Amazon. El proxy envía solicitudes de resolución de nombres al servidor DNS que está configurado para la VPC. Si se resuelve el nombre de host, el servidor DNS devuelve una o más direcciones IP. Para obtener más información acerca de la configuración DNS de VPC, consulte Uso de DNS con su VPC. Para Tipo de respuesta DNS (opcional), especifique los tipos de puntos de conexión devueltos por el solucionador de DNS. Equilibrador de carga significa que el solucionador de DNS devuelve un conjunto de puntos de conexión con equilibrio de carga. Puntos de enlace significa que la resolución de DNS devuelve todos los puntos de conexión. De forma predeterminada, se supone que el tipo de respuesta es Equilibrador de carga.

      nota

      Si usa Route53, deberá utilizar el Equilibrador de carga.

    • AWS Cloud Map: especifique un Nombre de servicio y un Espacio de nombres HTTP existentes. Si lo desea, también puede especificar los atributos que App Mesh puede consultar a AWS Cloud Map seleccionando Agregar fila y especificando una Clave y un Valor. Solo se devolverán las instancias que coincidan con todos los pares de clave/valor especificados. Para poder utilizar AWS Cloud Map, su cuenta debe tener el rol vinculado al servicio AWSServiceRoleForAppMesh. Para obtener más información sobre AWS Cloud Map, consulte la Guía para desarrolladores de AWS Cloud Map.

    • Ninguno: seleccione si su nodo virtual no espera tráfico de entrada.

  7. Preferencia de versión de IP

    Controle qué versión de IP debe usarse para el tráfico dentro de la malla activando la opción Anulación del comportamiento predeterminado de la versión de IP. De forma predeterminada, App Mesh usa varias versiones de IP.

    nota

    La configuración de la preferencia IP en el nodo virtual solo anula la preferencia IP establecida para la malla en este nodo específico.

    • Valor predeterminado

      • El solucionador de DNS de Envoy prefiere IPv6 y recurre a IPv4.

      • Usamos la dirección IPv4 devuelta por AWS Cloud Map, si está disponible, y recurrimos a la dirección IPv6.

      • El punto de conexión creado para la aplicación local usa una dirección IPv4.

      • Los oyentes de Envoy se enlazan a todas las direcciones IPv4.

    • IPv6 preferido

      • El solucionador de DNS de Envoy prefiere IPv6 y recurre a IPv4.

      • Se utiliza la dirección IPv6 devuelta por AWS Cloud Map, si está disponible, y se recurre a IPv4.

      • El punto de conexión creado para la aplicación local usa una dirección IPv6.

      • Los oyentes de Envoy se enlazan a todas las direcciones IPv4 y IPv6.

    • IPv4 preferido

      • El solucionador de DNS de Envoy prefiere IPv4 y recurre a IPv6.

      • Usamos la dirección IPv4 devuelta por AWS Cloud Map, si está disponible, y recurrimos a la dirección IPv6.

      • El punto de conexión creado para la aplicación local usa una dirección IPv4.

      • Los oyentes de Envoy se enlazan a todas las direcciones IPv4 y IPv6.

    • Solo IPv6

      • El solucionador de DNS de Envoy solo usa IPv6.

      • Solo se utiliza la dirección IPv6 devuelta por AWS Cloud Map. Si AWS Cloud Map devuelve una dirección IPv4, no se utiliza ninguna dirección IP y se devuelven resultados vacíos a Envoy.

      • El punto de conexión creado para la aplicación local usa una dirección IPv6.

      • Los oyentes de Envoy se enlazan a todas las direcciones IPv4 y IPv6.

    • Solo IPv4

      • El solucionador de DNS de Envoy solo usa IPv4.

      • Solo se utiliza la dirección IPv4 devuelta por AWS Cloud Map. Si AWS Cloud Map devuelve una direcciónIPv6, no se utiliza ninguna dirección IP y se devuelven resultados vacíos a Envoy.

      • El punto de conexión creado para la aplicación local usa una dirección IPv4.

      • Los oyentes de Envoy se enlazan a todas las direcciones IPv4 y IPv6.

  8. (Opcional) Valores predeterminados de la política del cliente: configure los requisitos predeterminados al comunicar con los servicios virtuales de backend.
    nota
    • Si desea habilitar la seguridad de la capa de transporte (TLS) para un nodo virtual existente, le recomendamos que cree un nodo virtual nuevo, que represente el mismo servicio que el nodo virtual existente, en el que habilitar TLS. A continuación, transfiera gradualmente el tráfico al nuevo nodo virtual mediante un enrutador y una ruta virtuales. Para obtener más información acerca de la creación de una ruta y el ajuste de las ponderaciones para la transición, consulte Rutas. Si actualiza un nodo virtual existente que presta servicio al tráfico con TLS, existe la posibilidad de que los proxies de Envoy del cliente descendente reciban el contexto de validación de TLS antes de que el proxy de Envoy del nodo virtual que ha actualizado reciba el certificado. Esto puede provocar errores de negociación de TLS en los proxies de Envoy descendentes.

    • La autorización de proxy debe estar habilitada para el proxy de Envoy implementado con la aplicación representada por los nodos virtuales del servicio de backend. Le recomendamos que, cuando habilite la autorización de proxy, restrinja el acceso únicamente a los nodos virtuales con los que se comunica este nodo virtual.

    • (Opcional) Seleccione Aplicar TLS si quiere que el nodo virtual se comunique con todos los backends mediante la seguridad de la capa de transporte (TLS).

    • (Opcional) Si solo quiere exigir el uso de TLS para uno o más puertos específicos, indique un número en Puertos. Para agregar puertos adicionales, seleccione Agregar puerto. Si no especifica ningún puerto, la seguridad TLS se aplicará a todos los puertos.

    • En Método de validación, seleccione una de las siguientes opciones. El certificado que especifique ya debe existir y cumplir unos requisitos específicos. Para obtener más información, consulte Requisitos del certificado.

      • Alojamiento de AWS Private Certificate Authority: seleccione uno o más certificados existentes. Para obtener un tutorial completo e integral sobre la implementación de una malla mediante una aplicación de ejemplo que utiliza el cifrado con un certificado ACM, consulte Configuración de TLS con AWS Certificate Manager en GitHub.

      • Alojamiento de Envoy Secret Discovery Service (SDS): escriba el nombre del secreto que Envoy obtendrá mediante Secret Discovery Service.

      • Alojamiento de archivos local: especifique la ruta al archivo de la cadena de certificados en el sistema de archivos en el que está implementado Envoy. Para obtener un tutorial completo e integral sobre la implementación de una malla mediante una aplicación de ejemplo que utiliza el cifrado con archivos locales, consulte Configuración de TLS con certificados TLS proporcionados por archivos en GitHub.

    • (Opcional) Escriba un nombre alternativo del asunto. Para agregar SAN adicionales, seleccione Agregar SAN. Los SAN deben tener el formato FQDN o URI.

    • (Opcional) Seleccione Proporcionar un certificado de cliente y una de las siguientes opciones para proporcionar un certificado de cliente cuando un servidor lo solicite y habilitar la autenticación TLS mutua. Para obtener más información sobre la TLS mutua, consulte los documentos de Autenticación TLS mutua de App Mesh.

      • Alojamiento de Envoy Secret Discovery Service (SDS): escriba el nombre del secreto que Envoy obtendrá mediante Secret Discovery Service.

      • Alojamiento de archivos local: especifique la ruta al archivo de la cadena de certificados, así como la clave privada, en el sistema de archivos en el que está implementado Envoy.

  9. (Opcional) Backends de servicios: especifique el servicio virtual de App Mesh con el que se comunicará el nodo virtual.
    • Escriba un nombre de servicio virtual de App Mesh o nombre de recurso de Amazon (ARN) completo para el servicio virtual con el que se comunica el nodo virtual.

    • (Opcional) Si desea establecer una configuración de TLS única para un backend, seleccione Configuración de TLS y, a continuación, Anular los valores predeterminados.

      • (Opcional) Seleccione Aplicar TLS si quiere que el nodo virtual se comunique con todos los backends mediante TLS.

      • (Opcional) Si solo quiere exigir el uso de TLS para uno o más puertos específicos, escriba un número en Puertos. Para añadir puertos adicionales, seleccione Agregar puerto. Si no especifica ningún puerto, se aplicará la seguridad TLS a todos los puertos.

      • En Método de validación, seleccione una de las siguientes opciones. El certificado que especifique ya debe existir y cumplir unos requisitos específicos. Para obtener más información, consulte Requisitos del certificado.

        • Alojamiento de AWS Private Certificate Authority: seleccione uno o más certificados existentes.

        • Alojamiento de Envoy Secret Discovery Service (SDS): escriba el nombre del secreto que Envoy obtendrá mediante Secret Discovery Service.

        • Alojamiento de archivos local: especifique la ruta al archivo de la cadena de certificados en el sistema de archivos en el que está implementado Envoy.

      • (Opcional) Escriba un Nombre alternativo del asunto. Para añadir SAN adicionales, seleccione Agregar SAN. Los SAN deben tener el formato FQDN o URI.

      • (Opcional) Seleccione Proporcionar un certificado de cliente y una de las siguientes opciones para proporcionar un certificado de cliente cuando un servidor lo solicite y habilitar la autenticación TLS mutua. Para obtener más información sobre la TLS mutua, consulte los documentos de Autenticación de TLS mutua de App Mesh.

        • Alojamiento de Envoy Secret Discovery Service (SDS): escriba el nombre del secreto que Envoy obtendrá mediante Secret Discovery Service.

        • Alojamiento de archivos local: especifique la ruta al archivo de la cadena de certificados, así como la clave privada, en el sistema de archivos en el que está implementado Envoy.

    • Para añadir backends adicionales, seleccione Agregar backend.

  10. (Opcional) Registro

    Para configurar el registro, escriba la ruta de registro de acceso HTTP que desea que utilice Envoy. Le recomendamos la ruta /dev/stdout para que pueda utilizar controladores de registro de Docker para exportar los registros de Envoy a un servicio como Registros de Amazon CloudWatch.

    nota

    Los registros deben ser recibidos por un agente en su aplicación y enviados a un destino. Esta ruta de archivo solo indica a Envoy donde enviar los registros.

  11. Configuración del oyente

    Los oyentes admiten los protocolos HTTP, HTTP/2, GRPC y TCP. No admiten HTTPS

    1. Si el nodo virtual espera tráfico de entrada, especifique un puerto y protocolo para ese oyente. El oyente http permite la transición de la conexión a websockets. Puede hacer clic en Agregar agente de escucha para añadir varios oyentes. El botón Eliminar eliminará ese oyente.

    2. (Opcional) Habilitar grupo de conexiones

      La agrupación de conexiones limita el número de conexiones que un Envoy puede establecer simultáneamente con el clúster de aplicaciones local. Su objetivo es proteger su aplicación local frente a la sobrecarga de conexiones y le permite ajustar la configuración del tráfico a las necesidades de sus aplicaciones.

      Puede configurar los ajustes del grupo de conexiones del lado de destino para un oyente de nodos virtuales. App Mesh establece la configuración del conjunto de conexiones del lado del cliente en infinita de forma predeterminada, lo que simplifica la configuración de la malla.

      nota

      Los protocolos connectionPool y portMapping deben ser los mismos. Si el protocolo del oyente es tcp, especifique solo maxConnections. Si e protocolo del oyente es grpc o http2, especifique solo maxRequests. Si e protocolo del oyente es http, puede especificar maxConnections y maxPendingRequests.

      • En Número máximo de conexiones, especifique el número máximo de conexiones salientes.

      • (Opcional) En Número máximo de solicitudes pendientes, especifique el número de solicitudes de desbordamiento después del Número máximo de conexiones que un Envoy pondrá en espera. El valor predeterminado es 2147483647.

    3. (Opcional) Habilitar la detección de valores atípicos

      La detección de valores atípicos aplicada al cliente de Envoy permite a los clientes tomar medidas casi inmediatas en las conexiones en las que se hayan observado errores graves conocidos. Es una forma de implementación de un interruptor que rastrea el estado de los hosts individuales del servicio inicial.

      La detección de valores atípicos determina de forma dinámica si los puntos de conexión de un clúster ascendente funcionan de forma diferente a los demás y los elimina del conjunto de equilibrio de carga en buen estado.

      nota

      Para configurar de forma eficaz la detección de valores atípicos en un nodo virtual de servidor, el método de detección de servicios de dicho nodo virtual puede ser AWS Cloud Map o DNS con el campo de tipo de respuesta establecido en ENDPOINTS. Si utiliza el método de detección de servicios DNS con el tipo de respuesta LOADBALANCER, el proxy de Envoy solo elegirá una dirección IP única para el enrutamiento al servicio ascendente. Esto anula el comportamiento de detección de valores atípicos de expulsar un host en mal estado de un conjunto de hosts. Consulte la sección sobre el método de detección de servicios para obtener más información sobre el comportamiento del proxy de Envoy en relación con el tipo de detección de servicios.

      • En Errores del servidor, especifique el número de 5xx errores consecutivos necesarios para la expulsión.

      • En Intervalo de detección de valores atípicos, especifique la unidad y el intervalo de tiempo entre el análisis de barrido de expulsión.

      • En Duración base de la expulsión, especifique la unidad y el periodo de tiempo base durante los que se expulsa un host.

      • En Porcentaje de expulsión, especifique el porcentaje máximo de hosts del grupo de equilibrio de carga que se puede expulsar.

    4. (Opcional) Habilitar la comprobación de estado: configure los ajustes de una política de comprobación de estado.

      Una política de comprobación de estado es opcional, pero si especifica algún valor para una política de comprobación de estado, debe especificar valores para el Umbral de buen estado, Intervalo de comprobación de estado, Protocolo de comprobación de estado, Tiempo de espera de comprobación de estado y Umbral de mal estado.

      • En Protocolo de comprobación de estado, elija un protocolo. Si especifica grpc, el servicio debe cumplir el Protocolo de comprobación de estado GRPC.

      • En Puerto de comprobación de estado, especifique el puerto en el que se debe ejecutar la comprobación de estado.

      • En Umbral de buen estado, especifique el número de comprobaciones de estado correctas consecutivas que deben producirse antes de declarar que el oyente está en buen estado.

      • En Intervalo de comprobación de estado, especifique el período de tiempo en milisegundos entre cada ejecución de comprobación de estado.

      • En Ruta, especifique la ruta de destino de cada solicitud de comprobación de estado. Este valor solo se usa si el Protocolo de comprobación de estado es http o http2. El valor se ignora para los demás protocolos.

      • En Período de tiempo, especifique, en milisegundos, el plazo de tiempo que se va a esperar cuando se recibe una respuesta de comprobación de estado.

      • En Umbral de estado incorrecto, especifique el número de comprobaciones de estado incorrectas consecutivas que deben producirse antes de declarar que el oyente está en mal estado.

    5. (Opcional) Habilitar la terminación de TLS: configure la forma en que otros nodos virtuales se comunican con este nodo virtual mediante TLS.
      • En Modo, seleccione el modo para el que desea que se configure TLS en el oyente.

      • En Método del certificado, seleccione una de las siguientes opciones: El certificado debe cumplir unos requisitos específicos. Para obtener más información, consulte Requisitos del certificado.

        • Alojamiento de AWS Certificate Manager: seleccione un certificado existente.

        • Alojamiento de Envoy Secret Discovery Service (SDS): escriba el nombre del secreto que Envoy obtendrá mediante Secret Discovery Service.

        • Alojamiento de archivos local: especifique la ruta al archivo de la cadena de certificados, así como la clave privada, en el sistema de archivos en el que está implementado el proxy de Envoy.

      • (Opcional) Seleccione Exigir certificado de cliente y una de las siguientes opciones para habilitar la autenticación TLS mutua cuando un cliente proporcione un certificado. Para obtener más información sobre la TLS mutua, consulte los documentos de Autenticación TLS mutua de App Mesh.

        • Alojamiento de Envoy Secret Discovery Service (SDS): escriba el nombre del secreto que Envoy obtendrá mediante Secret Discovery Service.

        • Alojamiento de archivos local: especifique la ruta al archivo de la cadena de certificados en el sistema de archivos en el que está implementado Envoy.

      • (Opcional) Escriba un Nombre alternativo del asunto. Para añadir SAN adicionales, seleccione Agregar SAN. Los SAN deben tener el formato FQDN o URI.

    6. (Opcional) Tiempos de espera
      nota

      Si especifica un tiempo de espera superior al predeterminado, asegúrese de configurar un enrutador virtual y una ruta con un tiempo de espera superior al predeterminado. Sin embargo, si reduce el tiempo de espera a un valor inferior al predeterminado; opcionalmente, puede actualizar los tiempos de espera en la ruta. Para obtener más información, consulte Rutas.

      • Tiempo de espera de la solicitud: puede especificar un tiempo de espera de solicitud si ha seleccionado grpc, http o http2 para el protocolo del oyente. El valor predeterminado es de 15 segundos. Un valor de 0 deshabilita el tiempo de espera.

      • Duración de inactividad: puede especificar una duración de inactividad para cualquier protocolo del oyente. El valor predeterminado es de 300 segundos.

  12. Elija Crear nodo virtual para finalizar.

AWS CLI

Para crear un nodo virtual mediante la AWS CLI.

Cree un nodo virtual que utilice DNS para la detección de servicios mediante el siguiente comando y un archivo JSON de entrada (sustituya los valores rojos por los suyos):

  1. aws appmesh create-virtual-node \ --cli-input-json file://create-virtual-node-dns.json
  2. Contenido del ejemplo create-virtual-node-dns.json:

    { "meshName": "meshName", "spec": { "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ], "serviceDiscovery": { "dns": { "hostname": "serviceBv1.svc.cluster.local" } } }, "virtualNodeName": "nodeName" }
  3. Ejemplo de resultados:

    { "virtualNode": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualNode/nodeName", "createdAt": "2022-04-06T09:12:24.348000-05:00", "lastUpdatedAt": "2022-04-06T09:12:24.348000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 1 }, "spec": { "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ], "serviceDiscovery": { "dns": { "hostname": "serviceBv1.svc.cluster.local" } } }, "status": { "status": "ACTIVE" }, "virtualNodeName": "nodeName" } }

Para obtener más información sobre cómo crear un nodo virtual con la AWS CLI para App Mesh, consulte el comando create-virtual-node en la referencia de AWS CLI.

Eliminación de un nodo virtual

nota

No puede eliminar un nodo virtual si está especificado como destino en cualquier ruta o como proveedor en cualquier servicio virtual.

AWS Management Console
Para eliminar un nodo virtual mediante la AWS Management Console
  1. Abra la consola de App Mesh en https://console.aws.amazon.com/appmesh/.

  2. Elija la malla en la que desee eliminar un nodo virtual. Se muestran todas las mallas que son de su propiedad y que se han compartido con usted.

  3. Elija Nodos virtuales en el panel de navegación izquierdo.

  4. En la tabla Nodos virtuales, elija el nodo virtual que desee eliminar y seleccione Eliminar. Para eliminar un nodo virtual, el ID de su cuenta debe figurar en las columnas Propietario de la malla o Propietario del recurso del nodo virtual.

  5. En el cuadro de confirmación, escriba delete y elija Eliminar.

AWS CLI
Para eliminar un nodo virtual mediante la AWS CLI
  1. Utilice el siguiente comando para eliminar el nodo virtual (sustituya los valores rojos por los suyos propios):

    aws appmesh delete-virtual-node \ --mesh-name meshName \ --virtual-node-name nodeName
  2. Ejemplo de resultados:

    { "virtualNode": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualNode/nodeName", "createdAt": "2022-04-06T09:12:24.348000-05:00", "lastUpdatedAt": "2022-04-07T11:03:48.120000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 2 }, "spec": { "backends": [], "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ], "serviceDiscovery": { "dns": { "hostname": "serviceBv1.svc.cluster.local" } } }, "status": { "status": "DELETED" }, "virtualNodeName": "nodeName" } }

Para obtener más información sobre cómo eliminar un nodo virtual con la AWS CLI de App Mesh, consulte el comando delete-virtual-node en la referencia de AWS CLI.