VPC中的Amazon ELB


73

我们正在使用Amazon EC2,并且希望将ELB(负载均衡器)放入私有子网中的2个实例。如果仅将专用子网添加到ELB,它将不会获得任何连接;如果将两个子网都连接到ELB,则它可以访问实例,但通常会超时。是否有人在其VPC的专用子网内成功实现了ELB?如果是这样,您也许可以向我解释该程序吗?

谢谢

Answers:


189

我和我的队友刚刚在VPC中实现了ELB,该VPC在不同的可用区域中具有2个私有子网。超时的原因是,对于添加到负载均衡器的每个子网,它都会获得一个外部IP地址。(在“ dig elb-dns-name-here”中尝试,您会看到几个IP地址)。如果这些IP地址之一映射专用子网,它将超时。映射到您的公共子网的IP将起作用。因为DNS可以为您提供任何IP地址,所以有时它可以工作,有时则超时。

经过与亚马逊的来回交流,我们发现ELB应该仅放置在“公共”子网中,即具有通往Internet网关的路由的子网。我们希望将Web服务器保留在专用子网中,但允许ELB与它们通信。为了解决这个问题,我们必须确保在每个拥有私有子网的可用区中都有一个对应的公共子网。然后,我们将每个可用区的公共子网添加到ELB中。

最初,这似乎不起作用,但是在尝试了所有内容之后,我们重新创建了ELB,并且一切正常。我认为这是一个错误,或者说ELB处于如此多的变化之中,只是处于一种奇怪的状态。

这或多或少是我们所做的:

  1. WebServer-1在可用性区域us-east-1b的PrivateSubnet-1中运行,其安全组称为Web服务器。
  2. WebServer-2在可用性区域us-east-1c的PrivateSubnet-2中运行,其安全组称为Web服务器。
  3. 在us-east-1b区域中创建了一个公共子网,我们将其称为PublicSubnet-1。我们确保将包含到Internet网关(ig-xxxxx)的路由的路由表与此新子网相关联。(如果使用向导创建公用/专用VPC,则此路由已存在。)
  4. 在us-east-1c区域中创建了一个公共子网,我们将其称为PublicSubnet-2。我们确保将包含到Internet网关(ig-xxxxx)的路由的路由表与此新子网相关联。(如果使用向导创建公用/专用VPC,则此路由已存在。)
  5. 创建了一个新的ELB,向其中添加了PublicSubnet-1和PublicSubnet-2(不是PrivateSubnet-X)。另外,选择要在ELB中运行的实例,在本例中为WebServer-1和WebServer-2。确保分配一个允许进入端口80和443的安全组。让我们将此组称为elb-group。
  6. 在Web服务器组中,允许来自elb-group的端口80和443的流量。

希望对您有所帮助!



5
我感到遗憾的是我只能提出一个建议。谢谢!在过去的两个小时中,我一直用头撞墙,以解决这个问题。
Cfreak

2
如果我能对此投票一百万次,那我会。谢谢你这么!
Craig Watson

1
那么您的Web服务器在公共网络还是私有网络中?
米歇尔·费尔德海姆

1
我面临着完全相同的问题,但我仍然感到震惊。如果我添加PublicSubnet-X(而不是PrivateSubnet-X),则附加到ELB的实例将获得,OutOfService因为我在Public Subnet中没有任何实例,实例计数显示为0。如果同时添加两个实例,则该实例运行正常,但是然后我会遇到超时问题。我想念什么吗?有人可以帮忙吗?
manish_s 2014年

16

此处的关键是要了解,您不是要在ELB中“添加子网/可用性区域”,而是要指定将ELB实例放入哪个子网中。

是的,ELB是一个软件负载平衡器,创建ELB对象时,会将自定义负载平衡EC2实例放入您指定的所有子网中。因此,为了使ELB(其实例)可访问,必须将其放入具有通过IGW配置的默认路由的子网中(最有可能将这些子网归为公共子网)。

因此,正如上面已经回答的那样,您必须为ELB指定“公共”网络,并且这些网络应该来自运行EC2实例的AZ。在这种情况下,ELB实例将能够访问您的EC2实例(只要正确配置了安全组)


您在第一句话中很重要。在这方面,AWS控制台不直观。它使人们相信,如果将ELB部署在公共子网中,则在私有子网中看不到EC2实例时,您做错了。
杰夫·洛里奇

3

我们已经在私有子网中实现了ELB,因此关于所有ELB必须公开的说法并不完全正确。您确实需要一个NAT。为专用ELB创建专用子网,打开VPC DNS,然后确保将专用路由表配置为通过NAT。还需要设置子网安全组,以允许ELB与App之间以及App与DB子网之间的通信。

Beanstalk运行状况检查无法进行,因为它们无法到达负载平衡器,但是对于需要在公共范围之外访问的服务,这是一个很好的折衷方案。

建议阅读以开始使用VPC架构:http : //blog.controlgroup.com/2013/10/14/guided-creation-of-cloudformation-templates-for-vpc/


2

您必须添加以下设置。

  1. 公共子网区域b =服务器NAT
  2. 专用子网区域c =服务器Web
  3. 公共子网区域c = ELB

诀窍是路由:

  1. 到NAT的路由器与网关A相连。
  2. 服务器Web的路由器连接到NAT。
  3. 到公共子网的路由器与网关A相连。

ELB详细信息:

1.区域:公共子网区域c 2.实例:服务器Web 3.安全组:启用端口

http://docs.amazonaws.cn/zh_CN/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForVPC.html


我还发现这些说明很有
BatteryAcid
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.