欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 关于AWS网络架构的思考

关于AWS网络架构的思考

2025/1/19 7:02:11 来源:https://blog.csdn.net/xiaoyi52/article/details/145188700  浏览:    关键词:关于AWS网络架构的思考

目录:
AWS概述
EMR Serverless
AWS VPC及其网络
关于AWS网络架构的思考

在AWS K8S中部署的业务,有不同的流量路径。

流量进入

客户端请求

普通的客户端流量流向从前到后是:

  1. 客户端
  2. 公司网关(endpoint)
  3. 业务的Endpoint Service
  4. Load Balancers(监听80和443)
  5. TargetGroupA(将LB的80端口请求转发到端口A),targetGroupB(将LB的443端口请求转发到端口B)。TargetGroup的实例是需要通过 Auto Scaling Group 来注册的。
  6. Ingress Nginx,该服务是Load Balancer类型,内部 endpoints 80,443,A 和 B 四个端口,外部 endpoints 是 80 和 443。
  7. Ingress 通过路由规则将流量转发给业务service,再经过4层的负载均衡将流量发给pod。

通过以上步骤客户端流量到达了服务端。其中1~6部都是公司通用平台负责完成,业务只需要定义好ingress路由规则即可。

网络请求

对于其他第三方从网络上进入的流量,需要通过 API Gateway 来转发到内部网络。其流量从前到后的路径是:

  1. API GW
  2. VPC Link (内含NLB)
  3. NLB(Network Load Balancer) 监听 80 端口
  4. TargetGroup(将LB的80端口请求转发到端口C),TargetGroup实例由Auto Scaling Group 注册。
  5. 业务Service改为NodePort类型,监听所有target group实例上C端口的请求。

通过以上步骤,网络流量就可以达到服务端。这部分全部都由业务方自己管理,其中第4步中 ASG 和 客户端请求的第5步的 ASG 是相同的,业务方只需要将其关联上就行:resource "aws_lb_target_group_attachment" "tg_http_attachment"

相同VPC内的其他服务

对于相同VPC内的其他服务,通过 Route53 将通过域名发出的请求转发到服务的 Endpoint,然后进入客户端请求的第3步。

流量到互联网

对于出去的流量,在 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 转发网络请求的方案是有问题的,可以考虑直接使用公有子网来访问网络。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com