6

请注意,我希望 AWS 为我的 EC2 实例分配静态 IP 地址。请花时间阅读问题。

每次我停止和启动我的 EC2 实例时,Amazon AWS 都会分配一个新的 IP 地址,我对此很满意。但是,Amazon AWS 也会根据该 IP 地址分配一个公共 DNS 主机名。这完全违背了首先拥有主机名的目的,因为主机名应该可以帮助您找到服务器,即使其 IP 地址已更改。

例如,如果 IP 地址是12.34.56.78,AWS 会分配一个公有 DNS 名称,如下所示:

ec2-12-34-56-78.ap-location-1.compute.amazonaws.com

我曾假设有一个选项可以获得一个固定的公共 DNS,亚马逊可以在内部解析到正确的实例,就像我想象的例子:

ec2-myinstance1-112233445566.ap-location-1.compute.amazonaws.com

myinstance1我在 EC2 控制台中定义的实例名称在哪里,并且112233445566是我的账户 ID。

这样,即使公共 IP 地址更改为23.45.67.89,公共 DNS 也将保持与基于固定详细信息的完全相同。

我注意到使用名为“No-IP”的外部第三方服务可以进行类似的设置。但这会产生外部依赖性,并且需要在实例中的操作系统级别进行配置,以启动守护程序服务来进行更新。听起来AWS端的IP地址更改和No-IP端的相应更新之间可能存在延迟。(试了一下,它给出了一个简短而整洁的地址,例如myhostname.ddns.net。这现在应该可以工作,并且操作系统级别的配置非常简单明了。)

但是亚马逊 AWS 无论如何都应该能够在内部管理它(因为实例标识符是 的子子域),而amazonaws.com实例操作系统本身绝对没有变化。

他们为什么不提供这个选项?使用 No-IP 或类似的第三方服务是这里唯一的方法吗?还是我没有找到隐藏的宝藏?

4

1 回答 1

0

当人们提出问题时,我永远无法理解,而问题的前提是“我知道这个问题的解决方案是什么,但我不想使用它”——解决方案是分配一个弹性 IP——即弹性 IP 将为您做什么 - 即为您提供一个您可以分配和使用的 IP,无论底层实例如何...也就是说,一般来说,我经常听到 AWS 演讲者使用您需要像对待服务器一样的类比养鸡农对待他们的鸡,不像家人对待它的宠物。

宠物有名字,当宠物生病时,你带它们去看兽医,让它们恢复健康。养鸡者(无论如何都是大的),不要给他们的鸡起名字,他们生病时也不会带它们去看兽医 - 他们让它们死去,并在它们的位置放上一个新的(我知道,残酷的类比,但这一点是正确的)。

您不命名您的服务器 - 它们是一次性的。Web 服务器(例如)通常位于负载均衡器之后,它们在自动缩放组内启动和停止,并且当实例成为或离开 ASG 的一部分时,负载均衡器会收到通知 - 这就是您管理服务器的方式,它们不需要有名字。

如果您绝对肯定必须像对待宠物一样对待您的服务器并为其命名,那么请使用 AWS 提供的设施 - 一个弹性 IP,这是最简单的解决方案。(是的,EIP 是一项付费服务​​,就像所有其他 AWS 服务一样——它们毕竟是一项业务),如果您真的不想使用 EIP 选项,那么运行自定义脚本的负担就在于您的实例开始使用新的 IP 地址更新您的 route-53/dns 记录。

于 2016-01-02T09:41:18.837 回答