我注意到调用ec2.rebootInstances
Amazon EC2 实例比停止并重新启动它要快得多(ec2.stopInstances ec2.startInstances
)。
它还保留了实例的 IP 地址(我没有弹性 IP)ec2.rebootInstance 所做的与停止和启动实例有何不同?
答案1
当您停止 EBS 启动实例时,您将放弃服务器正在运行的物理硬件(或其一部分),并且 EC2 可以自由地在那里启动其他人的实例。
您的 EBS 启动卷(和其他附加的 EBS 卷)仍会保留,但它们实际上并未绑定到物理或虚拟服务器。它们只是与不在任何地方运行的实例 ID 相关联。
当您再次启动实例时,EC2 会选择一些硬件来运行它,绑定 EBS 卷并从根卷再次启动它。
当你停止/开始时发生变化的事情包括:
新的内部 IP 地址(尽管可能随机相同)。
新的外部 IP 地址(但可能随机相同)。
如果在实例停止之前已将弹性 IP 地址与其关联,则您需要在启动后重新关联该地址。
实例以前的临时存储上的所有内容都将被清除,并且您将获得新的临时存储。
您可以让实例停止运行任意长的时间,并且不会因运行时间而收取费用(尽管 EBS 卷存储的费用要低得多)。请参阅下一点。
再次启动实例时,将开始新的计费小时。例如,如果您启动一个新实例,然后在前 60 分钟内停止/启动它 3 次,则将收取 4 小时的费用,而不是 1 小时的费用。
当您想要重新启动实例时,EC2 可能会没有正确实例类型的可用插槽来运行您的实例。我遇到过这种情况,并暂时切换到其他可用实例类型以使其再次运行。
重新启动时,只需在操作系统级别进行简单的重新启动,实例将继续在相同的硬件上运行,具有相同的私有和公共 IP 地址,保留相同的弹性 IP 地址(如果已关联),并保留相同的临时存储而不会被擦除。重新启动时不会开始新的计费时间,您也不会放弃实例硬件。
当实例停止时,您可以在重新启动之前做一些很酷的事情。这是我写的一篇关于在实例停止时更改实例类型的文章:
将 EC2 实例移动到更大的尺寸
http://alestic.com/2011/02/ec2-change-type
这是我写的一篇关于如何在实例停止时更改其 EBS 启动盘大小的文章:
调整正在运行的 EBS Boot EC2 实例上的根磁盘大小
http://alestic.com/2010/02/ec2-resize-running-ebs-root
这是我写的一篇文章,介绍在实例运行时无法连接时如何检查实例的根磁盘(在实例停止时):
修复 EC2 实例的根 EBS 卷上的文件
http://alestic.com/2011/02/ec2-fix-ebs-root
由于停止/启动循环很有可能将您的实例移至新硬件,因此如果您怀疑当前平台可能出现故障并导致问题,这是一种更换实例硬件的简单方法。这是我写的一篇文章:
更换 EC2 实例硬件的更简单方法
http://alestic.com/2011/02/ec2-move-hardware