单个 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-A
、Private-Subnet-B
)的私有子网中启动
两个私有子网的路由表都指向 NAT 网关
但是,如果可用区 A 出现故障(罕见,但可能发生),则无法从 Private-Subnet-B
访问 NAT 网关。因此,即使系统跨两个 AZ 运行,系统也可能会受到影响。
案例 3:两个公共子网、两个私有子网、两个 NAT 网关
NAT 网关进入两个公共子网(Public-Subnet-A
、Public-Subnet-B
)
EC2 实例在两个可用区(Private-Subnet-A
、Private-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 吗?的主要内容,如果未能解决你的问题,请参考以下文章