Como dois serviços podem se comunicar no AWS Fargate?

Como dois serviços podem se comunicar no AWS Fargate?

Eu configurei um cluster Fargate na AWS. Meu cluster tem o seguinteServiços:

  • servidor-A (porta 3000)
  • servidor-B (porta 4000)

Cada serviço está na mesma VPC e possui o mesmo grupo de segurança (qualquer porta, qualquer origem, qualquer destino). O VPC está isolado da Internet.

Agora, quero que o servidor A envie uma consulta http para o servidor B. Eu presumiria que, como no enxame Docker, existe um DNS privado que mapeia o nome do serviço para seu IP privado, e seria tão simples quanto enviar a consulta para:http://servidor-B:4000. No entanto, o servidor A atinge o tempo limite, o que significa que não pode alcançar o servidor B.

Li na documentação que posso colocar os 2 containers no mesmo serviço, cada container escutando em uma porta diferente, para que, graças à interface de loopback, do servidor-A, eu pudesse consultarhttp://127.0.0.1:4000e o servidor B responderá e vice-versa.

No entanto, quero poder escalar o servidor A e o servidor Bindependentemente, então acho que faz sentido manter cada servidor independente um do outro, tendo 2 serviços.

Eu li que, para duas tarefas se comunicarem, preciso configurar um balanceador de carga. Vindo do mundo do Docker Swarm, era muito fácil consultar os serviços pelo nome do serviço e, nos bastidores, a solicitação era encaminhada para um dos contêineres desse serviço. Mas não parece funcionar assim no AWS Fargate.

Questões:

  • como o servidor A pode conversar com o servidor B?
  • Como o serviço às vezes é reimplementado, seu IP privado muda, então não faz sentido consultar por IP, consultar por nome de host parece a maneira mais natural
  • Preciso configurar algum tipo de DNS interno?

Obrigado pela sua ajuda, estou realmente perdido em fazer esta configuração simples.

Responder1

Após pesquisar, descobri que era porque eu não estava habilitando o "Service Discovery" durante a criação do serviço, portanto nenhum DNS privado foi criado. Aqui está alguma documentação adicional que explica exatamente as etapas:

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-discovery.html

informação relacionada