单个 NAT 网关可以跨多个 AZ 吗?

Posted

技术标签:

【中文标题】单个 NAT 网关可以跨多个 AZ 吗?【英文标题】:Can a single NAT Gateway span across multiple AZ? 【发布时间】:2020-04-18 21:20:30 【问题描述】:

当我配置 NAT 网关时,我必须选择一个子网,因此据我了解,一个 NAT 网关对应一个子网,属于一个可用区。

然后我看到了下面的语句

如果您在多个可用区中拥有资源并且它们共享一个 NAT 网关,则在 NAT 网关的可用区关闭的情况下,其他可用区中的资源将无法访问互联网,要创建独立于可用区的架构,请创建每个可用区中的 NAT 网关并配置您的路由以确保资源使用同一可用区中的 NAT 网关。

如果我在不同的子网中有多个 EC2,它们如何共享一个 NAT 网关?我理解错了吗?下面是我尝试创建 NAT 网关时看到的屏幕截图

【问题讨论】:

【参考方案1】:

NAT 网关连接到特定的子网,子网位于特定的可用区中。

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

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

根据您的风险偏好,您可能会配置不同的东西。

案例一:一个公有子网,一个私有子网在同一个AZ

NAT 网关进入公共子网 EC2 实例进入私有子网 私有子网的路由表指向公有子网中的 NAT 网关

案例 2:两个公共子网,两个私有子网,一个 NAT 网关

NAT 网关进入一个公共子网 (Public-Subnet-A) EC2 实例在两个可用区(Private-Subnet-APrivate-Subnet-B)的私有子网中启动 两个私有子网的路由表都指向 NAT 网关

但是,如果可用区 A 出现故障(罕见,但可能发生),则无法从 Private-Subnet-B 访问 NAT 网关。因此,即使系统跨两个 AZ 运行,系统也可能会受到影响。

案例 3:两个公共子网、两个私有子网、两个 NAT 网关

NAT 网关进入两个公共子网(Public-Subnet-APublic-Subnet-B) EC2 实例在两个可用区(Private-Subnet-APrivate-Subnet-B)的私有子网中启动 路由表Private-Subnet-A指向Public-Subnet-A中的NAT网关 路由表Private-Subnet-B指向Public-Subnet-B中的NAT网关

如果其中一个 AZ 发生故障,那么另一个私有子网中的 EC2 实例仍然能够与 Internet 通信,因为它们在同一个 AZ 中有自己的 NAT 网关。

【讨论】:

我无法将您的回答与我提到的陈述联系起来。总而言之,不能将单个 NAT 网关与多个 AZ 中的资源共享不是吗? @Isaac 是,但不是:可以在一个区域内和单个 VPC 中跨任意多个 AZ 共享一个 NAT 网关(上面的案例 2,引用 2 个 AZ)区域,但您需要为跨区域数据传输付费,并且在发生影响配置 NAT-GW 的 AZ 的不太可能发生的中断事件时,您将失去弹性……并且 NAT 网关始终位于单个 AZ 中。跨度> 选项 2 也会导致跨 AZ 带宽费用。这可能比在各自的 AZ 中运行 2 个 NAT 网关的成本更高。 aws.amazon.com/premiumsupport/knowledge-center/… @Mint 是的,案例 3 描述了对两个单独的路由表的需求——一个用于每个私有子网,因为它们将指向自己的 NAT 网关。 @Mint 您可以将主路由表用于任何目的(例如相反)。将其视为私有路由表可能是一个很好的“默认”,以便任何新子网默认为私有,除非明确配置为公共 - 从安全的角度来看,这更安全。

以上是关于单个 NAT 网关可以跨多个 AZ 吗?的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在同一个AZ中拥有两个AWS NAT实例

重定向是 API 网关的有效策略吗?

大数据集群跨多版本升级业务0中断,只因背后有TA

如何实现跨交换机的vlan

如何实现跨交换机的vlan

nat转换之后终端PC无法ping通外部网关?