Registro de varios grupos de destino en un servicio de Amazon ECS
El servicio de Amazon ECS puede atender el tráfico procedente de varios balanceadores de carga y exponer varios puertos con de carga balanceada cuando se especifican varios grupos de destino en una definición de servicio.
Actualmente, si desea crear un servicio que especifique varios grupos de destino, debe crear el servicio mediante la API de Amazon ECS, el SDK, la AWS CLI o una plantilla de AWS CloudFormation. Una vez creado el servicio, puede ver el servicio y los grupos de destino registrados con él con la AWS Management Console. Se debe utilizar UpdateService
para modificar la configuración del balanceador de carga de un servicio existente.
Se puede especificar en una definición de servicio varios grupos de destino utilizando el siguiente formato. Para obtener la sintaxis completa de una definición de servicio, consulte Plantilla de definición de servicio.
"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:
region
:123456789012
:targetgroup/target_group_name_1/1234567890123456
", "containerName":"container_name
", "containerPort":container_port
}, { "targetGroupArn":"arn:aws:elasticloadbalancing:region
:123456789012
:targetgroup/target_group_name_2/6543210987654321
", "containerName":"container_name
", "containerPort":container_port
} ]
Consideraciones
Cuando se especifiquen varios grupos de destino en una definición de servicio, debe tenerse en cuenta lo siguiente.
-
En el caso de los servicios que utilizan un Application Load Balancer o un Network Load Balancer, no se pueden asociar más de cinco grupos de destino a un servicio.
-
La especificación de varios grupos de destino en una definición de servicio solo se admite en las siguientes condiciones:
-
El servicio debe utilizar un Application Load Balancer o un Network Load Balancer.
-
El servicio debe utilizar el tipo de controlador de implementación de actualización continua (
ECS
).
-
-
Se admite la especificación de varios grupos de destino para servicios que contengan tareas que utilicen los tipos de lanzamiento de Fargate y EC2.
-
Al crear un servicio que especifica varios grupos de destino, se debe crear el rol vinculado al servicio de Amazon ECS. Para crear el rol, omita el parámetro
role
en las solicitudes de API o la propiedadRole
en AWS CloudFormation. Para obtener más información, consulte Uso de roles vinculados al servicio para Amazon ECS.
Ejemplos de definiciones de servicio
A continuación se muestran unos ejemplos de casos de uso para especificar varios grupos de destino en una definición de servicio. Para obtener la sintaxis completa de una definición de servicio, consulte Plantilla de definición de servicio.
Configuración de equilibradores de carga independientes para el tráfico interno y externo
En el siguiente caso de uso, un servicio utiliza dos balanceadores de carga independientes, uno para el tráfico interno y otro para el tráfico de Internet, para el mismo contenedor y puerto.
"loadBalancers":[ //Internal ELB { "targetGroupArn":"arn:aws:elasticloadbalancing:
region
:123456789012
:targetgroup/target_group_name_1/1234567890123456
", "containerName":"nginx", "containerPort":8080 }, //Internet-facing ELB { "targetGroupArn":"arn:aws:elasticloadbalancing:region
:123456789012
:targetgroup/target_group_name_2/6543210987654321
", "containerName":"nginx", "containerPort":8080 } ]
Exposición de varios puertos desde el mismo contenedor
En el siguiente caso de uso, un servicio utiliza un balanceador de carga pero expone varios puertos desde el mismo contenedor. Por ejemplo, un contenedor Jenkins podría exponer el puerto 8080 para la interfaz web de Jenkins y el puerto 50000 para la API.
"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:
region
:123456789012
:targetgroup/target_group_name_1/1234567890123456
", "containerName":"jenkins", "containerPort":8080 }, { "targetGroupArn":"arn:aws:elasticloadbalancing:region
:123456789012
:targetgroup/target_group_name_2/6543210987654321
", "containerName":"jenkins", "containerPort":50000 } ]
Exposición de puertos desde varios contenedores
En el siguiente caso de uso, un servicio utiliza un balanceador de carga y dos grupos de destino para exponer puertos desde contenedores independientes.
"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:
region
:123456789012
:targetgroup/target_group_name_1/1234567890123456
", "containerName":"webserver", "containerPort":80 }, { "targetGroupArn":"arn:aws:elasticloadbalancing:region
:123456789012
:targetgroup/target_group_name_2/6543210987654321
", "containerName":"database", "containerPort":3306 } ]