【问题标题】:Elastic Load balancer listener not working for one port弹性负载均衡器侦听器不适用于一个端口
【发布时间】: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


【解决方案1】:

启用 ELB Access Logs 并向 AWS 生成的 ELB 的 DNS 名称发送请求。检查 ELB 在 S3 存储桶中创建的日志文件。

【讨论】:

  • 感谢您的建议。正如我上面所指出的,负载均衡器记录了发送到端口 80 的请求,但没有记录发送到端口 9090 的请求:(
  • 您的 EC2 实例是否已向 ELB 和 InService 注册?另外,它必须是 TCP 侦听器吗?不能改成HTTP吗?
  • 是的。另外,我在我原来的问题中做了一个小修改——默认监听器(端口 80 -> 端口 80)有效。只有额外的侦听器(端口 9090 -> 端口 9090)失败。
  • 检查ELB的Security Group和VPC的NACL,确保TCP 9090没有被阻塞。 link
  • 太棒了,解决了它。我必须修改负载均衡器上的安全组,以允许端口 9090 上的传入和传出请求!
猜你喜欢
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 2019-12-25
  • 2021-03-18
  • 2021-05-26
  • 2021-12-18
  • 1970-01-01
  • 2017-09-30
相关资源
最近更新 更多