![远程有序关闭 EC2 实例?](https://linux22.com/image/546005/%E8%BF%9C%E7%A8%8B%E6%9C%89%E5%BA%8F%E5%85%B3%E9%97%AD%20EC2%20%E5%AE%9E%E4%BE%8B%EF%BC%9F.png)
我正在编写一个使用 ec2-terminate-instances 远程关闭 EC2 实例的脚本。我想执行有序关闭(类似于 Linux 'shutdown' 命令触发的关闭),而不是简单地关闭电源。这样我就有时间关闭正在运行的服务并正确卸载 EC2 卷。
不幸的是,如果不做大量额外工作,我无法使用 SSH 登录这些实例。有没有一种简单的方法可以触发远程有序关机?或者我需要编写某种驻留在服务器上的控制守护进程,当我想关闭服务器时可以触发它?
答案1
已使用 API 停止或终止的 EC2 实例将收到适当的命令,这些命令可被电源守护程序拦截并用于启动关机。大多数 AMI 和默认操作系统已经知道在收到这些信号时该做什么。在台式计算机上也是如此,电源按钮会发送一条请求关机的特殊消息。API 终止命令不会对实例进行这样的“拔掉插头”。
答案2
看看 ec2-stop-instances!这会执行 shutdown -h now 并将实例发送到停止状态,但不会终止实例。如果您想终止实例,请在此后使用 ec2-terminate-instances。
答案3
事实证明,ec2-terminate-instances
做执行有序关机。这是我tail -f /var/log/messages
在远程关机期间运行系统时看到的内容:
Apr 11 15:11:40 domU-12-31-39-09-9E-53 shutdown[22770]: shutting down for system halt
The system is going down for system halt NOW!9E-53 (Mon Apr 11 15:11:40 2011)
Apr 11 15:11:40 domU-12-31-39-09-9E-53 init: Switching to runlevel: 0
Apr 11 15:11:41 domU-12-31-39-09-9E-53 avahi-daemon[988]: Got SIGTERM, quitting.
Apr 11 15:11:41 domU-12-31-39-09-9E-53 avahi-daemon[988]: Leaving mDNS multicast group on interface eth0.IPv6 with address fe80::1031:39ff:fe09:9e53.
Apr 11 15:11:41 domU-12-31-39-09-9E-53 avahi-daemon[988]: Leaving mDNS multicast group on interface eth0.IPv4 with address 10.210.161.157.
Connection to 50.17.174.93 closed by remote host.
Connection to 50.17.174.93 closed.
因此无需执行任何特殊操作。实例将以有序方式关闭并在完成后消失。