AWS最佳实践:我应该在每个可用区域都有一个NAT网关吗?

16

由于NAT网关仅在单个可用区内具有冗余性,因此如果我希望为了多可用区冗余而在每个可用区中拥有一对公共/私有子网,我应该在每个可用区中都有一个NAT网关,是吗?

否则,如果我只有一个NAT网关,如果该可用区发生故障,所有可用区中的子网都会随之停机,从而破坏了这种多可用区部署的目的。

我的理解是正确的吗?

4个回答

24

理想情况下,每个可用区(AZ)应有一个 NAT 网关。

AWS 在 NAT 实例和 NAT 网关比较 文档中提供了相关建议:

高度可用:在每个可用区中都设置了具有冗余的 NAT 网关。在每个可用区中创建 NAT 网关以确保独立于区域的架构。

一个单独的 NAT 网关只能实现其所在可用区内的冗余性,因此如果存在区域问题,则其他可用区中的实例无法连接到互联网。

请注意:每个 NAT 网关均按小时计费,并收取每 GB 数据处理费用(请参阅 VPC 价格)。 请参阅 如何减少 NAT 网关数据传输成本?


9

来自AWS官方NAT网关文档

如果您的资源位于多个可用区并且共享一个NAT网关,则在NAT网关所在的可用区不可用时,其他可用区中的资源将失去Internet访问。为了创建独立于可用区的体系结构,请在每个可用区中创建一个NAT网关,并配置路由以确保资源使用同一可用区中的NAT网关。

NAT网关为私有子网提供出站Internet连接。请注意,您需要为每个已创建私有子网的可用区创建NAT网关,以实现高可用性。

所描述的网络架构包括公共子网、私有子网和HA NAT网关。

注意事项

  • 如果将成本控制在最低限度是必要的,每个NAT网关的基线成本为32.00美元/月可能会成为阻碍因素。使用三个可用区时,您将为三个NAT网关支付96.00美元/月。
  • NAT网关还增加了出站流量的成本。您必须支付每GB 0.045美元的高额费用,从私有子网流向互联网。这使得出站流量的成本增加了50%。

额外提示!

...

 azs             = ["us-east-1a", "us-east-1b", "us-east-1c"]
 private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
 public_subnets  = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]

 enable_nat_gateway = true
 single_nat_gateway = false # to get 1 NGW x AZ

...


参考链接: https://cloudonaut.io/advanved-aws-networking-pitfalls-that-you-should-avoid/


0

取决于您的使用情况。

在每个可用区创建一个NAT GTW之前,我建议考虑具体的使用情况和您使用的流量量。

我建议阅读这个很棒的SO答案

私有子网中的Amazon EC2实例可以使用NAT网关,具体如下:

  • NAT网关在同一VPC中的公共子网中启动。
  • 私有子网的路由表需要额外的条目,将所有面向互联网的流量(0.0.0.0/0)定向到NAT网关。

...


(*) 基本且琐碎的使用情况是,在开发环境中,您不需要3个NAT GTW。您甚至可以在一个可用区中运行,因为可用性对于生产环境(以及如果决定它们应该是彼此镜像的暂存环境)更为重要。

0
这是一个涉及到三个因素的问题:
1. 冗余要求和影响。 - 如果在某个可用区发生NAT服务中断,你的应用程序能够承受多大的影响? - 多个可用区同时发生中断的可能性是否只会影响整个区域? - 冗余的NAT网关并不能完全保护你免受服务中断的影响。当一个NAT网关不可用时,所有通过该NAT网关的连接都将被终止。同样,当该NAT网关恢复后,连接将再次被终止,因为底层路由会发生变化。
2. 每个NAT网关的成本。 - 每个NAT网关目前的成本约为32.40美元/月。
3. 可用区内带宽成本。 - 如果你需要通过不在同一可用区的NAT网关进行出口流量,除了每GB 0.045美元的NAT网关带宽费用外,你还将承担每GB 0.01美元的可用区内带宽费用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接