根据this document考虑以下设置:
10.0.0.0/16 -> local
0.0.0.0/0 -> igw-67e14203 (Internet Gateway)
10.0.0.0/16 -> local
0.0.0.0/0 -> igw-67e14203
通过上述设置,负载均衡器工作正常,我可以从公共互联网访问Web服务器URL和应用程序。但是,使用此设置,私有子网(10.0.2.0/24,10.0.3.0/24,10.0.4.0/24)中的服务器无法访问本地网络之外的任何内容 - 甚至不能访问AWS yum存储库。
当我将私有子网的路由表更改为:
10.0.0.0/16 -> local
0.0.0.0/0 -> nat-0a71345c417d7758a
ELB的配置如下:
"AppServerLoadBalancer": {
"Type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
"Properties": {
"Scheme": "internet-facing",
"Tags": [
{
"Key": "environment",
"Value": {
"Ref": "Environment"
}
}
],
"SecurityGroups": [
{
"Ref": "LoadBalancerSecurityGroup"
}
],
"Subnets": [
{
"Ref": "AppServerSubnetAZ0"
},
{
"Ref": "AppServerSubnetAZ1"
},
{
"Ref": "AppServerSubnetAZ2"
}
]
}
}
子网AppServerSubnetAZ0
,AppServerSubnetAZ1
和AppServerSubnetAZ2
是私有子网,其路由指向NAT网关,如前所述。
私有子网中的实例可以访问Internet外部,但LoadBalancer会停止工作。我开始在负载均衡器上获得超时。
网络ACL设置正确,上述两种情况中仅的更改是路由表中的更改。
似乎无法弄清楚出了什么问题?我会假设NAT网关会负责路由负载均衡器流量以及上面的文章/链接吗?
感谢您的帮助!
答案 0 :(得分:0)
我不知道将NAT网关和ELB用于私有子网中的EC2实例是多么可行。
我会建议您保留路由表
... if [HardwareService] = true then ...
使用EC2实例而不是NAT网关实现NAT。
答案 1 :(得分:0)
您误解了引用的文档。
负载均衡器必须位于公有子网上,且实例应位于私有子网上。
当私有子网上的路由指向Internet网关时,为什么这样做?这是一个棘手的问题。如果defaut路由指向Internet网关,它实际上不再是私有子网。它是一个公共子网。
在传统网络方面,不要考虑平衡器及其背后的实例通常位于共同子网上。 VPC不会那样工作。对可用区域内的子网边界的流量没有性能损失,对单个子网内的流量也没有性能优势。