我们正在使用Amazon EC2,并且我们希望将ELB(负载平衡器)放在私有子网上的两个实例中。如果我们只是将私有子网添加到ELB,那么它将不会获得任何连接,如果我们将两个子网都连接到ELB,那么它可以访问这些实例,但它往往会得到超时。是否有人在其VPC的私有子网内成功实施了ELB?如果是这样,你可以向我解释一下程序吗?VPC中的Amazon ELB
感谢
我们正在使用Amazon EC2,并且我们希望将ELB(负载平衡器)放在私有子网上的两个实例中。如果我们只是将私有子网添加到ELB,那么它将不会获得任何连接,如果我们将两个子网都连接到ELB,那么它可以访问这些实例,但它往往会得到超时。是否有人在其VPC的私有子网内成功实施了ELB?如果是这样,你可以向我解释一下程序吗?VPC中的Amazon ELB
感谢
我的队友和我已经实现ELB的VPC在不同可用性区域2个私人子网。获取超时的原因是,您为每个添加到负载均衡器的子网获取一个外部IP地址。 (尝试'挖掘elb-dns-name-here',你会看到几个IP地址)。如果其中一个IP地址映射一个私有子网,它将超时。映射到您的公有子网的IP将起作用。由于DNS可能会给你任何一个IP地址,有时它可以工作,有时会超时。
经过一番与亚马逊的来回之后,我们发现ELB应该只放置在'公共'子网中,即具有到Internet网关的路由的子网。我们希望将我们的Web服务器保留在我们的私有子网中,但允许ELB与他们交谈。为了解决这个问题,我们必须确保我们有一个相应的公有子网,用于我们拥有私有子网的每个可用区域。然后,我们向ELB添加了每个可用区域的公有子网。
起初,这似乎不起作用,但在尝试了一切之后,我们重新创建了ELB,并且所有事情都按照原样进行了。我认为这是一个错误,或者ELB由于许多变化而处于一种奇怪的状态。
这里或多或少我们所做的事情:
我希望有帮助!
我们在私人子网中实施了ELB,所以ELB需要公开的声明并不完全正确。你确实需要一个NAT。为私有ELB创建私有子网,打开VPC DNS,然后确保私有路由表配置为通过NAT。还需要设置子网安全组,以允许ELB与App之间以及App与数据库子网之间的通信。
Beanstalk健康检查将无法正常工作,因为它们无法到达负载均衡器,但对于需要在公众范围之外的服务,这是一个很好的折衷方案。
建议阅读以启动您的VPC架构:http://blog.controlgroup.com/2013/10/14/guided-creation-of-cloudformation-templates-for-vpc/。
您必须添加以下设置。
诀窍是路由:
ELB细节:
1.Zone:公共子网C区 2.Instance:服务器Web 3.Security组:启用端口
http://docs.amazonaws.cn/en_us/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForVPC.html
我还发现这些说明很有用:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html#Configuration-2 – BatteryAcid 2017-03-03 05:43:44
这里的关键是理解,你是不是“添加子网/可用性区域”,以ELB,而是指定什么子网把ELB实例进入。
是的,ELB是一个软件负载平衡器,当您创建ELB对象时,将自定义负载平衡EC2实例放入您指定的所有子网中。因此,ELB(它的实例)可以访问,它们必须放入通过IGW配置默认路由的子网中(很可能您将这些子网划分为公共)。
因此,如上所述,您必须为ELB指定“公共”网络,并且这些网络应该来自您的EC2实例正在运行的AZ。在这种情况下,ELB实例将能够到达您的EC2实例(只要安全组配置正确)
您在第一句话中提出了一个重要观点。 AWS控制台在这方面并不直观。如果您在公有子网中部署ELB,那么当您没有从您的私有子网中看到EC2实例时,会导致人们相信您做错了什么。 – 2016-02-13 21:31:01
是的,我们得出了同样的结论,我只是忘了更新它。感谢您的答案:) – 2012-03-25 02:20:53
这是一个很好的相关信息的来源: https://forums.aws.amazon.com/thread.jspa?messageID=453594 – 2013-05-22 15:03:43
我很遗憾,我只有一个upvote给。谢谢!试图弄清楚这一点,我在最后2个小时里把头靠在墙上。 – Cfreak 2013-06-21 05:34:55