
Configuré un clúster de Fargate en AWS. Mi cluster tiene lo siguienteservicios:
- servidor-A (puerto 3000)
- servidor-B (puerto 4000)
Cada servicio está en la misma VPC y tiene el mismo grupo de seguridad (cualquier puerto, cualquier origen, cualquier destino). La VPC está aislada de Internet.
Ahora, quiero que el servidor A envíe una consulta http al servidor B. Supongo que, como en Docker swarm, existe un DNS privado que asigna el nombre del servicio a su IP privada, y sería tan sencillo como enviar la consulta a:http://servidor-B:4000. Sin embargo, el servidor A obtiene un tiempo de espera, lo que significa que no puede comunicarse con el servidor B.
Leí en la documentación que puedo poner los 2 contenedores en el mismo servicio, cada contenedor escuchando en un puerto diferente, de modo que, gracias a la interfaz loopback, desde el servidor A, pueda consultarhttp://127.0.0.1:4000y el servidor B responderá, y viceversa.
Sin embargo, quiero poder escalar el servidor A y el servidor B.independientemente, por lo que creo que tiene sentido mantener cada servidor independiente entre sí al tener 2 servicios.
Leí que, para que 2 tareas se comuniquen entre sí, necesito configurar un equilibrador de carga. Al venir del mundo de Docker Swarm, era muy fácil consultar los servicios por su nombre y, detrás de escena, la solicitud se reenviaba a uno de los contenedores de ese servicio. Pero no parece funcionar así en AWS Fargate.
Preguntas:
- ¿Cómo puede el servidor A hablar con el servidor B?
- Como el servicio a veces se vuelve a implementar, su IP privada cambia, por lo que no tiene sentido consultar por IP; consultar por nombre de host parece la forma más natural
- ¿Necesito configurar algún tipo de DNS interno?
Gracias por tu ayuda, estoy realmente perdido en esta sencilla configuración.
Respuesta1
Después de buscar, descubrí que se debía al hecho de que no estaba habilitando el "Descubrimiento de servicios" durante la creación del servicio, por lo que no se creó ningún DNS privado. Aquí hay documentación adicional que explica exactamente los pasos:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-discovery.html