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 (N. 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 |
Ásia-Pacífico (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 (Bahrein) |
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 comandoaws servicediscovery create-private-dns-namespace
ou no console do Amazon ECS. É possível usar o comandoaws 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, consultecreate-private-dns-namespace
elist-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 registroA
, 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 atributoECS_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 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
ouhost
(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 registrosA
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
ouhost
, 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 paraHEALTHY
. 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.