即使公共IP地址可能发生变化,Amazon EC2实例也可以拥有静态公共DNS吗?

时间:2016-01-02 06:56:31

标签: linux amazon-web-services amazon-ec2 dns noip

请注意,我希望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还是类似的第三方服务?或者我找不到隐藏的宝藏?

1 个答案:

答案 0 :(得分:9)

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

宠物有名字,当宠物生病时,将它们带到兽医处并让它们恢复健康。鸡农(无论如何都是大鸡),不要给他们的鸡命名,当他们生病时他们不会把它们带到兽医那里 - 他们让他们死了,然后在他们的地方放一个新的(我知道,残酷的类比) ,但重点是正确的。)

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

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