![AWS ALB 解析为 2 个 IP。它们是什么?](https://linux22.com/image/729986/AWS%20ALB%20%E8%A7%A3%E6%9E%90%E4%B8%BA%202%20%E4%B8%AA%20IP%E3%80%82%E5%AE%83%E4%BB%AC%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我已经为我的应用程序设置了 AWS ALB。ALB 连接到具有 2 个实例的 AWS ECS 集群。这 2 个实例位于私有子网中。当我解析 ALB DNS 名称的 IP 时,我得到了 2 个 IP。这些 IP 可用于访问我的应用程序。
这些 IP 是什么?我在 ALB 控制台或 ECS 控制台中找不到任何这些 IP。
我计划为这个 ALB 创建自己的域名,并且不使用 AWS Route53。我计划使用自己的域名或已有的子域名。所以我想检查这些 IP 是 ALB 的 IP 还是我的底层 EC2 实例的 IP。
任何有关 ALB IP 的信息都将受到赞赏。
答案1
ALB 是中间人在您的用户和服务器之间。用户通过 ALB 的公共 IP 地址连接到 ALB,然后 ALB 通过私有 IP 连接到您的 ECS 服务器。
解析 ALB 主机名时看到的 IP 地址是公共 IP。这就是您的用户使用您的服务所需要连接的,也是最终必须由您的域名解析的(例如demo.example.com)。
然而不要将您解析的实际 IP 放入您的demo.example.comDNS 记录!ALB IP会随着时间而改变根据负载和其他因素!
正确的方法是创建一个CNAME 记录指向 ALB 主机名。AWS 会在 ALB DNS 记录中的 IP 发生变化时自动更新它们,并且由于您的 demo.example.com 仅引用ALB 主机名而不是实际的ALB IP 地址一切都将按预期进行。
因此您需要创建:
demo.example.com. CNAME your-alb-abcdefgh.us-east-1.elb.amazonaws.com.
然后当你的用户尝试解决时,demo.example.com
他们会得到这样的答案:“我不知道 IP,请解析your-alb-abcdefgh.us-east-1.elb.amazonaws.com
。”。然后解析your-alb-...elb.amazonaws.com
将返回当前有效的 ALB IP 地址。
我知道如果你对 DNS 的经验有限,可能会有点困惑。请随时询问澄清 :)
更新:您会看到 2 个外部 IP,因为 ALB 必须位于至少 2 个不同的子网实现高可用性。创建 ALB 时,您已选择子网:
您可以选择更多可用区域/子网,在这种情况下您将拥有更多公共 IP。但最低为 2 个。
希望有帮助:)