Autoscaling

為 ECS 任務創建/銷毀 EC2 實例

  • November 29, 2019

我有各種 Fargate 任務。他們工作正常。然後,我還有一些額外的任務需要比愚蠢的舊 Fargate 允許的更多磁碟空間。這些必須在我分配給它們各自集群的 EC2 實例上執行。

我使用 cloudwatch 事件觸發這些任務。

因為我的這些 EC2 支持的任務很少,所以讓這些 EC2 實例坐在那裡似乎很愚蠢。

我的想法是按需創建/銷毀 EC2 實例,可能是使用 Lambda。

我建議的順序:

  • Cloudwatch 開始活動
  • Lambda 自動將 ECS 集群的 EC2 實例擴展到 1
  • EC2 Cloudwatch 就緒事件
  • ECS 任務啟動
  • ECS 任務完成並觸發 Cloudwatch 事件
  • Lambda 縮小集群

這可行嗎?有沒有模式或更好的方法來做到這一點?如果有辦法直接從 cloudwatch 事件觸發自動縮放,也許 Lambda 函式是不必要的?

請注意,這些任務沒有被安排,所以這不是安排自動縮放的問題

使用 AWS 批處理。它是專為您的情況設計的服務,可由 CloudWatch Events 觸發

那應該可以正常工作。您還可以在 EC2 ASG 所需容量移除步驟的同時提高 ECS 服務所需容量,除非您正在啟動獨立任務。ECS 服務將繼續嘗試啟動任務,直到實例註冊到集群。

您如何知道何時需要啟動任務/實例,觸發條件是什麼?無論是什麼,您都可以使用它直接觸發 Lambada 功能。或者,如果它是 CloudWatch 指標,則跳過 CW 事件和 Lambda 函式,並讓 CW 警報直接增加 ASG 和 ECS 所需的容量(或者,如果啟動因素是 SQS 隊列中的某個東西)

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