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

时间:2014-03-20 18:23:04

标签: amazon-web-services amazon-ec2 amazon-elb amazon-vpc vpc

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

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

屏幕截图1:两个子网都已附加 Both subnets attached

屏幕截图2 :仅附加公有子网 Only public subnet attached

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

请帮助,我对此感到失望。

2 个答案:

答案 0 :(得分:69)

你引用的另一个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实例或网关

答案 1 :(得分:0)

另一个SO问题也对我有帮助。对我而言,我一直忘记需要在服务器(即Apache)上安装软件,如果您不创建NAT GW或其他允许软件安装的方法,它将失败。如果您想尝试没有麻烦的自动化方式,可以尝试使用脚本:

https://github.com/jouellnyc/AWS/tree/master/create_aws_vpc3

请注意,已经有很多好的文档和讨论,但是:

我从ELB获得的HTTP代码:

  • 504-可能是安全组-允许访问实例的端口80
  • 503-可能是错误的目标组设置
  • 502-可能没有安装b / c的Apache /服务器,因为没有nat gw或安装软件的方法,因此未安装。