Autoscaling
為 ECS 任務創建/銷毀 EC2 實例
我有各種 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 隊列中的某個東西)