无法连接到面向 Internet 的 NLB 将流量转发到私有实例

bot*_*bot 3 amazon-ec2 nlb amazon-web-services aws-load-balancer

我已经使用以下配置配置了一个云

  1. 在两个可用区中具有公有子网和私有子网的 VPC。公共子网有一个互联网网关,私有子网有一个配置的 NAT 网关
  2. 面向 Internet 的网络负载均衡器,允许在两个可用区中配置 TCP 流量
  3. 从负载均衡器转发流量的目标组
  4. 私有子网中的 EC2 实例配置了 haproxy 侦听端口 80。它的安全组配置为在端口 80 上接受来自配置了 NLB 的两个子网的 TCP 流量
  5. 将此实例添加到目标组,状态为healthy

当我尝试访问 NLB DNS 时,它给了我“连接超时”错误。我期望当我点击 NLB DNS 时,它应该将我转发到私有实例。我已经检查了许多 AWS 文档,例如此链接,但仍然找不到此问题的解决方案。如果这还不够,请随时询问更多信息。

Mic*_*bot 8

它的安全组配置为在端口 80 上接受来自配置了 NLB 的两个子网的 TCP 流量

当目标通过实例 ID 注册时,面向 Internet 的 NLB 后面的实例的安全组需要允许来自 0.0.0.0/0 的流量——或者任何需要通过平衡器访问它们的公共 IP 地址范围——而不仅仅是平衡器的子网(健康检查所需)。

如果您的目标类型是实例,请向您的安全组添加规​​则以允许从负载均衡器和客户端到目标 IP 的流量。

https://aws.amazon.com/premiumsupport/knowledge-center/security-group-load-balancer/

与 ALB 和经典平衡器不同,当目标由实例 ID 配置时,NLB 流量具有外部客户端的源地址,这是安全组与之匹配的地址。

  • @bot 如果您的实例位于私有子网上并且没有公共 IP 地址(没有意义——它位于私有子网上),那么此配置可以实现:该实例只能通过 NLB 访问。当然,如果您使用 HTTP,HAProxy 在 ALB 后面也能完美工作,通过该设置,您可以进行更传统的设置,其中平衡器有自己的 SG,并且实例 SG 仅允许来自 ALB 的流量。除非您正在执行一些高级操作(例如 mTLS),否则此处不需要 NLB。 (2认同)