Amazon ec2 VPC中的亚马逊ELB

Amazon ec2 VPC中的亚马逊ELB,amazon-ec2,amazon-web-services,vpc,amazon-elb,amazon-vpc,Amazon Ec2,Amazon Web Services,Vpc,Amazon Elb,Amazon Vpc,我们使用的是AmazonEC2,我们希望在一个私有子网上为2个实例安装一个ELB(负载平衡器)。如果我们只是将私有子网添加到ELB,它将不会获得任何连接,如果我们将两个子网都连接到ELB,那么它可以访问实例,但它通常会超时。是否有人在其专有网络的专用子网内成功实施了ELB?如果是的话,你能给我解释一下程序吗 谢谢我和我的队友刚刚在一个VPC中实施了ELB,在不同的可用性区域中有两个专用子网。出现超时的原因是,对于添加到负载平衡器的每个子网,它都会获得一个外部IP地址。(尝试“dig elb dn

我们使用的是AmazonEC2,我们希望在一个私有子网上为2个实例安装一个ELB(负载平衡器)。如果我们只是将私有子网添加到ELB,它将不会获得任何连接,如果我们将两个子网都连接到ELB,那么它可以访问实例,但它通常会超时。是否有人在其专有网络的专用子网内成功实施了ELB?如果是的话,你能给我解释一下程序吗


谢谢

我和我的队友刚刚在一个VPC中实施了ELB,在不同的可用性区域中有两个专用子网。出现超时的原因是,对于添加到负载平衡器的每个子网,它都会获得一个外部IP地址。(尝试“dig elb dns name here”,您将看到多个IP地址)。如果其中一个IP地址映射到一个私有子网,它将超时。映射到公共子网的IP将正常工作。因为DNS可能会给您任何一个IP地址,所以有时会工作,有时会超时

在与amazon进行了一些往返之后,我们发现ELB应该只放置在“公共”子网中,即具有通向Internet网关的路由的子网中。我们希望将web服务器保留在我们的私有子网中,但允许ELB与它们通信。为了解决这个问题,我们必须确保每个可用区域都有一个对应的公共子网,其中我们有私有子网。然后,我们将每个可用性区域的公共子网添加到ELB中

起初,这似乎不起作用,但在尝试了一切之后,我们重新创建了ELB,一切都正常工作。我认为这是一个错误,或者ELB只是在一个奇怪的状态,因为有这么多的变化

以下是我们所做的工作:

  • WebServer-1正在可用区us-east-1b的PrivateSubnet-1中运行,安全组名为web server
  • WebServer-2正在可用区us-east-1c的PrivateSubnet-2中运行,安全组名为web server
  • 在us-east-1b区创建了一个公共子网,我们称之为PublicSubnet-1。我们确保将包含到Internet网关(ig-xxxxx)的路由的路由表与此新子网相关联。(如果使用向导创建公共/私有VPC,则此路由已存在。)
  • 在us-east-1c区创建了一个公共子网,我们称之为公共子网-2。我们确保将包含到Internet网关(ig-xxxxx)的路由的路由表与此新子网相关联。(如果使用向导创建公共/私有VPC,则此路由已存在。)
  • 创建了新的ELB,并将其添加到PublicSubnet-1和PublicSubnet-2(不是PrivateSubnet-X)。此外,还选择了要在ELB中运行的实例,在本例中为WebServer-1和WebServer-2。确保分配一个允许传入端口80和443的安全组。让我们把这个组称为elb组
  • 在web服务器组中,允许来自elb组的端口80和443的流量
    我希望这有帮助

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

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


    建议阅读以下内容以启动VPC体系结构:。

    您必须添加以下设置

  • 公用子网区域b=服务器NAT
  • 专用子网区域c=服务器Web
  • 公用子网区域c=ELB
  • 诀窍在于路由:

  • NAT的路由器与网关A连接
  • 路由器到服务器Web连接到NAT
  • 到公用子网的路由器与网关A连接
  • ELB详细信息:

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


    这里的关键在于理解,您不是在向ELB“添加子网/可用性区域”,而是指定要将ELB实例放入哪些子网

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


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

    这是一个很好的相关信息来源:很抱歉,我只能投一票。谢谢在过去的两个小时里,我一直在努力解决这个问题。如果我能投上一百万次,我会的。谢谢你!那么您的Web服务器同时在公共和私有网络中?我面临着完全相同的问题,但我仍然感到震惊。如果我添加了PublicSubnet-X(不是PrivateSubnet-X),那么我连接到ELB的实例将退出服务,因为我在公有子网中没有任何实例,实例计数显示为0。如果我同时添加这两个实例,那么实例将正常运行,但是我将面临超时问题。我错过什么了吗?有人能帮忙吗?你的第一句话很重要。AWS控制台在这方面并不直观。如果在公共子网中部署ELB,当您在私有子网中看不到EC2实例时,人们会认为您做错了什么。我还发现以下说明很有帮助: