为什么 EC2 实例放在 ALB 前面时需要公共 IP?

问题描述 投票:0回答:2

正如我一直在研究的,有两种方法可以将 EC2 实例放置在给定可用区中的 ALB 前面:

  1. 将它们放置在该可用区中 ALB 引用的相同公共子网中 + 为它们提供公共 IP

  2. 将它们放置在私有子网中+创建 NAT 网关,即该可用区中 ALB 引用的公有子网

我希望能够将 ALB 放置在没有公共 IP 的 EC2 实例前面,例如,ALB 引用的公共子网中没有公共 IP 的 EC2 实例

当我尝试执行此操作时,ALB 会说我的 EC2 实例运行状况不佳,但是当我为该实例提供公共 IP 时,ALB 几乎立即会说它运行状况良好

为什么会这样?直到现在堆栈溢出似乎还没有解决这个问题(this似乎是迄今为止唯一的答案)

amazon-web-services amazon-ec2 amazon-vpc aws-application-load-balancer private-subnet
2个回答
1
投票

当 ALB 说 ec2 实例不健康时,这意味着两者之一:-

  1. health check
    的配置需要检查端口号、协议、路径。

  2. 其次,您

    don't need
    将没有公共IP的私有IP分配给ALB后面的ec2实例,因为Ec2实例安全组应配置为允许来自ALB安全组的入站连接,称为
    referencing security group
    这意味着ec2实例将不会接受 ALB 以外的连接。

因此,您不需要为您的 ec2 实例分配私有 IP,因为如果您尝试通过其公共 IP 访问您的实例,它不会响应d。


0
投票

原因是没有公网IP的EC2实例无法下载软件包。尽管 EC2 实例位于具有互联网网关的公有子网中,但它无法访问互联网,因为互联网网关使用关联资源的公共 IP。例如,如果您从具有公共子网中公共 IP 的 EC2 实例向 http://ifconfig.me 发出curl 请求,您将看到它返回 EC2 实例本身的公共 IP。因此,互联网网关充当互联网的网关,但不使用自己的 IP。

相比之下,NAT 网关拥有自己的公共 IP,然后与 Internet 网关关联。这意味着当您从私有子网中的 EC2 实例向 http://ifconfig.me 发出curl 请求时,您将看到与 NAT 网关关联的公共 IP。

由于我们无法在公网子网中添加目标为 NAT 网关、目的地为 0.0.0.0/0 的路由,因此上述场景是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.