首页 > 解决方案 > 指向私有子网的弹性负载均衡器

问题描述

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

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

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

任何想法将不胜感激,

克里斯

标签: amazon-web-servicesamazon-ec2amazon-elbsubnetprivate-subnet

解决方案


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

这是设计使然。

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

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

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

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


推荐阅读