【问题标题】:Elastic Load Balancer pointing at Private Subnet指向私有子网的弹性负载均衡器
【发布时间】:2019-07-19 04:06:20
【问题描述】:

我已经创建了一个面向 Internet 的弹性负载均衡器来指向我在 VPC 中的 EC2 实例,就像我以前做过很多次一样,但是对于这个我使用带有 nat 网关的私有子网来控制传出流量并引导它全部通过列入白名单的 IP。

不幸的是,仅此负载均衡器就有间歇性连接问题,这会导致各种问题,包括 Cloudfront 可靠地联系源站。

这适用于公共子网(事实上我现在已经直接将其换掉了),但不适用于私有子网。

任何想法都将不胜感激,

克里斯

【问题讨论】:

  • 面向 Internet 的 ALB 或经典 ELB不能放置在私有子网上。平衡器后面的实例可以(并且几乎总是应该)位于私有子网上,但绝不是 ELB。那是你在做什么吗?听起来您可能会将 ELB 或 ALB 分配给一个公有子网和一个私有子网,这会使它有一半的时间失败。
  • 抱歉,它是一个 ALB,即使我让它指向两个私有子网(其中只有一个包含服务器),我也会遇到同样的问题。我可以让它可靠地工作的唯一方法是将它指向两个公共子网。它实际上只是时不时地工作,然后连接挂起 10/20 秒。

标签: amazon-web-services amazon-ec2 amazon-elb subnet private-subnet


【解决方案1】:

我可以让它可靠地工作的唯一方法是将它指向两个公共子网。

这是设计使然。

面向 Internet 的应用程序负载均衡器 (ALB) 和经典 ELB 必须在公共子网中独占配置。

无论平衡器后面的实例是否在私有子网中,这始终是正确的。

如果平衡器放置在私有子网中,浏览器无法建立到平衡器的连接,因为平衡器子网的默认路由不是 Internet 网关——所以平衡器的回复被错误路由并且连接超时。如果平衡器位于公共子网和私有子网的混合上,超时会变得间歇性,因为一些连接通过公共子网到达平衡器(并且工作),而其他连接通过私有子网到达平衡器(而不是)。

平衡器不需要在任何个私有子网上,因为 VPC 路由表总是包含一个隐式路由,允许 VPC 内的所有子网到达所有其他子网,仅受安全组约束和网络 ACL 规则。将平衡器放在与实例完全不同的子网中没有性能劣势。

【讨论】:

  • 很好地解释了手头的问题。我还要补充一点,如果你执行dig <lb-dns>,这个问题会变得非常明显——这将返回实际负载均衡器的所有 IP,如果你检查每一个 IP,与私有子网相关的 IP 将无法正常工作正如 Michael 解释的那样,是私有 IP。
  • 精彩的解释@Michael
猜你喜欢
  • 2019-05-30
  • 1970-01-01
  • 2021-03-18
  • 2021-05-26
  • 2017-11-28
  • 2018-04-21
  • 2021-03-08
  • 1970-01-01
  • 2014-05-15
相关资源
最近更新 更多