【问题标题】:AWS VPC - Elastic IPs for different environmentsAWS VPC - 不同环境的弹性 IP
【发布时间】:2018-07-09 04:27:41
【问题描述】:

我正在尝试为不同的环境(dev/test/pre-prod/prod)建立一个 VPC 架构,但我遇到了关于弹性 IP 限制的问题。首先很高兴知道架构是否朝着正确的方向发展。因此,让我在这里为您解释详细信息:

  1. 1 个 VPC,适用于所有环境,带有 1 个 Internet 网关
  2. 一个地区的VPC
  3. 3 个可用区,每个可用区有 1 个私有子网和 1 个实用程序子网(共 6 个子网)
  4. 3 个 NAT 网关 - 每个公用事业子网一个,分配给其网络接口的 3 个弹性 IP
  5. 每个私有子网中的 EC2 实例(主节点和节点)
  6. 用于连接企业网络的虚拟专用网关

我正在使用 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


【解决方案1】:

我建议每个环境都在其自己的 AWS 账户中进行管理,而不是将所有环境混合在一个账户中。当您使基础架构自动化时,额外的分离非常容易,它为您提供了更高级别的安全性和环境之间的隔离。一个环境中的 hack 不会影响另一个环境。

我们以这种方式保留 3 个环境。生产、开发和故障安全环境。故障安全帐户包含不同区域中的生产备份。

按帐户分隔环境有多种好处。例如:

【讨论】:

  • 感谢@Rodrigo M。很高兴听到您有这样的系统。肯定会考虑到这一点。
  • 你打赌。我希望我能在我的环境中早点做到这一点。有多种好处,例如您不需要为每个人提供生产访问权限,并且您可以指定某些资源仅在某些环境中创建。加码空间arstechnica.com/information-technology/2014/06/…
  • CodeSpaces 的故事非常可怕,但在这里分享得很好。干杯..
【解决方案2】:

正如 cmets 中所述,EIP 限制只是您遇到了 EIP 的 AWS 服务限制,因此您应该与 AWS 讨论提高它的问题。按照Rodrigo M 的建议,在单独的 AWS 账户中运行单独的工作负载是绕过服务限制的另一种方法,但由于他的回答中列出的许多其他原因,这也是一个好主意。

如前所述,您可能需要考虑仅在非生产 VPC 中运行单个 NAT 网关,因为这将降低您的成本(以及减少您需要的 EIP)。

NAT 网关是highly available inside the availability zone,它们被放置在但显然不是跨区域。这意味着,如果您在恰好包含您的 NAT 网关的 AZ 上出现单个 AZ 故障,那么您的其他 AZ 将失去通过 NAT 网关的连接,从而将故障传播到逻辑分离的 AZ 之外。如果您要为每个 AZ 设置一个 NAT 网关,那么当一个 AZ 发生故障时,它只会影响该单个 AZ(那时显然已完全关闭)。

对于我自己来说,较少的 HA 适合非生产环境,并且每个非生产 VPC 每月可节省 65 美元。然而,在生产环境中,我很乐意吃掉那小小的额外成本,以减少由 AZ 故障造成的损害,以及我为避免单点故障所做的所有其他工作。

【讨论】:

  • 好点。正如我在回答中所建议的那样,通过适当的工具和环境分离,某些资源可以在某些环境中受到限制或省略。在非生产环境中降低 HA 水平无疑是降低成本的好方法。
  • 是的,当然,跨 AWS 账户拆分环境绝对值得这样做,原因有很多,但提高(软)服务限制可能是其中最不重要的 ;)
猜你喜欢
  • 2020-12-15
  • 2019-07-05
  • 2020-11-29
  • 2017-11-25
  • 2019-01-15
  • 2013-08-25
  • 2020-12-26
  • 2021-05-05
  • 1970-01-01
相关资源
最近更新 更多