77

我们正在使用 Amazon EC2,我们希望将 ELB(负载均衡器)放置在私有子网上的 2 个实例上。如果我们只是将私有子网添加到 ELB,它不会获得任何连接,如果我们将两个子网都附加到 ELB,那么它可以访问实例,但它通常会超时。是否有人在其 VPC 的私有子网中成功实施了 ELB?如果是这样,您能否向我解释一下程序?

谢谢

4

4 回答 4

195

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

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

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

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

  1. WebServer-1 在可用区 us-east-1b 的 PrivateSubnet-1 中运行,安全组名为 web-server。
  2. WebServer-2 在可用区 us-east-1c 的 PrivateSubnet-2 中运行,安全组名为 web-server。
  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-server 组中,允许来自 elb-group 的端口 80 和 443 的流量。

我希望这会有所帮助!

于 2012-03-09T17:02:29.870 回答
17

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

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

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

于 2016-01-08T21:22:55.457 回答
5

我们已经在私有子网中实现了 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/

于 2014-11-18T19:54:57.790 回答
2

您必须添加以下设置。

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

诀窍是路由:

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

ELB详细信息:

1.Zone:公共子网zone c 2.Instance:Server Web 3.Security Groups:启用端口

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

于 2015-05-30T03:00:32.300 回答