Uso da descoberta de serviços para conectar serviços do Amazon ECS com nomes DNS - Amazon Elastic Container Service

Uso da descoberta de serviços para conectar serviços do Amazon ECS com nomes DNS

O serviço do Amazon ECS pode ser opcionalmente configurado para usar a descoberta de serviço do Amazon ECS. A descoberta de serviço usa ações de API do AWS Cloud Map para gerenciar namespaces HTTP e DNS para serviços do Amazon ECS. Para obter mais informações, consulte O que é o AWS Cloud Map? no Guia do desenvolvedor do AWS Cloud Map.

A descoberta de serviço está disponível nas seguintes regiões da AWS:

Nome da região Região

Leste dos EUA (Norte da Virgínia)

us-east-1

Leste dos EUA (Ohio)

us-east-2

Oeste dos EUA (Norte da Califórnia)

us-west-1

Oeste dos EUA (Oregon)

us-west-2

África (Cidade do Cabo)

af-south-1

Ásia-Pacífico (Hong Kong)

ap-east-1

Ásia-Pacífico (Mumbai)

ap-south-1

Ásia-Pacífico (Hyderabad)

ap-south-2

Ásia-Pacífico (Tóquio)

ap-northeast-1

Ásia-Pacífico (Seul)

ap-northeast-2

Asia Pacific (Osaka)

ap-northeast-3

Ásia-Pacífico (Singapura)

ap-southeast-1

Ásia-Pacífico (Sydney)

ap-southeast-2

Ásia-Pacífico (Jacarta)

ap-southeast-3

Ásia-Pacífico (Melbourne)

ap-southeast-4

Canadá (Central)

ca-central-1

Oeste do Canadá (Calgary)

ca-west-1

China (Pequim)

cn-north-1

China (Ningxia)

cn-northwest-1

Europa (Frankfurt)

eu-central-1

Europa (Zurique)

eu-central-2

Europa (Irlanda)

eu-west-1

Europa (Londres)

eu-west-2

Europa (Paris)

eu-west-3

Europa (Milão)

eu-south-1

Europa (Estocolmo)

eu-north-1

Israel (Tel Aviv)

il-central-1

Europa (Espanha)

eu-south-2

Oriente Médio (Emirados Árabes Unidos)

me-central-1

Oriente Médio (Barém)

me-south-1

América do Sul (São Paulo)

sa-east-1

AWS GovCloud (Leste dos EUA)

us-gov-east-1

AWS GovCloud (Oeste dos EUA)

us-gov-west-1

Conceitos de descoberta de serviço

A descoberta de serviço consiste nos seguintes componentes:

  • Namespace de descoberta de serviço: grupo lógico de serviços de descoberta de serviço que compartilham o mesmo nome de domínio, como example.com. Este é o nome de domínio para o qual você deseja encaminhar o tráfego. É possível criar um namespace com uma chamada para o comando aws servicediscovery create-private-dns-namespace ou no console do Amazon ECS. É possível usar o comando aws servicediscovery list-namespaces para exibir as informações resumidas sobre os namespaces criados pela conta atual. Para obter mais informações sobre os comandos de descoberta de serviço, consulte create-private-dns-namespace e list-namespaces no Guia de referência da AWS CLI do AWS Cloud Map (descoberta de serviço).

  • Serviço de descoberta de serviço: existe no namespace de descoberta de serviço e consiste no nome do serviço e na configuração do DNS para o namespace. Ele fornece os seguintes componentes principais:

    • Service registry (Registro do serviço): permite pesquisar um serviço por meio de DNS ou ações de API do AWS Cloud Map disponíveis que podem ser usados para se conectar ao serviço.

  • Instância de descoberta de serviço: existe no serviço de descoberta de serviço e consiste nos atributos associados a cada serviço do Amazon ECS no diretório de serviços.

    • Atributos de instância: os metadados a seguir são adicionados como atributos personalizados para cada serviço do Amazon ECS configurado para usar a descoberta de serviço:

      • AWS_INSTANCE_IPV4: para um registro A, o endereço IPv4 que o Route 53 retorna em resposta a consultas de DNS e que o AWS Cloud Map retorna ao descobrir detalhes da instância, por exemplo, 192.0.2.44.

      • AWS_INSTANCE_PORT: o valor da porta associado ao serviço de descoberta de serviço.

      • AVAILABILITY_ZONE: a zona de disponibilidade na qual a tarefa foi iniciada. Para tarefas que usam o tipo de inicialização do EC2, essa é a zona de disponibilidade na qual a instância de contêiner existe. Para tarefas que usam o tipo de inicialização do Fargate, essa é a zona de disponibilidade na qual a interface de rede elástica existe.

      • REGION: a região em que a tarefa existe.

      • ECS_SERVICE_NAME: o nome do serviço do Amazon ECS ao qual a tarefa pertence.

      • ECS_CLUSTER_NAME: o nome do cluster do Amazon ECS ao qual a tarefa pertence.

      • EC2_INSTANCE_ID: o ID da instância de contêiner na qual a tarefa foi posicionada. Esse atributo personalizado não é adicionado se a tarefa está usando o tipo de inicialização do Fargate.

      • ECS_TASK_DEFINITION_FAMILY: a família de definições de tarefa que a tarefa está usando.

      • ECS_TASK_SET_EXTERNAL_ID: se um conjunto de tarefas for criado para uma implantação externa e for associado a um registro de descoberta de serviço, o atributo ECS_TASK_SET_EXTERNAL_ID conterá o ID externo do conjunto de tarefas.

  • Verificações de integridade do Amazon ECS: o Amazon ECS executa verificações de integridade periódicas em nível de contêiner. Se não passar na verificação de integridade, o endpoint é removido do roteamento de DNS e marcado como não íntegro.

