Amazon-Ec2
關閉自動擴展組的 EC2 實例時有什麼缺點嗎?
我希望 EC2 實例在 24 小時後自動終止。
我使用在實例啟動時執行的腳本來執行此操作:
shutdown | at now + 24 hours
當實例終止時,實例會關閉並且 EBS 卷也會終止,所以這很好。
在控制台中,實例在一段時間內被指示為不可訪問,直到它被聲明為終止。我想知道以這種方式關閉實例是否是不好的做法,以及使用 AWS CLI 終止它是否會更好。
文件說:
當使用 terminate-instances 命令終止 EC2 實例時,會在作業系統級別註冊以下內容:
- API 請求將向客人發送按鈕按下事件。
- 按鈕按下事件將停止各種系統服務。systemd 處理系統的正常關閉。正常關閉由管理程序中的 ACPI 關閉按鈕按下事件觸發。
- 將啟動 ACPI 關閉。
- 當正常關閉程序退出時,實例將關閉。沒有可配置的作業系統關閉時間。
該實例位於執行 REST Web 服務的自動縮放組中,因此很可能有正在執行的請求。
- 仍在執行的請求會發生什麼?(REST 服務有 30 秒的超時時間,因此請求的執行時間不會超過此時間。)
- 終止的
shutdown
順序是否不如 AWS CLI 或自動擴展組終止?
在關機前 1-2 分鐘使用 detach-instances api 從自動縮放組中刪除實例。detach-instances api 還將從負載均衡器中刪除實例(如果已連接),請參閱https://docs.aws.amazon.com/en_pv/autoscaling/ec2/userguide/detach-instance-asg.html了解更多資訊。
範例:
aws 自動縮放分離實例 –instance-ids i-05b4f7d5be44822a6 \ –auto-scaling-group-name my-asg –should-decrement-desired-capacity
如果您不從負載均衡器中刪除實例,則在實例上執行的任何正在進行的請求都會出錯,因為當實例的作業系統在偵聽過程中關閉 tcp 連接時,負載均衡器將看到連接關閉事件。終止。
所以,是的,通過關機終止比從 ASG 中脫離要有序。