技術專欄

Elastic Container Service (ECS) x Fargate 在 AWS 建立免煩惱伺服器的 Docker 環境

AWS 雲端運算服務
2023/02/06

技術六處三部 雲端架構師 | Herman Kou

在現今盛行的虛擬化技術中,容器技術已被廣泛使用於各種大小型應用程式中。容器不僅可以加速開發速度,提高便利性,還可以降低應用程式的維護難度。AWS的 Elastic Container Service (ECS) 提供了一種全受管容器協同運作服務,可以輕鬆地部署、管理和擴展容器化應用程式。 而ECS除了選擇傳統需自行管理的EC2作為運算單元外,也可以選擇使用Serverless的 AWS Fargate進行運算,進而免除EC2的管理工作。本文將講述如何使用ECS並透過Serverless的AWS Fargate快速建立應用程式及其網路負載平衡器(Load Balancer)。

 

AWS ECS 是專為 Docker 型式的容器服務,並由AWS完全受館,可以讓使用者輕鬆地部署、管理和擴展容器化應用程式,而不必煩惱伺服器的管理。

( 圖片取自 AWS 官網 : https://aws.amazon.com/tw/ecs/ © Amazon Web Service)

 

AWS Fargate 和 Elastic Container Service(ECS) 是什麼?

AWS Fargate 是 AWS 所提供的一種容器運算服務,它可以讓您在不需要管理底層硬體的情況下執行容器。Fargate 包括了網路、安全性、硬體和操作系統等底層管理工作,讓您可以專注於應用程式的開發和運算。

Elastic Container Service (ECS) 是 AWS 所提供的一種容器管理服務,它可以讓您輕鬆地部署、管理和擴展容器化應用程式。 ECS 支援 Docker 容器,並提供一組簡單的 API 和管理工具,可讓您在數分鐘內設定和啟動容器。 ECS 可以在 AWS 內部執行應用程式,並可與其他 AWS 服務(如 Elastic Load Balancing 和 Amazon RDS)整合。它可以在選擇EC2或Fargate上運算執行容器,支援自動擴展和負載平衡,並提供容器層級的監控和日誌記錄。
 

如何將準備好的Docker應用程式快速佈建到AWS ECS上

1.事前我們需要預先準備要建置Docker應用程式之Image到AWS ECR

•    請預先會要建置的應用程式的之Image Push到ECR 的Repository上。

 

2.前往AWS Console的ECS服務,建立叢集。

•    點擊畫面中的建立叢集

 

3.設定叢集範本

•    由於我們是用Fargate作為運算單元,所以這裡選取僅限聯網。

 

4.設定叢集內容

•    輸入叢集的名稱,其餘設定留作預設,再點擊建立。

 

5.按下來建立任務定義

•    點擊左方選單的任務定義,再點擊建立新的任務定義。

 

6.選取啟動類型相容性

•    由於我們是在建Fargate based的應用程式,所以在這裡選取Fargate,再下一步。

 

7.設定任務和容器定義

•    輸入任務定義名稱
•    任務角色可以留空
•    作業系統系統選擇Linux


8.往下拉繼續進行設定

•    任務大小的任務記憶體設定2GB,任務CPU設定1vCPU。

 

9.點擊新增容器,然後進行容器設定

•    輸入容器名稱
•    貼上ERC中Image的URL
•    在Port Mapping輸入應用程式需要開啟的Port
 

10.其餘設定留預設,點擊建立

•    點擊右下角的建立

 

11.回到剛剛的叢集裡面,在服務下點擊建立

•    服務可以包含多個任務,也負責任務的Auto Scaling功能。

 

12.開始設定服務類型

•    啟動類型為FARGATE

 

13.這裡先跳到EC2的Console,找到Load balancer的設定,點擊建立負載平衡器

•    點擊左方橘色的負載平衡器。

 

14.選擇建立應用程式負載平衡器

•    應用程式負載平衡器可以負責路由流量到Container裡面。

 

15.輸入ALB的名字,然後往下

•    設定負載平衡器的名字、方案(Scheme)、IP類型。

 

16.網路設定方面選擇預設的VPC,Mapping則選取所有AZ。

•    設定VPC及其對應子網路。

 

17.SG選取預設的SG

•    AWS 安全群組 (Security Group) 是 AWS 內部一種防火牆功能,用於控制進出虛擬網路 (VPC) 中的網路流量。

 

18.Listener的Port只開80,在下面點擊建立Target Group

•    設定Listener在Http協定下聆聽的Port。

 

19.選擇Target Group的Target type為IP 地址,為TG取一個名字

•    Target Group 是Application Load Balancer (ALB) 所使用的負載平衡器群組。

 

20.在Target Port 輸入8080後,VPC選擇預設VPC,然後建立。

•    Target Port 是指在 Target Group 中註冊的服務或應用程式所監聽的通訊埠。

 

21.ALB和TG都建立好後回到ECS建立服務

•    啟動類型選擇FARGATE
•    作業系統系列選擇Linux
•    任務定義選擇自己建立的任務定義
•    叢集則選擇自己的叢集
 

22.輸入服務名稱及所需的任務數量。

•    任務數量設定成2,亦可因其所需設定數量。

 

23.VPC和Subnets都選擇預設的,SG也是

•    因示範原因設用預設的VPC及Subnets,可因實際情況作調整。

 

24.在負載平衡中選擇ALB,並選擇之前建好的ALB

•    選擇剛建立好的負載平衡器

 

25.要進行的負載平衡的容器設定,然後點下一步

•    生產接聽程式的連接埠請選80
•    目標群組名稱選擇自己所建立的
•    運作狀態檢查路徑要是根目錄沒有東西的話,請填有會回應的路徑
 

26.設定Auto Scaling,這裡跳過點選後續步驟。

•    點擊右下角的後續步驟。

 

27.檢查沒有問題點建立

•    檢查設定是否正確,無誤後點擊建立

 

28.接下來要讓Health check正常運作,回到ALB打開SG

•    點擊編輯安全群組

 

29.點擊預設的安全群組

 

30.點擊編輯傳入規則

•    Inbound Rules 是指在 AWS 安全群組 (Security Group) 中設定的允許流量進入網路區域的規則。當網路流量想要進入網路區域時,將會根據 Inbound Rules 中的規則進行判斷,若符合規則內容就會被允許進入,反之則會被拒絕。

 

31.在傳入規則加入TCP 443

•    ALB需要經由Port 443 來進行目標的Health Check。

 

32.打開叢集的詳細資料找到SG

 

33.點擊編輯傳入規則

 

34.加上TCP 的443和8080Port anywhere

 

35.從ALB的DNS進入服務,完成

•    應用程式正常回傳。

 

透過以上步驟我們可以輕鬆地利用AWS Elastic Container Service 及 Fargate等服務,將製作好的Docker的應用程式快速佈建到AWS上,而AWS Fargate可免去管理伺服器的時間成本,AWS ECS提供彈性管理及快速變更的服務,對於相關開發者可以節省大量的管理時間成本,能夠更專心投入專案開發之中。
而AWS所提供的全受管服務將以最高的業界標準進行維護,可將相關營運風險降至最低,相關資訊可參考AWS 服務水準協議 (SLA)。
AWS 服務水準協議 (SLA): https://aws.amazon.com/tw/legal/service-level-agreements/

 

MetaAge 邁達特,除了技術支援,也提供 7 x 24 全託管 MSP 服務

MetaAge 邁達特數位在資安、網路、儲存、伺服器、虛擬化、資料庫管理有豐富經驗,技術深厚的架構師群與維運團隊是企業雲服務的最佳幫手。客戶無論想要部署 AWS 服務,進一步代管維運(Cloud Managed Service)、基礎架構即代碼 (Infrastructure-as-code)、 API 整合、雲地整合等加值服務,邁達特均能一站式滿足多構面需求。

 

關於 MetaAge 邁達特

MetaAge 邁達特 (更名前:聚碩科技) 於 1998 年創業之初,即以成為「The ICT Solution Provider 專業資訊應用服務供應商」角色自期,為經銷夥伴與企業用戶提供一流產品與專業服務,成為業界最佳之加值服務名牌通路商。針對廣大的經銷商夥伴以及雲市集之獨立軟體供應商 (ISV),也可洽談經銷合作方案,設計後續合作的框架。
MetaAge 邁達特代理的軟硬體產品線均為全球知名品牌,針對廣大的經銷商夥伴以及雲市集之獨立軟體供應商 (ISV),提供強大的技術支援與量身訂作之經銷合作方案,擴大合作夥伴的服務範圍,在多樣化的場域中一同實現更優質的客戶服務體驗。
邁達特持續作為 IT 智能化最佳夥伴,竭誠歡迎舊雨新知攜手共創數位新局。
MetaAge 邁達特 AWS MSP 團隊導入次世代監控系統,提供客戶完全託管和完整監控的 MSP 整合服務。

掃碼聯繫邁達特MSP服務團隊, 或加入官方 LineID: @metaage_msp

聯絡方式 —— 24小時免付費電話: 080-000-8669  |  Email: aws@metaage.com.tw  |  MSP 服務官方 LineID: @metaage_msp


 

其他延伸閱讀

如何變更 AWS ECS 叢集 EC2 的 Instances Type?16 個步驟告訴你!

全受管容器解決方案– Amazon Elastic Container Service (Amazon ECS)

聯絡 我們