Amazon-Ec2

關閉自動擴展組的 EC2 實例時有什麼缺點嗎?

  • October 12, 2019

我希望 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 中脫離要有序。

引用自:https://serverfault.com/questions/987748