我已经创建了一个面向 Internet 的弹性负载均衡器来指向我在 VPC 中的 EC2 实例,就像我之前有很多次一样,但是对于这个我使用带有 nat 网关的私有子网来控制传出流量并将其全部通过列入白名单的 IP。
不幸的是,仅此负载均衡器就存在间歇性连接问题,这会导致各种问题,包括 Cloudfront 可靠地联系原始站点。
这适用于公共子网(事实上我现在已经直接换掉了),但不适用于私有子网。
任何想法将不胜感激,
克里斯
我已经创建了一个面向 Internet 的弹性负载均衡器来指向我在 VPC 中的 EC2 实例,就像我之前有很多次一样,但是对于这个我使用带有 nat 网关的私有子网来控制传出流量并将其全部通过列入白名单的 IP。
不幸的是,仅此负载均衡器就存在间歇性连接问题,这会导致各种问题,包括 Cloudfront 可靠地联系原始站点。
这适用于公共子网(事实上我现在已经直接换掉了),但不适用于私有子网。
任何想法将不胜感激,
克里斯
我可以让它可靠地工作的唯一方法是将它指向两个公共子网。
这是设计使然。
面向 Internet 的应用程序负载均衡器 (ALB) 和经典 ELB 必须专门在公共子网中预置。
无论平衡器后面的实例是否在私有子网中,这始终是正确的。
如果将平衡器放置在私有子网中,则浏览器无法建立与平衡器的连接,因为平衡器子网的默认路由不是 Internet 网关——因此平衡器的回复被错误路由并且连接超时。如果平衡器位于公共子网和私有子网的混合上,则超时会变得间歇性,因为一些连接通过公共子网到达平衡器(并且工作),而其他连接通过私有子网到达平衡器(而不是)。
平衡器不需要位于任何私有子网上,因为 VPC 路由表始终包含一个隐式路由,该路由允许 VPC 内的所有子网到达所有其他子网,仅受安全组和网络 ACL 规则的约束。将平衡器放在与实例完全不同的子网中没有性能劣势。