3

J'ai un conteneur Elastic Beanstalk Docker qui exécute une application Sinatra. En utilisant ebextensions, j'ai une instance haproxy s'exécutant sur la boîte EC2 - qui transmet le trafic du port 9090 au docker_ip:application_port. La configuration fonctionne bien, puisque je suis capable de boucler l'IP de la boîte EC2 sur le port 9090 et de toucher les extrémités de mon application (je peux aussi voir les journaux haproxy)L'écouteur de l'équilibreur de charge élastique ne fonctionne pas pour un port

Maintenant, j'ai configuré un écouteur tcp supplémentaire sur Elastic loadbalancer pour transférer le port 9090 vers le port 9090 (le port par défaut est le port 80 -> 80). Cependant, quand j'essaie d'accéder à domain_name:9090, il expire. Si je viens d'accéder domain_name cela fonctionne. Toutes les idées sur la façon dont je peux procéder au débogage, pourquoi les auditeurs de l'équilibreur de charge ne fonctionnent pas comme prévu.

Notez que la visibilité ELB est définie sur public. Donc, j'ai activé la journalisation pour l'équilibreur de charge et j'ai directement accédé à son nom DNS. Il connecté les requêtes envoyées au port 80, mais pas ceux envoyés au port 9090.


Une autre mise à jour - je courais un tcpdump sur la boîte EC2 sur le port 9090. Il n'a pas capturé des paquets où je courais load_balancer_domain:9090


Résolu - je devais modifier les règles du groupe de sécurité sur l'équilibrage de charge pour permettre le trafic sortant sur le port 9090 pour l'instance.

+0

merci, cela a fonctionné –

+0

Ce SO m'a sauvé la vie. Été chercher partout pour pourquoi l'équilibreur de charge n'a pas envoyé le trafic à l'instance - n'a pas pensé à vérifier les règles de trafic _outbound_. JE VOUS REMERCIE! –

Répondre

2

Activez ELB Access Logs et envoyez une requête au nom DNS généré par AWS de l'ELB. Vérifiez le fichier journal que l'ELB a créé dans le compartiment S3.

+0

Merci pour cette suggestion. Comme je l'ai indiqué ci-dessus, l'équilibreur de charge a enregistré les demandes envoyées au port 80, mais pas celles envoyées au port 9090 :( – Hari

+0

Votre instance EC2 est-elle enregistrée avec l'ELB et 'InService'? Aussi, doit-il être un TCP? Est-ce que vous ne pouvez pas le changer en HTTP? – gboda

+0

Oui, il est.En outre, j'ai fait une petite modification dans ma question d'origine - le port d'écoute par défaut (port 80 -> port 80) fonctionne uniquement l'écouteur supplémentaire (port 9090 -> le port 9090) échoue – Hari