Fondo
Tengo una instancia EC2 y un contenedor docker ejecutándose en el puerto 3030.
En mi contenedor docker, hay un servidor nodejs que contiene la configuración de API REST.
Acabo de crear un Balanceador de carga de aplicaciones con un grupo objetivo (HTTP: 80) que apunta a la instancia ec2 anterior, para configurar el punto final http público para enviar una solicitud api
El nombre DNS del Load Balancer es my-docker-test-server-dev-123456789.ap-southeast-1.elb.amazonaws.com.
Problema
Traté de enviar una solicitud http POST https://my-docker-test-server-dev-123456789.ap-southeast-1.elb.amazonaws.com/login
para probar la API de inicio de sesión en Postman, pero se produce un error
HTTP 504: Gateway timeout Actualizar
Estoy usando un grupo de seguridad predeterminado para mi balanceador de carga.
Regla de entrada
Type Protocol Port range Source Description - optional All traffic All All 0.0.0.0/0 – All traffic All All ::/0 – All traffic All All sg-d987a2bc / default – Actualización 2
Ahora se actualizó el grupo de destino para que apunte a HTTP: 3030 como se sugiere en el comentario, pero sigue habiendo los mismos errores.
Chequeo de salud para el grupo:
unhealthy Request timed out Actualización 3
Instancia EC2 > Seguridad
Regla de entrada
Port range Protocol Source Security groups 22 TCP 0.0.0.0/0 launch-wizard-9Basado en los comentarios.
El problema se debió a la configuración incorrecta del grupo de seguridad (SG) de las instancias y el puerto del grupo objetivo (TG). En el primer caso, dado que la aplicación Docker está expuesta en el puerto 3030 de la instancia, SG debe permitir el tráfico entrante en ese puerto. Faltaba la regla SG de entrada .
En el caso de TG, el puerto de tráfico original era el 80. Sin embargo, dado que la ventana acoplable funciona en el puerto 3030, era necesario cambiar el puerto TG al puerto 3030.
Así que el tráfico se ve de la siguiente manera:
Clinet ---(HTTP:80) ---> ALB ---> TG --- (HTTP:3030) ---> Instance with docker on port 3030