2024年8月12日 星期一

how many instances and containers will be launched in AWS ECS service

AWS 彈性容器服務 (ECS) 分成 ECS on Fargate 及 ECS on EC2 兩種。其中,ECS on Fargate 由 Fargate 服務全權負責容器如何配置到個體,屬無伺服器 (serverless)或 託管 (managed)的運算類服務。ECS on EC2 則由用戶自行負責容器如何配置到個體,其服務參數的任務配置(task placement)選項包含: az balanced spread,az balanced binpack,binpack,one task per host,random,custom等。預設 az balanced spread 為先平衡分散到不同的可用區,再平衡分散到可用區內個體。binpack乃依記憶體儘量配置容器到最少數量的個體上,即挑選足夠放置之下,剩餘記憶體最小之個體先放容器。

至於 ECS 到底會啟動幾個虛擬機個體 (instance)及容器 (container)來提供服務,可由如下因素決定: 
  1. 個體數: 由 ECS 叢集參數的個體希望容量(desired capacity) 上下限決定。其實際數量可由叢集的自動伸縮群組(ASG, Auto Scaling Group)參數,依個體負載指標值(metric)變化,在希望容量的上下限之間,採用目標追蹤(target tracking)類型原則,作伸縮調整。
     
  2. 容器數: 由 ECS 部署建立服務的所須任務數 (desired tasks)參數,及建立任務定義時使用的容器數量有多少兩者決定。ECS服務的實際任務數可由服務自動伸縮 (Service Auto Scaling) 參數,依服務負載指標值變化,看是採用目標追蹤(target tracking)類型或步進伸縮(step scaling)類型的原則,作伸縮調整。
Reference:
1. ECS叢集個體自動擴展: Automatically manage Amazon ECS capacity with cluster auto scaling - Amazon Elastic Container Service