Componentes de Amazon ECS Service Connect - Amazon Elastic Container Service

Componentes de Amazon ECS Service Connect

Cuando utiliza Amazon ECS Service Connect, configura cada servicio de Amazon ECS para ejecutar una aplicación de servidor que recibe solicitudes de red (servicio cliente-servidor) o para ejecutar una aplicación cliente que hace las solicitudes (servicio de cliente).

Cuando se prepare para empezar a utilizar Service Connect, comience con un servicio cliente-servidor. Puede agregar una configuración de Service Connect a un servicio nuevo o existente. Amazon ECS crea un punto de conexión de Service Connect en el espacio de nombres. Además, Amazon ECS crea una nueva implementación en el servicio para reemplazar las tareas que se están ejecutando actualmente.

Las tareas y otras aplicaciones existentes pueden seguir conectándose a los puntos de conexión existentes y a las aplicaciones externas. Si un servicio cliente-servidor agrega tareas mediante el escalado horizontal, las nuevas conexiones de los clientes se equilibrarán entre todas las tareas. Si se actualiza un servicio cliente-servidor, las nuevas conexiones de los clientes se equilibrarán entre las tareas de la nueva versión.

Las tareas existentes no pueden resolverse ni conectarse al nuevo punto de conexión. Solo las tareas nuevas con una configuración de Service Connect en el mismo espacio de nombres y que comiencen a ejecutarse después de esta implementación pueden resolverse y conectarse a este punto de conexión.

Esto significa que el operador de la aplicación cliente determina cuándo cambia la configuración de su aplicación, aunque el operador de la aplicación de servidor puede cambiar su configuración en cualquier momento. La lista de puntos de conexión del espacio de nombres puede cambiar cada vez que se implemente cualquier servicio del espacio de nombres. Las tareas existentes y las tareas de reemplazo siguen comportándose del mismo modo que después de la implementación más reciente.

Considere los siguientes ejemplos:

En primer lugar, suponga que está creando una aplicación que está disponible para el Internet público en una sola plantilla de AWS CloudFormation y una sola pila de AWS CloudFormation. AWS CloudFormation debe crear la detección pública y la accesibilidad en último lugar, incluido el servicio de cliente frontend. El servicio debe crearse en este orden para evitar un período en el que el servicio de cliente frontend se esté ejecutando y esté disponible para el público, pero el backend no lo esté. Esto evita que los mensajes de error se envíen al público durante ese periodo. En AWS CloudFormation, debe utilizar dependsOn para indicar a AWS CloudFormation que no se pueden crear varios servicios de Amazon ECS en paralelo o simultáneamente. Debe agregar dependsOn al servicio de cliente frontend para cada servicio cliente-servidor backend al que se conecten las tareas del cliente.

En segundo lugar, suponga que existe un servicio frontend sin la configuración de Service Connect. Las tareas se conectan a un servicio de backend existente. Agregue primero una configuración de Service Connect de cliente-servidor al servicio backend, con el mismo nombre en el DNS o el clientAlias que usa el frontend. Esto crea una nueva implementación, es decir, toda la detección de restauración de la implementación o la AWS Management Console, la AWS CLI, los SDK de AWS y otros métodos para revertir y restaurar el servicio de backend a la implementación y la configuración anteriores. Si está satisfecho con el rendimiento y el comportamiento del servicio de backend, agregue una configuración de Service Connect de cliente o cliente-servidor al servicio frontend. Solo las tareas de la nueva implementación utilizan el proxy de Service Connect que se agrega a esas tareas nuevas. Si tiene problemas con esta configuración, puede revertir y volver a su configuración anterior mediante la detección de restauración de la implementación o la AWS Management Console, la AWS CLI, los SDK de AWS y otros métodos para revertir y restaurar el servicio de backend a la implementación y la configuración anteriores. Si utiliza otro sistema de detección de servicios basado en DNS en lugar de Service Connect, cualquier aplicación frontend o de cliente empezará a utilizar nuevos puntos de conexión y una configuración de punto de conexión modificada una vez que caduque la caché de DNS local, lo que suele tardar varias horas.

Red

De manera predeterminada, el proxy de Service Connect escucha en containerPort desde la asignación de puertos de la definición de la tarea. Las reglas del grupo de seguridad deben permitir el tráfico entrante a este puerto desde las subredes en las que se ejecutarán los clientes.

