Registrar vários grupos de destino em um serviço Amazon ECS
O serviço do Amazon ECS pode atender ao tráfego de vários balanceadores de carga e expor várias portas com balanceamento de carga quando você especificar vários grupos de destino em uma definição de serviço.
Para criar um serviço que especifique vários grupos de destino, é necessário criar o serviço usando a API do Amazon ECS, o SDK, a AWS CLI ou um modelo do AWS CloudFormation. Depois que o serviço é criado, você pode visualizar o serviço e os grupos de destino registrados nele com o AWS Management Console. Você deve usar UpdateService
para modificar a configuração do balanceador de carga de um serviço existente.
Vários grupos de destino podem ser especificados em uma definição de serviço usando o seguinte formato. Para obter a sintaxe completa de uma definição de serviço, consulte Modelo de definição de serviço.
"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
} ]
Considerações
Quando você especificar vários grupos de destino em uma definição de serviço, considere o seguinte.
-
Para serviços que usam um Application Load Balancer ou um Network Load Balancer, não é possível anexar mais de cinco grupos de destino a um serviço.
-
Especificar vários grupos de destino em uma definição de serviço só é compatível com as seguintes condições:
-
O serviço deve usar um Application Load Balancer ou um Network Load Balancer.
-
O serviço deve usar o tipo de controlador de implantação de atualização contínua (
ECS
).
-
-
Especificar vários grupos de destino é compatível com serviços que contêm tarefas que usam os tipos de inicialização do Fargate e do EC2.
-
Quando você criar um serviço que especifica vários grupos de destino, deverá ser criada a função vinculada ao serviço do Amazon ECS. A função é criada omitindo o parâmetro
role
nas solicitações de API ou a propriedadeRole
no AWS CloudFormation. Para ter mais informações, consulte Uso de perfis vinculados ao serviço para o Amazon ECS.
Exemplos de definições de serviço
Veja a seguir alguns exemplos de casos de uso para especificar vários grupos de destino em uma definição de serviço. Para obter a sintaxe completa de uma definição de serviço, consulte Modelo de definição de serviço.
Ter balanceadores de carga separados para tráfego interno e externo
No seguinte caso de uso, um serviço usa dois load balancers, um para tráfego interno e um segundo para tráfego voltado para a Internet, para o mesmo contêiner e porta.
"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 } ]
Expor várias portas do mesmo contêiner
No seguinte caso de uso, um serviço usa um load balancer, mas expõe várias portas do mesmo contêiner. Por exemplo, um contêiner Jenkins pode expor a porta 8080 para a interface da Web do Jenkins e a porta 50000 para a 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 } ]
Expor portas de vários contêineres
No seguinte caso de uso, um serviço usa um load balancer e dois grupos de destino para expor portas de contêineres separados.
"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 } ]