EC2:实例的公共DNS是否稳定?我可以依靠它不变吗?


41

我已经启动了我的第一个实例,并将其用作Web服务器。我看到它具有公共DNS(公共URL),例如:

ec2-123-45-6-789.compute-1.amazonaws.com

我可以在浏览器中成功转到该服务器,通过cURL命中它,等等。

我想将此Web服务器用于正在构建的应用程序中的后端服务,因此我将此URL放在了应用程序的配置中,并且效果很好。

但是当我手动停止并重新启动实例时,我看到公共DNS发生了变化!我读到,这是在您明确停止并重新启动时发生的,但如果只是“重新启动”就不会发生。

我不打算明确停止并重新启动该服务器,但我的问题是:此公共DNS是否会因任何原因自行更改?例如,机器是否异常崩溃,或其他原因。

换句话说,运送连接到此URL的应用程序是否安全?

Answers:


67

公用DNS名称始终与公用IP地址匹配。

实例的公用IP地址将保持不变,直到终止或停止为止。重新启动不会更改公共IP地址。

如果EC2实例位于VPC中,则它将在停止和启动期间保留相同的公用IP地址。

如果停止了某个不在VPC中的EC2实例,然后又重新启动,则它可能会收到另一个公共IP地址。

实例可能会失败。当您启动一个新实例来替换一个失败或终止的实例时,它可能会收到一个不同的公共IP地址。

因为实例可能会失败,并且因为您可能想更改实例的大小(使用停止/启动),所以不建议“运送连接到[公共IP地址]的应用程序”(或DNS名称)。一旦您的实例停止/终止/失败,另一个用户便可以将IP地址分配给他们的实例,您的所有流量都将流向他们。

建议使用弹性IP地址将公共服务与您的实例相关联。您可以保留弹性IP地址,并且可以将其分配给您随时间推移所需的任何实例,即使它是停止/启动后的同一实例也是如此。

每个弹性IP地址都带有一个公共DNS名称,但是最好将自己的主机名映射到弹性IP地址,这样名称对人类更有意义。

这是弹性IP地址的指南:

http://aws.amazon.com/articles/1346

这是我写的一篇文章,讨论重新启动实例和停止/启动实例之间的区别:

重新启动与停止/启动Amazon EC2实例
http://alestic.com/2011/09/ec2-reboot-stop-start

这是我写的一篇文章,提供了一个您可能想要停止/启动实例的理由,即使您认为今天不会这样做:

将EC2实例移至更大尺寸
http://alestic.com/2011/02/ec2-change-type


根据信息,我重新启动了ec2实例,只是发现公共DNS更改为新的IP。也许实例在两者之间崩溃了,但是我不确定。
Nicolas Manzini

Amazon仅建议将弹性IP用于负载均衡器。因此,如果您在ec2实例上拥有私有服务,则必须手动更新ips。 docs.aws.amazon.com/AWSEC2/latest/UserGuide/…–
Jesse

@Jesse ELB(弹性负载平衡器)不使用弹性IP地址。实际上,ELB一直在更改IP地址,并且根本无法使其永久不变。弹性IP应用于EC2实例,因此原始问题也正是需要的IP。
埃里克·哈蒙德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.