Incluso si establece un número de puerto en la configuración del servicio de Service Connect, esto no cambia el puerto del servicio cliente-servidor que escucha el proxy de Service Connect. Al configurar este número de puerto, Amazon ECS cambia el puerto del punto de conexión al que se conectan los servicios del cliente, en el proxy de Service Connect dentro de esas tareas. El proxy del servicio de cliente se conecta al proxy del servicio cliente-servidor mediante el containerPort.

Si desea cambiar el puerto que escucha el proxy de Service Connect, cambie ingressPortOverride en la configuración de Service Connect del servicio cliente-servidor. Si cambia este número de puerto, debe permitir el tráfico entrante en este puerto que utiliza el tráfico hacia este servicio.

El tráfico que sus aplicaciones envían a los servicios de Amazon ECS configurados para Service Connect requiere que Amazon VPC y las subredes cuenten con reglas de tabla de enrutamiento y reglas de ACL de red que permitan los números de puerto containerPort y ingressPortOverride que está utilizando.

Puede utilizar Service Connect para enviar tráfico entre las VPC. Los mismos requisitos para las reglas de la tabla de enrutamiento, las ACL de red y los grupos de seguridad se aplican a ambas VPC.

Por ejemplo, dos clústeres crean tareas en diferentes VPC. Un servicio de cada clúster está configurado para usar el mismo espacio de nombres. Las aplicaciones de estos dos servicios pueden resolver todos los puntos de conexión del espacio de nombres sin ninguna configuración de DNS de VPC. Sin embargo, los proxies no se pueden conectar a menos que el emparejamiento de VPC, las tablas de enrutamiento de subredes o VPC, y las ACL de red de VPC permitan el tráfico en los números de puerto containerPort y ingressPortOverride.

Para las tareas que utilizan el modo de red bridge, debe crear un grupo de seguridad con una regla de entrada que permita el tráfico en el rango superior de puertos dinámicos. A continuación, asigne el grupo de seguridad a todas las instancias EC2 del clúster de Service Connect.

Proxy de Service Connect

Si crea o actualiza un servicio con la configuración de Service Connect, Amazon ECS agrega un contenedor nuevo a cada tarea nueva a medida que se inicia. Este patrón de uso de un contenedor independiente se denomina sidecar. Este contenedor no está presente en la definición de la tarea y no puede configurarlo. Amazon ECS administra la configuración de este contenedor en el servicio. Esto le permite reutilizar las mismas definiciones de tareas entre varios servicios, espacios de nombres y tareas sin Service Connect.

Recursos de proxy
  • Para las definiciones de tareas, debe establecer los parámetros de la CPU y la memoria.

    Recomendamos agregar 256 unidades de CPU adicionales y al menos 64 MiB de memoria a la memoria y la CPU de la tarea del contenedor del proxy de Service Connect. En AWS Fargate, la cantidad mínima de memoria que puede configurar es de 512 MiB. En Amazon EC2, es necesaria la memoria de definición de tareas.

  • Para el servicio, se establece la configuración del registro en la configuración de Service Connect.

  • Si espera que las tareas de este servicio reciban más de 500 solicitudes por segundo en su carga máxima, le recomendamos agregar 512 unidades de CPU a la CPU de tareas en esta definición de tareas para el contenedor del proxy de Service Connect.

  • Si espera crear más de 100 servicios de Service Connect en el espacio de nombres o 2000 tareas en total en todos los servicios de Amazon ECS dentro del espacio de nombres, le recomendamos agregar 128 MiB de memoria a la memoria de tareas para el contenedor del proxy de Service Connect. Debe hacerlo en todas las definiciones de tareas que utilicen todos los servicios de Amazon ECS del espacio de nombres.

Configuración del proxy

Sus aplicaciones se conectan al proxy del contenedor sidecar en la misma tarea en la que se encuentra la aplicación. Amazon ECS configura la tarea y los contenedores para que las aplicaciones solo se conecten al proxy cuando la aplicación se conecta a los nombres de los puntos de conexión en el mismo espacio de nombres. El resto del tráfico no utiliza el proxy. El resto del tráfico incluye direcciones IP en la misma VPC, puntos de conexión de servicios de AWS y tráfico externo.

Equilibrio de carga

