Interconexão de serviços do Amazon ECS - Amazon Elastic Container Service

Interconexão de serviços do Amazon ECS

As aplicações executadas em tarefas do Amazon ECS muitas vezes precisam receber conexões da Internet ou se conectar a outras aplicações executadas nos serviços do Amazon ECS. Se você precisar de conexões externas da Internet, recomendamos usar o Elastic Load Balancing. Para obter mais informações sobre balanceamento de carga integrado, consulte Uso do balanceamento de carga para distribuir o tráfego de serviço do Amazon ECS.

Se você precisar de uma aplicação para se conectar a outras aplicações executadas nos serviços do Amazon ECS, o Amazon ECS oferecerá as maneiras a seguir de fazer isso sem um balanceador de carga:

  • Amazon ECS Service Connect

    Recomendamos o Service Connect, que fornece a configuração do Amazon ECS para descoberta de serviços, conectividade e monitoramento de tráfego. Com o Service Connect, as aplicações podem usar nomes curtos e portas padrão para se conectar aos serviços do Amazon ECS no mesmo cluster e em outros clusters, inclusive entre VPCs na mesma Região da AWS.

    Ao usar o Service Connect, o Amazon ECS gerencia todas as partes da descoberta de serviços: criar os nomes que podem ser descobertos, gerenciar dinamicamente as entradas de cada tarefa à medida que as tarefas começam e são interrompidas, executar um agente em cada tarefa configurada para descobrir os nomes. Sua aplicação pode pesquisar os nomes usando a funcionalidade padrão para nomes do DNS e fazendo conexões. Caso a aplicação já faça isso, não será necessário modificá-la para usar o Service Connect.

    Você fornece a configuração completa dentro de cada serviço e definição de tarefa. O Amazon ECS gerencia as alterações nessa configuração em cada implantação de serviço, para garantir que todas as tarefas em uma implantação se comportem da mesma maneira. Por exemplo, um problema comum do DNS como descoberta de serviços é controlar uma migração. Se você alterar um nome do DNS de modo a direcionar para os novos endereços IP substitutos, poderá levar o tempo máximo de TTL antes que todos os clientes comecem a usar o novo serviço. Com o Service Connect, a implantação do cliente atualiza a configuração substituindo as tarefas do cliente. Você pode configurar o disjuntor de implantação e outras configurações de implantação para afetar as alterações do Service Connect da mesma forma que qualquer outra implantação.

    Para ter mais informações, consulte Uso do Service Connect para conectar serviços do Amazon ECS com nomes abreviados.

  • Descoberta de serviço do Amazon ECS

    Outra abordagem para a comunicação entre serviços é a comunicação direta por meio da descoberta de serviços. Nessa abordagem, você pode usar a integração da descoberta de serviços do AWS Cloud Map com o Amazon ECS. Usando a descoberta de serviços, o Amazon ECS sincroniza a lista de tarefas executadas com o AWS Cloud Map, que mantém um nome de host do DNS que resolve os endereços IP internos de uma ou mais tarefas desse serviço específico. Outros serviços na Amazon VPC podem usar esse nome de host do DNS para enviar tráfego diretamente a outro contêiner usando o endereço IP interno.

    Essa abordagem de comunicação entre serviços fornece baixa latência. Não há componentes extras entre os contêineres. O tráfego viaja diretamente de um contêiner para o outro.

    Essa abordagem é adequada ao usar o modo de rede awsvpc, em que cada tarefa tem seu próprio endereço IP exclusivo. A maioria dos softwares é compatível apenas com o uso de registros A do DNS, que resolvem diretamente os endereços IP. Ao usar o modo de rede awsvpc, o endereço IP de cada tarefa é um registro A. No entanto, se você estiver usando o modo de rede bridge, vários contêineres podem estar compartilhando o mesmo endereço IP. Além disso, os mapeamentos dinâmicos de portas fazem com que os contêineres recebam números de porta aleatoriamente nesse único endereço IP. A essa altura, um registro A não é mais suficiente para a descoberta de serviços. Você também deve usar um registro SRV. Esse tipo de registro pode rastrear endereços IP e números de porta, mas exige que você configure as aplicações adequadamente. Algumas aplicações pré-criadas que você usa podem não oferecer suporte a registros SRV.

    Outra vantagem do modo de rede awsvpc é ter um grupo de segurança exclusivo para cada serviço. Você pode configurar esse grupo de segurança para permitir conexões de entrada somente dos serviços upstream específicos que precisam se comunicar com esse serviço.

    A principal desvantagem da comunicação direta entre serviços usando a descoberta de serviços é que você deve implementar uma lógica extra para ter repetições e lidar com falhas de conexão. Os registros DNS têm um período de vida útil (TTL) que controla por quanto tempo são armazenados em cache. Leva algum tempo para que o registro DNS seja atualizado e o cache expire para que as aplicações possam obter a versão mais recente do registro DNS. Portanto, sua aplicação pode acabar resolvendo o registro DNS de modo a direcionar para outro contêiner que não está mais lá. A aplicação precisa processar repetições e ter uma lógica para ignorar back-ends defeituosos.

    Para ter mais informações, consulte Uso da descoberta de serviços para conectar serviços do Amazon ECS com nomes DNS.

Tabela de compatibilidade de modo de rede

A tabela a seguir inclui a compatibilidade entre essas opções e os modos de rede de tarefas. Na tabela, “client” (cliente) refere-se à aplicação que está fazendo as conexões de dentro de uma tarefa do Amazon ECS.

Opções de interconexão Conectado awsvpc Host
Descoberta de serviço sim, mas exige que os clientes conheçam os registros SRV no DNS sem hostPort. sim sim, mas exige que os clientes conheçam os registros SRV no DNS sem hostPort.
Service Connect sim sim não