Considerações sobre descoberta de serviço

As seguintes informações devem ser considerada ao usar a descoberta de serviço:

  • A descoberta de serviços é compatível com as tarefas no Fargate se você está usando a versão 1.1.0 ou posterior da plataforma. Para ter mais informações, consulte Versões da plataforma Linux do Fargate para o Amazon ECS.

  • Os serviços configurados para usar a descoberta de serviços têm um limite de 1.000 tarefas por serviço. Isso se deve a uma cota de serviço do Route 53.

  • O fluxo de trabalho Create Service (Criar serviço) no console do Amazon ECS é compatível apenas com o registro de serviços em namespaces DNS privados. Quando um namespace DNS privado do AWS Cloud Map for criado, será criada automaticamente uma zona hospedada privada do Route 53.

  • Os atributos DNS da VPC devem ser configurados para resoluções DNS bem-sucedidas. Para obter informações sobre como configurar os atributos, consulte Suporte a DNS na sua VPC no Guia do usuário da Amazon VPC.

  • Os registros de DNS criados para um serviço de descobertra de serviço sempre são registrados com o endereço IP privado da tarefa, em vez do endereço IP público, mesmo quando são usados namespaces públicos.

  • A descoberta de serviço exige que as tarefas especifiquem o modo de rede awsvpc, bridge ou host (none não é compatível).

  • Se a definição de tarefa de serviço usa o modo de rede awsvpc, será possível criar qualquer combinação de registros A ou SRV para cada tarefa de serviço. Se você usar registros SRV, uma porta é necessária.

  • Se a definição de tarefa de serviço usa o modo de rede bridge ou host, o único tipo de registro DNS com suporte é o registro SRV. Crie um registro SRV para cada tarefa de serviço. O registro SRV deve especificar o nome do contêiner e a combinação de portas do contêiner da definição de tarefa.

  • Os registros de DNS de um serviço de descoberta de serviço podem ser consultados na VPC. Eles usam o seguinte formato: <service discovery service name>.<service discovery namespace>.

  • Ao fazer uma consulta de DNS no nome do serviço, os registros A retornam um conjunto de endereços IP correspondentes às suas tarefas. Os registros SRV retornam um conjunto de endereços IP e portas para cada tarefa.

  • Se você tiver oito ou menos registros íntegros, o Route 53 responderá a todas as consultas DNS com todos os registros íntegros.

  • Quando nenhum dos registros estiver íntegro, o Route 53 responderá às consultas DNS com até oito registros não íntegros.

  • É possível configurar a descoberta de serviço para um serviço que esteja atrás de um balanceador de carga, mas o tráfego da descoberta de serviço sempre será roteado para a tarefa, e não para o balanceador de carga.

  • A descoberta de serviço não oferece suporte ao uso de Classic Load Balancers.

  • Convém usar verificações de integridade em nível de contêiner gerenciadas pelo Amazon ECS para o serviço de descoberta de serviços.

    • HealthCheckCustomConfig: o Amazon ECS gerencia as verificações de integridade em seu nome. O Amazon ECS usa informações de contêiner e das verificações de integridade, além do estado da tarefa, para atualizar a integridade com o AWS Cloud Map. Isso é especificado pelo uso do parâmetro --health-check-custom-config ao ser criado o serviço de descoberta de serviço. Para obter mais informações, consulte HealthCheckCustomConfig na Referência da API do AWS Cloud Map.

  • Os recursos do AWS Cloud Map criados quando a descoberta de serviço é usada devem ser limpos manualmente.

  • As tarefas e instâncias são registradas como UNHEALTHY até que as verificações de integridade do contêiner retornem um valor. Se as verificações de integridade forem aprovadas, o status é atualizado para HEALTHY. Se as verificações de integridade do contêiner falharem, o registro da instância da descoberta de serviços é cancelado.

Preço da descoberta de serviço

Os clientes que usam a descoberta de serviço do Amazon ECS são cobrados pelos recursos do Route 53 e pelas operações da API de descoberta do AWS Cloud Map. Isso envolve os custos de criação de zonas hospedadas do Route 53 e de consultas ao registro do serviço. Para obter mais informações, consulte Preços do AWS Cloud Map no Guia do desenvolvedor do AWS Cloud Map.

O Amazon ECS executa verificações de integridade no nível do contêiner e as expõe às operações da API de verificação de integridade personalizada do AWS Cloud Map. Atualmente, isso é disponibilizado aos clientes sem nenhum custo extra. Se configurar verificações de integridade de rede adicionais para tarefas expostas publicamente, você será cobrado por essas verificações.