【发布时间】:2018-07-09 04:27:41
【问题描述】:
我正在尝试为不同的环境(dev/test/pre-prod/prod)建立一个 VPC 架构,但我遇到了关于弹性 IP 限制的问题。首先很高兴知道架构是否朝着正确的方向发展。因此,让我在这里为您解释详细信息:
- 1 个 VPC,适用于所有环境,带有 1 个 Internet 网关
- 一个地区的VPC
- 3 个可用区,每个可用区有 1 个私有子网和 1 个实用程序子网(共 6 个子网)
- 3 个 NAT 网关 - 每个公用事业子网一个,分配给其网络接口的 3 个弹性 IP
- 每个私有子网中的 EC2 实例(主节点和节点)
- 用于连接企业网络的虚拟专用网关
我正在使用 Terraform 将整个基础架构作为代码自动化(这在这里无关紧要)。当我为一个环境(比如说开发)运行 Terraform 脚本时,上面详述的整个基础设施都创建得很好并且运行良好。但是现在当我为另一个环境(比如测试)运行脚本时,我的弹性 IP 用完了(因为每个区域限制为 5 个 EIP)。
什么是重新架构它的最佳方法,以便我可以为不同的环境创建基础架构,同时不达到这些 EIP 限制?
非常感谢您的帮助。如果需要更多详细信息,请告诉我。
问候, 阿卜杜勒
【问题讨论】:
-
如果您确实需要所有实例的 EIP,那么您可以向 AWS 支持请求增加限制。 docs.aws.amazon.com/general/latest/gr/aws_service_limits.html
-
谢谢布赖恩斯布姆。目前,弹性 IP 分配给公有子网中的网络接口。所以我的问题是:我是否在为我正在创建的每个环境分配 3 个弹性 IP 做正确的事情?有没有更好的解决方法?
-
如果您在 NAT 网关上不需要需要 HA,您可以在每个 VPC 上使用一个 NAT 网关。这会很好,直到包含您的 NAT 网关的 AZ 出现故障,此时其他 AZ 现在无法出口到互联网(或任何穿过 NAT 网关的路由)。 NAT 网关在 AZ 本身中具有高可用性,因此您只需要担心 AZ 故障情况,这种情况应该很少见,以至于在生产之外不必真正担心它。但最终您只需要要求 AWS 增加您的账户+区域的 EIP 限制。
-
谢谢@ydaetskcoR。所以我可以在 AZ1 的公共子网中创建一个 NAT 网关,然后允许所有 AZ 的私有子网中的实例与 AZ1 中的公共子网通信吗?这可行吗?这应该适用于 dev/test/pre-prod/staging 等其他环境,但我相信我仍然会遇到 EIP 限制问题(产品 3 个,每个环境 1 个)?如果这是可行的方法,我可以请求增加限制,但尝试了解这是否是正确的解决方案,因为这是一种非常常见的部署方案?
-
如果可用区出现故障。 NAT 网关在其 AZ 内是 HA(请参阅docs.aws.amazon.com/AmazonVPC/latest/UserGuide/…),但是如果包含 NAT 网关的 AZ 发生故障,那么其他不应受到影响的 AZ 现在会受到 NAT 网关丢失的影响。对我来说,这在生产之外很好,但这是你必须做出的决定,而不是外面的任何人都可以告诉你。
标签: amazon-web-services amazon-ec2 terraform amazon-vpc eip