Service Connect configura el proxy para que utilice la estrategia de distribución equilibrada para equilibrar la carga entre las tareas en un punto de conexión de Service Connect. El proxy local que se encuentra en la tarea desde la que proviene la conexión selecciona una de las tareas del servicio cliente-servidor que proporciona el punto de conexión.

Por ejemplo, consideremos una tarea que ejecuta WordPress en un servicio configurado como servicio de cliente en un espacio de nombres llamado local. Hay otro servicio con 2 tareas que ejecuta la base de datos MySQL. Este servicio está configurado para proporcionar un punto de conexión llamado mysql a través de Service Connect en el mismo espacio de nombres. En la tarea de WordPress, la aplicación de WordPress se conecta a la base de datos mediante el nombre del punto de conexión. Las conexiones con este nombre van al proxy que se ejecuta en un contenedor asociado en la misma tarea. A continuación, el proxy puede conectarse a cualquiera de las tareas de MySQL mediante la estrategia de distribución equilibrada.

Estrategias de equilibrio de carga: distribución equilibrada

Detección de valores atípicos

Esta característica utiliza los datos que el proxy tiene sobre conexiones con errores anteriores para evitar enviar nuevas conexiones a los hosts que tenían las conexiones con errores. Service Connect configura la característica de detección de valores atípicos del proxy para proporcionar comprobaciones de estado pasivas.

Con el ejemplo anterior, el proxy puede conectarse a cualquiera de las tareas de MySQL. Si el proxy realizó varias conexiones a una tarea de MySQL específica y 5 o más de las conexiones fallaron en los últimos 30 segundos, el proxy evita esa tarea de MySQL durante 30 a 300 segundos.

Reintentos

Service Connect configura el proxy para volver a intentar la conexión que pasa por el proxy y falla, y el segundo intento evita usar el host de la conexión anterior. Esto garantiza que cada conexión a través de Service Connect no tenga errores por motivos puntuales.

Número de reintentos: 2

Tiempo de espera

Service Connect configura el proxy para que espere un tiempo máximo a que respondan las aplicaciones cliente-servidor. El valor de tiempo de espera predeterminado es de 15 segundos, pero se puede actualizar.

Parámetros opcionales:

idleTimeout: el tiempo en segundos que una conexión permanece activa mientras está inactiva. Un valor de 0 deshabilita idleTimeout.

El idleTimeout predeterminado de HTTP/HTTP2/GRPC es 5 minutos.

El idleTimeout predeterminado de TCP es una hora.

perRequestTimeout: el tiempo que se tarda en esperar a que el remitente responda con una respuesta completa por solicitud. El valor 0 desactiva perRequestTimeout. Esto solo se puede configurar cuando appProtocol del contenedor de la aplicación es HTTP, HTTP2 o GRPC. El valor predeterminado es de 15 segundos.

nota

Si idleTimeout se establece en un tiempo inferior a perRequestTimeout, la conexión se cerrará cuando idleTimeout se alcance y no el perRequestTimeout.

Consideraciones

