TL;博士
这是你的选择。从技术上讲,一个 NAT 实例可以为一个 VPC 中的所有私有子网提供服务。
有点长:
首先,我们区分 NAT Instance(配置为 NAT GW 的 EC2 实例,由最终用户管理)和 NAT Gateway(由 AWS 管理的 NAT Instance)。
如果是 NAT 实例,那么实现它的人需要更多地了解如何实现它。回答这个问题是不够的。
如果它是 NAT GW,那么AWS 会说“每个 NAT 网关都是在特定的可用区中创建的,并在该区域中以冗余方式实施”。我将其解释为:只要整个 AZ 没有宕机,AWS 就保证 NATGW 的 HA(可能伴随服务中断或降级)。
从技术上讲,只要所有 3 个私有子网的路由表都提供到此 NATGW 的路由(我猜是隐含的,但安全组/acl 配置为允许使用),您应该可以在任何一个公共子网中使用单个 NAT GW那条路线的)。由于此配置,您当然需要为 AZ 之间的带宽使用付费。
但显然,如果 AZ 出现故障,这不是容错的。
如果您不希望所有私有子网在 NAT GW 关闭时断开 Internet 连接,那么您需要拥有更多 NAT GW。关于是否拥有多个的决定,如果是,那么我猜有多少是个案。
如果您有 2 个 NAT GW,那么为了发生故障转移,您需要设置监控和故障转移,以确保如果 AZ 出现故障,所有私有子网(由该 AZ 中的 NAT GW 提供服务)开始将流量发送到其他 NAT 网关。很好的解释在这里。这是一项工作 AFAIK。
最后,EIP和NAT GW之间的关系是一一对应的。所以是的,您必须为您创建的每个 NAT GW 创建一个 EIP。