Amazon ELB用于VPC中私有子网中的EC2实例

man*_*h_s 47 amazon-ec2 vpc amazon-web-services amazon-elb amazon-vpc

我正在使用Amazon EC2,我想将面向Internet的ELB(负载均衡器)放到私有子网上的2个实例上.我正在使用VPC与公共和私人子网.

  • 如果我只是将私有子网添加到ELB,它将不会获得任何连接.
  • 如果我将两个子网连接到ELB,那么它可以访问实例,但它通常会超时.(参见截图1)
  • 如果我只附加到公共子网,那么附加到ELB的实例将获得OutOfService,因为我在公共子网中没有任何实例,实例计数显示为0. (请参阅屏幕截图2)

屏幕截图1:两个子网都附加了 两个子网都附加了

屏幕截图2:仅附加公共子网 仅附加公共子网

我的问题实际上是这个问题的延伸.按照接受的答案中提到的所有6个步骤后,我仍然受到打击,我附加到ELB的实例获得了OutOfService.我甚至尝试过允许EC2实例和ELB的安全组中的端口,但它没有帮助.

请帮帮忙,我突然想到这个.

Ben*_*ley 72

您引用的另一个SO问题是现货.双/三检查以下内容

  • 您只需要将公共子网连接到ELB,确保可用区域的子网与您的实例所在的私有子网的可用区域对齐.
  • 确保实例的安全组允许从负载均衡器的安全组进行访问
  • 确保您的运行状况检查在实例上本地运行.例如,如果您在ELB中的运行状况检查是HTTP:8080/health_check,您可以在实例上curl x.x.x.x:8080/health_check(实例x.x.x.x的私有IP),并获得200响应代码.
  • 公有子网路由表应路由0.0.0.0/0到连接到VPC的Internet网关.
  • 私有子网路由表应路由0.0.0.0/0到公有子网中的NAT实例或网关

  • @BenWhaley是对的.要稍微扩展一下:您的ELB应该只在公共子网上,并且只在与您的实例相同的可用区域中的子网上. (3认同)
  • 我在屏幕截图1中注意到健康实例位于AZ ap-southeast-1b.确保ELB的公有子网位于同一区域中.例如,ELB的公共子网位于ap-southeast-1b,私有子网位于ap-southeast-1b.如果区域不匹配则无效. (2认同)
  • 跨区域确保一个区域内的负载平衡器接口将流量发送到其他AZ中的实例.[文件](http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-disable-crosszone-lb.html) (2认同)
  • 之所以有此要求,是因为 AWS 在与 ELB 关联的每个子网中放置了一个 ELB“节点”。这些节点的网络接口具有公共IP并且需要能够与互联网通信,因此需要位于具有IGW路由的子网中。 (2认同)