66

我正在使用 Amazon EC2,并且我想将面向 Internet 的 ELB(负载均衡器)放置到私有子网上的 2 个实例中。我将 VPC 与公共子网和私有子网一起使用。

  • 如果我只是将私有子网添加到 ELB,它不会获得任何连接。
  • 如果我将两个子网都附加到 ELB,那么它可以访问实例,但它通常会超时。(参考截图 1)
  • 如果我只附加到公有子网,那么我附加到 ELB 的实例会出现服务中断,因为我在公有子网中没有任何实例,实例计数显示为 0。(请参阅屏幕截图 2)

屏幕截图 1:连接的两个子网 连接的两个子网

屏幕截图 2:仅附加了公共子网 仅附加公共子网

我的问题实际上是对这个问题的延伸。在接受了答案中提到的所有 6 个步骤之后,我仍然感到震惊,我附加到 ELB 的实例得到了服务中断。我什至尝试在 EC2 实例和 ELB 的安全组中允许端口,但它没有帮助。

请帮忙,我对此感到头疼。

4

2 回答 2

95

您引用的另一个 SO 问题是正确的。双重/三重检查以下

  • 您只需将公有子网附加到 ELB,确保这些子网的可用区与您的实例所在的私有子网的可用区一致。
  • 确保您的实例的安全组允许从负载均衡器的安全组进行访问
  • 负载均衡器安全组应具有允许运行状况检查到达实例的出口规则
  • 确保您的运行状况检查在实例本地运行。例如,如果您在 ELB 中的健康检查是HTTP:8080/health_check,您可以在实例上curl x.x.x.x:8080/health_check(实例的私有 IP 在哪里x.x.x.x)并获得 200 响应代码。
  • 公共子网路由表应路由0.0.0.0/0到连接到您的 VPC 的互联网网关。
  • 私有子网路由表应路由0.0.0.0/0到公有子网中的 NAT 实例或网关
于 2014-03-20T18:34:07.203 回答
2

另一个 SO 问题也帮助了我。对我来说,我一直忘记我需要将软件安装到服务器(即 Apache),如果您不创建 NAT GW 或其他允许软件安装的方法,它将失败。如果你想尝试一种没有太多麻烦的自动化方式,你可以尝试一个脚本:

https://github.com/jouellnyc/AWS/tree/master/create_aws_vpc3

请注意,已经有很多好的文档和讨论,但是:

我从 ELB 获得的 HTTP 代码:

  • 504 - 可能是安全组 - 允许访问实例的端口 80
  • 503 - 可能是错误的目标组设置
  • 502 - 可能 Apache/Server 未运行 b/c 它未安装,因为没有 nat gw 或安装软件的方法。
于 2018-12-20T02:41:10.827 回答