我们正在使用Amazon EC2,并且希望将ELB(负载均衡器)放入私有子网中的2个实例。如果仅将专用子网添加到ELB,它将不会获得任何连接;如果将两个子网都连接到ELB,则它可以访问实例,但通常会超时。是否有人在其VPC的专用子网内成功实现了ELB?如果是这样,您也许可以向我解释该程序吗?
谢谢
Answers:
我和我的队友刚刚在VPC中实现了ELB,该VPC在不同的可用区域中具有2个私有子网。超时的原因是,对于添加到负载均衡器的每个子网,它都会获得一个外部IP地址。(在“ dig elb-dns-name-here”中尝试,您会看到几个IP地址)。如果这些IP地址之一映射专用子网,它将超时。映射到您的公共子网的IP将起作用。因为DNS可以为您提供任何IP地址,所以有时它可以工作,有时则超时。
经过与亚马逊的来回交流,我们发现ELB应该仅放置在“公共”子网中,即具有通往Internet网关的路由的子网。我们希望将Web服务器保留在专用子网中,但允许ELB与它们通信。为了解决这个问题,我们必须确保在每个拥有私有子网的可用区中都有一个对应的公共子网。然后,我们将每个可用区的公共子网添加到ELB中。
最初,这似乎不起作用,但是在尝试了所有内容之后,我们重新创建了ELB,并且一切正常。我认为这是一个错误,或者说ELB处于如此多的变化之中,只是处于一种奇怪的状态。
这或多或少是我们所做的:
希望对您有所帮助!
OutOfService
因为我在Public Subnet中没有任何实例,实例计数显示为0。如果同时添加两个实例,则该实例运行正常,但是然后我会遇到超时问题。我想念什么吗?有人可以帮忙吗?
此处的关键是要了解,您不是要在ELB中“添加子网/可用性区域”,而是要指定将ELB实例放入哪个子网中。
是的,ELB是一个软件负载平衡器,创建ELB对象时,会将自定义负载平衡EC2实例放入您指定的所有子网中。因此,为了使ELB(其实例)可访问,必须将其放入具有通过IGW配置的默认路由的子网中(最有可能将这些子网归为公共子网)。
因此,正如上面已经回答的那样,您必须为ELB指定“公共”网络,并且这些网络应该来自运行EC2实例的AZ。在这种情况下,ELB实例将能够访问您的EC2实例(只要正确配置了安全组)
我们已经在私有子网中实现了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/。
您必须添加以下设置。
诀窍是路由:
ELB详细信息:
1.区域:公共子网区域c 2.实例:服务器Web 3.安全组:启用端口
http://docs.amazonaws.cn/zh_CN/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForVPC.html