【发布时间】:2016-05-16 19:44:42
【问题描述】:
我有一个运行 Sinatra 应用程序的 Elastic Beanstalk Docker 容器。使用 ebextensions,我在 EC2 机器上运行了一个 haproxy 实例——它将流量从端口 9090 转发到 docker_ip:application_port。设置工作正常,因为我能够在端口9090 上卷曲 EC2 框的 IP 并点击我的应用程序的端点(我还能够看到 haproxy 日志)
现在,我在 Elastic 负载均衡器上设置了一个额外的 tcp 侦听器,将端口 9090 转发到端口 9090(默认为端口 80 -> 端口 80)。但是,当我尝试访问 domain_name:9090 时,它会超时。如果我只是访问domain_name,它就可以工作。关于如何调试负载平衡器侦听器未按预期工作的任何想法。
注意,ELB 可见性设置为公开。
因此,我为负载平衡器打开了日志记录,并直接访问了它的 DNS 名称。它记录了发送到端口 80 的请求,但不记录发送到端口 9090 的请求。
另一个更新 - 我在端口 9090 上的 ec2 机器上运行了一个 tcpdump。它没有捕获我运行 load_balancer_domain:9090 的任何数据包
已解决 - 我必须在负载均衡器上编辑安全组规则,以允许实例在端口 9090 上的出站流量。
【问题讨论】:
-
这个 SO 救了我的命。一直在寻找负载均衡器没有将流量发送到实例的原因 - 没想到要检查 outbound 流量规则。谢谢!
-
就我而言,我已将端口添加到安全组规则中,但在尝试连接 IPv4 时只允许通过 IPv6 进行访问。
标签: amazon-web-services amazon-ec2 load-balancing amazon-elastic-beanstalk