iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
0
自我挑戰組

AWS架構應用系列 第 23

使用 Container 進行 Auto Scaling Group (2) - Day23

  • 分享至 

  • xImage
  •  

使用 Container 進行 Auto Scaling Group (2) - Day23

目標是要透過 ECS 來進行 Auto Scaling Group 的規劃

基礎環境建置

基礎環境指的是網路環境、容器的內容以及負載均衡器。接下來的操作其實跟 ASG 步驟縮放政策 Step scaling policies - Day15 類似,可以參照該網址,但為方便起見我們還是操作一遍

  1. 建置 VPC 與相關的子網 - 請參閱 Amazon VPC 練習 - Day07
  2. 新增 EC2 實例 - 請參閱 Amazon Elastic Compute Cloud (EC2) - Day08
  3. 建立 Docker Container Image - 請參閱 Amazon Elastic Container Service (Amazon ECS) - Day20
  4. 將 Docker Container Image 上傳至儲存庫 - 請參閱 Amazon Elastic Container Registry (ECR) - Day21
  5. 新增 Application Load Balancer (ALB) - 請參閱 Elastic Load Balancing (ELB) - Day09

ECS 相關建置

  1. 建置 ECS 叢集 - 請參閱 使用 Container 進行 Auto Scaling Group (1) - Day22

  2. 建置 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、容器定義

  1. 建立 ECS 的服務
    接下來就是把上面定義好的任務放到叢集裡去運行,這個動作稱之為新增服務 (create service)。進入 ECS 主控台,在左手選單選擇 Clusters,並在右邊按下剛剛建立的叢集 ithomeCluster,選擇下方頁簽 Services,並按下 Create

建立叢集的服務
圖 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、指定負載均衡器

將 Container 指定給負載均衡器
圖 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、檢視網頁


上一篇
使用 Container 進行 Auto Scaling Group (1) - Day22
下一篇
使用 Container 進行 Auto Scaling Group (3) - Day24
系列文
AWS架構應用24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言