具有多个AZ /子网的Elastic Beanstalk环境中的NAT / Internet网关的HA

时间:2018-03-12 18:28:03

标签: amazon-web-services networking elastic-beanstalk subnet private-subnet

我有一个关于NAT网关和互联网绑定弹性豆茎的问题。我的配置如下:

  • 不同AZ的3个公共子网
  • 1包含3个公共子网和互联网网关的路由表
  • 不同AZ的3个私有子网
  • 1路由表,包含3个私有子网,但没有(尚未)
  • ELB已在每个AZ中配置了3个子网,并在每个AZ中为实例配置了3个私有子网

现在,如果我为这3个私有子网创建一个NAT网关,这意味着我需要在不同的AZ和3个不同的弹性IP中为每个子网创建一个?我想我错过了一些东西,但除非这种配置有意义,否则我看不到它。

1 个答案:

答案 0 :(得分:1)

<强> TL; DR

这是你的选择。从技术上讲,一个NAT实例可以为一个VPC中的所有私有子网提供服务。

稍长一点:

首先,我们区分NAT实例(配置为NAT GW的EC2实例,由最终用户管理)和NAT网关(由AWS管理的NAT实例)。

如果是NAT实例,那么实现它的人需要更多地了解如何实现它。回答这个问题是不够的。

如果是NAT GW,那么AWS says“每个NAT网关都在特定的可用区域中创建,并在该区域中实现冗余”。我将其解释为:只要整个AZ没有关闭,AWS就会为NATGW保证HA(可能会导致服务中断或降级)。

从技术上讲,只要所有3个私有子网的路由表都提供到这个NATGW的路由,你就应该在你的任何一个公有子网中使用单个NAT GW(并且我想是隐式的但是安全组/ acl已配置)允许使用该路线)。当然,由于此配置,您需要为AZ之间的带宽使用付费。

但显然,如果AZ发生故障,这不是容错的。

如果您不希望所有私有子网在NAT GW关闭时丢失Internet连接,那么您需要拥有更多NAT GW。关于是否有一个以上的决定,如果有,那么我猜多少是个案。

如果您有2个NAT GW,那么为了实现故障转移,您需要设置监控和故障转移,以确保如果AZ发生故障,所有私有子网(由该AZ中的NAT GW服务)开始发送流量到其他NAT GW。 Good explanation here。这是AFAIK的一些工作。

最后,EIP和NAT GW之间的关系是一对一的。所以是的,你必须为你创建的每个NAT GW创建一个EIP。