关于AWS网络架构的思考-流量到互联网

对于出去的流量,在 AWS 中有两种方式,一种是通过 NAT 出,一种是通过 Internet Gateway 直接出。

普通的 VPC 的子网是私有子网,不能直接与 Internet 通信,因此需要通过 NAT 转发到网络上。具体请参考博主另一篇文章 AWS VPC 网络

由于流量从 NAT 出去的,所以网络的出口 ip 即 NAT 的 ip 地址。

如果 VPC 的子网是公有的,则可以直接与 Internet 通信,无需经过 NAT 转换。网络出口地址是 EC2 实例的 公有 ip 地址。

NAT 局限

正常服务到公网的流量走NAT就够了,但是如果服务需要大量建立与第三方某域名的连接,如代理服务,可能会出现 NAT 并发连接错误。举个例子来说,假设现在代理服务需要建立60万个连接来访问腾讯的某个域名,而该域名只能解析出5个ip地址。默认情况下,公有 NAT 网络只能关联2个弹性IP地址,每个弹性ip地址最多支持与唯一目标(由目标ip,端口和协议组合标识)建立55000个并发连接。因此两个弹性ip与5个目标ip最多同时建立 55000 * 2 * 5 = 550000 个连接。

在这种情况下,NAT 就会出现并发连接错误,即使只有55万个连接,这些连接也不是平均分配到不同目标的,显然也会出现并发连接错误。此时经 NAT 转发网络请求的方案是有问题的,可以考虑直接使用公有子网来访问网络。

上一篇:【全开源】跑腿小程序:智能派单、同城配送、校园跑腿及预约取件(用户端+骑手端)


下一篇:显卡(Graphics Processing Unit,GPU)架构详细解读