目標是要透過 ECS 來進行 Auto Scaling Group 的規劃
基礎環境指的是網路環境、容器的內容以及負載均衡器。接下來的操作其實跟 ASG 步驟縮放政策 Step scaling policies - Day15 類似,可以參照該網址,但為方便起見我們還是操作一遍
建置 ECS 叢集 - 請參閱 使用 Container 進行 Auto Scaling Group (1) - Day22
建置 Amazon ECS Task Definitions
此步驟最重要的目的是定義容器要如何運行。進入 ECS 主控台,在左手選單選擇 Task Definition,並在右邊按下 Create new Task Definition
選擇任務啟動模式,請選擇 EC2 模式
Select launch type compatibility: EC2
Configure task and container definitions
Task Definition Name: ithometask1
Task Role: EcsTaskExecutionRole
Network Mode: Bridge
Task execution role: EcsTaskExecutionRole
圖 01、定義任務名稱與網路模式
接下來要定義容器內容,按下 Add container 後,請輸入容器相關的資訊
Container Definitions
Standard
Container name: ithomeContainer
Image: 950646218716.dkr.ecr.ap-southeast-1.amazonaws.com/ithome-repo:latest
Memory Limits (MiB): Hard Limit - 150, Soft limit - 100
Port mappings
Host port, Container port, Protocol
0, 80, tcp
映像檔 (Image)指的是先前在 ECR 所放置的容器映像檔;記憶體限制 (memory limit) 可以參閱 Amazon Elastic Container Registry (ECR) - Day21,透過docker stats 查出整個 Container 執行時至少需要 17.7MB 的記憶體,所以先設定為 100M 的記憶體供 Container 使用;埠號對應 (Port mappings) 因為一台主機會開啟多個容器,所以將主機埠號設為 0,讓系統自行決定。
圖 02、容器定義
圖 03、建立叢集的服務
Configure service
Launch type: EC2
Task Definition: ithometask1
Cluster: ithomeCluster
Service name: ithomeService
Service type: REPLICA
Number of tasks: 4
Deployment type: Rolling update
Placement Templates: AZ balanced spread
圖 04、服務的一般組態設定
Configure network
Load balancer type: Application Load Balancer
Service IAM role: AWSServiceRoleForECS
Load balancer name: ithomeALB
Container to load balance
將 ithomeContainer 設定給 ALB,所以按下 Add to load Balancer,並完成以下設定
Production listener port: 80:HTTP
Target group name: ithomeTargetGroup
圖 05、指定負載均衡器
圖 06、將 Container 指定給負載均衡器
設定自動擴縮
Set Auto Scaling
Service Auto Scaling: Do not adjust the service’s desired count
完成後會啟動服務器。進入 ECS 主控台,在左手選單選擇 Clusters,並在右邊按下 ithomeCluster,在 Services 頁簽可以看到啟動的任務(tasks),這些任務就是由 Container 所負責,可以發現 EC2 的實例只有兩個,,但 task 卻有四個,這四個 task 會分布在這兩個實例中。
圖 07、檢視在叢集裡的服務器
透過檢視事件可以清楚的知道發生了甚麼事,做系統不會永遠的是那麼順利的,所以務必要學會看系統的事件。
圖 08、檢視在服務器內的事件
最重要的就是提供服務的網頁是否可以正常執行,所以一定要用ALB所提供的網址檢視網頁服務是否正常?
圖 09、檢視網頁