Cuando utilice Service Connect, tenga en cuenta lo siguiente:

  • Las tareas que se ejecutan en Fargate deben utilizar la versión 1.4.0 o superior de la plataforma de Fargate Linux para utilizar Service Connect.

  • La versión del agente de Amazon ECS en la instancia de contenedor debe ser 1.67.2 o una superior.

  • Las instancias de contenedor deben ejecutar la versión AMI de Amazon Linux 2023 optimizada para Amazon ECS 20230428 o una posterior o la versión AMI de Amazon Linux optimizada para Amazon ECS 2.0.20221115 para utilizar Service Connect. Estas versiones tienen el agente de Service Connect además del agente de contenedor de Amazon ECS. Para obtener más información sobre el agente de ECS, consulte Agente de Service Connect de Amazon ECS en GitHub.

  • Las instancias de contenedor deben tener el permiso ecs:Poll para el recurso arn:aws:ecs:region:0123456789012:task-set/cluster/*. Si utiliza ecsInstanceRole, no es necesario que agregue permisos adicionales. La política administrada AmazonEC2ContainerServiceforEC2Role tiene los permisos necesarios. Para obtener más información, consulte Rol de IAM de instancia de contenedor de Amazon ECS.

  • Service Connect solo admite los servicios que utilizan implementaciones continuas.

  • Las tareas que usan el modo de red bridge y utilizan Service Connect no admiten el parámetro de definición de contenedor hostname.

  • Las definiciones de tareas deben establecer el límite de memoria de tareas para usar Service Connect. Para obtener más información, consulte Proxy de Service Connect.

  • No se admiten las definiciones de tareas que establezcan límites de memoria de contenedores.

    Puede establecer límites de memoria de contenedores en sus contenedores, pero debe establecer el límite de memoria de tareas en un número mayor que la suma de los límites de memoria del contenedor. El contenedor del proxy de Service Connect y otros contenedores que no establecen límites de contenedores utilizan la CPU y la memoria adicionales de los límites de tareas que no están asignadas en los límites de contenedores. Para obtener más información, consulte Proxy de Service Connect.

  • Puede configurar Service Connect para utilizar cualquier espacio de nombres de AWS Cloud Map de la misma región en la misma Cuenta de AWS.

  • Cada servicio puede pertenecer a un solo espacio de nombres.

  • Solo se admiten las tareas que crean los servicios.

  • Todos los puntos de conexión deben ser únicos dentro de un espacio de nombres.

  • Todos los nombres de detección deben ser únicos dentro de un espacio de nombres.

  • Debe volver a implementar los servicios existentes para que las aplicaciones puedan resolver nuevos puntos de conexión. Los puntos de conexión nuevos que se agreguen al espacio de nombres después de la implementación más reciente no se agregarán a la configuración de la tarea. Para obtener más información, consulte Componentes de Amazon ECS Service Connect.

  • Service Connect no elimina los espacios de nombres cuando se eliminan los clústeres. Debe eliminar los espacios de nombres en AWS Cloud Map.

  • El tráfico del Equilibrador de carga de aplicación se dirige de forma predeterminada a través del agente Service Connect en el modo de red awsvpc. Si desea que el tráfico no relacionado con el servicio omita el agente de Service Connect, utilice el parámetro ingressPortOverride en la configuración del servicio de Service Connect.

Service Connect no admite lo siguiente:
  • Contenedores de Windows

  • HTTP 1.0

  • Tareas independientes

  • Servicios que utilizan los tipos de implementación azul/verde y externa

  • Service Connect no admite la instancia de contenedor External para Amazon ECS Anywhere.

  • PPv2

Regiones con Service Connect

Amazon ECS Service Connect se encuentra disponible en las siguientes regiones de AWS:

Nombre de la región Región

Este de EE. UU. (Ohio)

us-east-2

Este de EE. UU. (Norte de Virginia)

us-east-1

Oeste de EE. UU. (Norte de California)

us-west-1

Oeste de EE. UU. (Oregón)

us-west-2

África (Ciudad del Cabo)

af-south-1

Asia-Pacífico (Hong Kong)

ap-east-1

Asia-Pacífico (Yakarta)

ap-southeast-3

Asia Pacífico (Bombay)

ap-south-1

Asia-Pacífico (Hyderabad)

ap-south-2

Asia Pacífico (Osaka)

ap-northeast-3

Asia-Pacífico (Seúl)

ap-northeast-2

Asia-Pacífico (Singapur)

ap-southeast-1

Asia-Pacífico (Sídney)

ap-southeast-2

Asia-Pacífico (Melbourne)

ap-southeast-4

Asia-Pacífico (Malasia)

ap-southeast-5

Asia-Pacífico (Tokio)

ap-northeast-1

Canadá (centro)

ca-central-1

Oeste de Canadá (Calgary)

ca-west-1

China (Pekín)

cn-north-1 (Nota: TLS para Service Connect no está disponible en esta región).

China (Ningxia)

cn-northwest-1 (Nota: TLS para Service Connect no está disponible en esta región).

Europa (Fráncfort)

eu-central-1

Europa (Irlanda)

eu-west-1

Europa (Londres)

eu-west-2

Europa (París)

eu-west-3

Europa (Milán)

eu-south-1

Europa (España)

eu-south-2

Europa (Estocolmo)

eu-north-1

Europa (Zúrich)

eu-central-2

Israel (Tel Aviv)

il-central-1

Medio Oriente (Baréin)

me-south-1

Medio Oriente (EAU)

me-central-1

América del Sur (São Paulo)

sa-east-1