Visão geral da configuração do Amazon ECS Service Connect - Amazon Elastic Container Service

Visão geral da configuração do Amazon ECS Service Connect

Ao usar o Service Connect, existem parâmetros que você precisa configurar em seus recursos.

Recursos do Amazon ECS que precisam ser configurados para o Service Connect
Local dos parâmetros Tipo de aplicação Descrição Obrigatório
Definição de tarefa Cliente Não há alterações disponíveis para o Service Connect nas definições de tarefa do cliente. N/D
Definição de tarefa Cliente-servidor Os servidores devem adicionar campos name às portas nos portMappings de contêineres. Para ter mais informações, consulte portMappings. Sim
Definição de tarefa Cliente-servidor Opcionalmente, os servidores podem fornecer um protocolo de aplicação (por exemplo, HTTP) para receber métricas específicas do protocolo para suas aplicações de servidor (por exemplo, HTTP 5xx). Não
Definição de serviço Cliente Os serviços do cliente devem adicionar uma serviceConnectConfiguration para configurar o namespace a ser associado. Esse namespace deve conter todos os serviços de servidor que esse serviço precisa descobrir. Para ter mais informações, consulte serviceConnectConfiguration. Sim
Definição de serviço Cliente-servidor Os serviços do servidor devem adicionar uma serviceConnectConfiguration para configurar os nomes de DNS, números de portas e namespace nos quais o serviço está disponível. Para ter mais informações, consulte serviceConnectConfiguration. Sim
Cluster Cliente Os clusters podem adicionar um namespace padrão do Service Connect. Novos serviços no cluster herdam o namespace quando o Service Connect é configurado em um serviço. Não
Cluster Cliente-servidor Não há alterações disponíveis para o Service Connect em clusters que se aplicam aos serviços de servidor. As definições de tarefa e os serviços do servidor devem definir a respectiva configuração. N/D
Visão geral das etapas para configurar o Service Connect

As etapas apresentadas a seguir fornecem uma visão geral de como configurar o Service Connect.

Importante
  • O Service Connect cria serviços do AWS Cloud Map em sua conta. Modificar esses recursos AWS Cloud Map registrando/cancelando manualmente o registro de instâncias, alterando os atributos da instância ou excluindo um serviço pode causar um comportamento inesperado no tráfego da sua aplicação ou em implantações subsequentes.

  • O Service Connect não oferece suporte a links na definição de tarefa.

  1. Adicione os nomes das portas aos mapeamentos das portas nas definições das suas tarefas. Além disso, você pode identificar o protocolo de camada 7 da aplicação para obter métricas adicionais.

  2. Crie um cluster com um namespace do AWS Cloud Map ou crie o namespace separadamente. Para uma organização simples, crie um cluster com o nome desejado para o namespace e especifique o nome idêntico para o namespace. Nesse caso, o Amazon ECS cria um novo namespace HTTP com a configuração necessária. O Service Connect não usa nem cria zonas hospedadas por DNS no Amazon Route 53.

  3. Configure serviços para criar endpoints do Service Connect dentro do namespace.

  4. Implemente serviços para criar os endpoints. O Amazon ECS adiciona um contêiner do proxy do Service Connect a cada tarefa e cria os endpoints do Service Connect no AWS Cloud Map. Esse contêiner não é configurado na definição da tarefa e a definição da tarefa pode ser reutilizada sem modificação para criar vários serviços no mesmo namespace ou em vários namespaces.

  5. Implemente aplicações clientes como serviços para conexão aos endpoints. O Amazon ECS as conecta a endpoints do Service Connect por meio do proxy do Service Connect de cada tarefa.

    As aplicações só usam o proxy para se conectar aos endpoints do Service Connect. Não há configuração adicional para usar o proxy. O proxy executa balanceamento de carga round-robin, detecção de valores discrepantes e novas tentativas. Para obter mais informações sobre o proxy, consulte Proxy do Service Connect.

  6. Monitore o tráfego por meio do proxy Service Connect no Amazon CloudWatch.

Configuração do cluster

É possível configurar um namespace padrão para o Service Connect ao criar ou ao atualizar o cluster. Se você especificar um nome de namespace que não existe na mesma conta e Região da AWS, será criado um novo namespace HTTP.

Se você criar um cluster e especificar um namespace padrão do Service Connect, o cluster aguardará no status PROVISIONING enquanto o Amazon ECS cria o namespace. É possível ver um attachment no status do cluster que mostra o status do namespace. Os anexos não são exibidos por padrão na AWS CLI. Você deve adicionar --include ATTACHMENTS para vê-los.

Configuração de serviço

O Service Connect foi projetado para exigir a configuração mínima. Você precisa definir um nome para cada mapeamento de porta que você gostaria de usar com o Service Connect na definição da tarefa. No serviço, você precisa ativar o Service Connect e selecionar um namespace para criar um serviço de cliente. Para criar um serviço de cliente-servidor, você precisa adicionar uma única configuração do serviço do Service Connect que corresponda ao nome de um dos mapeamentos de porta. O Amazon ECS reutiliza o número da porta e o nome da porta da definição da tarefa para definir o serviço e o endpoint do Service Connect. Para substituir esses valores, você pode usar os outros parâmetros Discovery (Descoberta), DNS e Port (Porta) no console ou no discoveryName e no clientAliases, respectivamente, na API do Amazon ECS.

O exemplo a seguir mostra cada tipo de configuração do Service Connect sendo usada em conjunto no mesmo serviço do Amazon ECS. São fornecidos comentários do shell. Entretanto, observe que a configuração JSON usada nos serviços do Amazon ECS não é compatível com comentários.

{ ... serviceConnectConfiguration: { enabled: true, namespace: "internal", #config for client services can end here, only these two parameters are required. services: [{ portName: "http" }, #minimal client - server service config can end here.portName must match the "name" parameter of a port mapping in the task definition. { discoveryName: "http-second" #name the discoveryName to avoid a Task def port name collision with the minimal config in the same Cloud Map namespace portName: "http" }, { clientAliases: [{ dnsName: "db", port: 81 }] #use when the port in Task def is not the port that client apps use.Client apps can use http: //db:81 to connect discoveryName: "http-three" portName: "http" }, { clientAliases: [{ dnsName: "db.app", port: 81 }] #use when the port in Task def is not the port that client apps use.duplicates are fine as long as the discoveryName is different. discoveryName: "http-four" portName: "http", ingressPortOverride: 99 #If App should also accept traffic directly on Task def port. } ] } }