aws 负载均衡ELB访问后端私有子网中的服务(Private subnet)
常见Web系统的网络架构:
这个架构涉及几个问题:
1. 如何将面向公众的负载均衡器连接到具有私有 IP 地址的 EC2 实例
2.在私有实例中如何访问互联网的服务(比如第三方的接口)等
重要的两个概念:
公有子网
如果子网的默认流量路由到互联网网关,则该子网称为公有子网。例如,如果在此子网中启动的实例具有弹性 IP 地址或与之关联的公有 IP 地址,则该实例可以公开访问。
私有子网
如果子网的默认流量路由到 NAT 实例/网关或完全没有默认路由,则该子网称为私有子网。例如,即使具有弹性 IP 地址或与之关联的公有 IP 地址,在此子网中启动的实例也不可公开访问。
重要的约束:
1.ALB如果要互联网访问,必须关联共有子网。
2.私有子网的实例如果想访问互联网,必须经过NAT服务(非互联网网关)。
VPC的配置流程:
1.创建VPC,创建2个私有子网,分布在两个不同的可用区。将实例放入这两个私有子网。
2.创建两个公有子网B,C,分布在两个不同的可用区。
3.创建一个公有子网A,随意选择一个可用区。
4.创建NAT,绑定公有子网A
5.将私有子网的路由表增加路由到NAT的路由。
6.创建ELB,绑定VPC,及公有子网B,C
最后的结果如下:
两个场景:
1.用户从internet访问web,走右边的虚线。从internet gateway到ELB,到Public subnet,最后到private subnet
2.private subnet中的后端服务需要访问互联网上的第三方服务,走左边的虚线。从EC2服务器,到private subnet,然后NAT gateway,然后直接到internet。
参考:
1. https://amazonaws-china.com/cn/premiumsupport/knowledge-center/public-load-balancer-private-ec2/
2.https://stackoverflow.com/questions/9257514/amazon-elb-in-vpc
3.http://thebluenode.com/exposing-private-ec2-instances-behind-public-elastic-load-balancer-elb-aws