iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
Build on AWS

AWS 雲原生,學起來比泡咖啡還快系列 第 14

DAY14 - ALB 入場:觀眾終於能看到服務

  • 分享至 

  • xImage
  •  

AWS ECS 建立服務設定說明


https://ithelp.ithome.com.tw/upload/images/20250916/201454622IbTqi76nW.png

啟動類型(Launch Type)

決定任務使用哪種運算模式執行:

  • FARGATE:無伺服器,由 AWS 管理基礎設施。
  • FARGATE_SPOT:比 Fargate 成本更低,適用於可中斷任務。
  • EC2:若選用,會顯示 EC2 容量相關設定。

若選擇「直接啟動任務」,則不使用容量供應商策略。


容量供應商策略(Capacity Provider Strategy)

控制任務分配到不同容量供應商的方式,可設定:

  • Base:指定最少要使用的任務數。
  • Weight:控制任務分配比例,值越大,分配機率越高。
  • 可同時指定多個供應商(如 FARGATE + FARGATE_SPOT)做混合部署。

平台版本

指定執行任務的 Fargate 平台版本:

  • 建議使用 LATEST:自動獲得最新的安全性與功能更新。

小提示:

  • 節省成本但可接受中斷 → 使用 FARGATE_SPOT
  • 使用容量供應商策略 → 提升資源彈性與成本最佳化

部署組態設定說明(Fargate)

https://ithelp.ithome.com.tw/upload/images/20250916/20145462GiKe5cUZhd.png

任務定義系列 & 修訂

  • 任務定義系列:選擇任務定義名稱(family)。
  • 任務定義修訂:選擇特定版本或留空以使用最新。

服務名稱

  • 唯一服務名稱(叢集內唯一)
  • 最多 255 字元,可用字母、數字、底線 _、連字號 -

服務類型

  • 複本(Replica):指定任務數量(常用)
  • 常駐程式(Daemon):每個容器執行個體一任務(僅限 EC2)

所需任務數

  • 同時啟動與維護的任務數量(例如:1)

可用區域重新平衡

  • 啟用後,ECS 自動分配任務至不同 AZ,維持分散部署。

部署選項

部署類型

  • 滾動式更新(Rolling update):逐步替換舊任務(預設、安全)
  • 藍/綠部署(Blue/Green):需搭配 AWS CodeDeploy

部署任務百分比設定

  • 下限百分比:保留的最少任務數(預設 100%)
  • 上限百分比:最多可啟動的額外任務(預設 200%)

部署故障偵測

  • 部署斷路器:部署持續失敗時停止並標記為失敗
  • 故障復原:失敗時回復至穩定版本
  • 使用 CloudWatch 警示:控制是否繼續部署

小提示:

  • 滾動式更新 適合穩定部署
  • 建議啟用 部署斷路器 + 故障復原
  • 藍/綠部署 適用進階使用者,須了解 CodeDeploy

Service Connect(選用)

讓服務之間可使用簡短名稱與標準連接埠通訊
https://ithelp.ithome.com.tw/upload/images/20250916/20145462oTmuVqYnjj.png

啟用 Service Connect

  • 勾選以啟用 ECS 中服務對服務通訊功能

命名空間

  • 選取或建立命名空間,服務需位於同一命名空間才能通訊

Service Connect 組態

  • 僅限用戶端 (Client only):只發起連線,不提供端點
  • 用戶端和伺服器 (Client and Server):同時提供與消費服務

若未提供連接埠映射,會進入「僅限用戶端」模式,觸發重新部署

進階:日誌集合

  • 可啟用 Envoy 附屬容器的日誌傳送至 CloudWatch
  • 有助於除錯與監控

服務探索(Service Discovery)(選用)

透過 DNS 名稱進行服務通訊,使用 Amazon Route 53 + Cloud Map
https://ithelp.ithome.com.tw/upload/images/20250916/201454625WbfkdNT01.png

啟用服務探索

  • 勾選以啟用功能,讓服務註冊至命名空間

命名空間設定

  • 名稱:如 internal.example.local
  • 描述:例如「frontend/backend 溝通用途」

設定服務探索服務

  • 服務名稱:如 auth-service
  • 描述:用途說明
  • 可選擇建立新的或使用既有的探索服務

啟用 ECS 任務運作狀態傳播

  • 將健康狀態同步至 Route 53,加快移除異常任務

DNS 記錄設定

  • 類型:A(IPv4)或 AAAA(IPv6)
  • TTL:預設 15 秒,可調整

適用情境:

  • 多個服務需通訊但不使用 Service Connect
  • 使用標準 DNS 名稱(如 auth.app.local
  • 非 AWS 原生應用需解析

負載平衡設定(選用)

https://ithelp.ithome.com.tw/upload/images/20250916/20145462hqlNKjmzU8.png
使用 Elastic Load Balancer (ELB) 將流量導向健康任務

啟用負載平衡

  • 勾選後即可設定負載平衡

負載平衡器類型

  • Application Load Balancer(ALB)
    • 適用 HTTP/HTTPS 路由與多埠支援
  • Network Load Balancer(NLB)
    • 適用高吞吐量、低延遲的 TCP/UDP 應用

容器與連接埠設定

  • 範例:web-container 80:80(主機:容器)

接聽程式(Listener)

  • 連接埠與協定設定:如 80/HTTP

目標群組設定(Target Group)

  • 通訊協定:如 HTTP / TCP
  • 運作狀態檢查路徑:如 /health
  • 取消註冊延遲:預設 300 秒

使用建議:

情境 建議使用
Web 應用、需 HTTP 路由 ALB
高吞吐量 TCP 應用 NLB
多容器多埠應用 ALB(支援多目標群組)


上一篇
DAY13 - Task Definition:演員分配劇本
下一篇
DAY15 - Auto Scaling:演員太紅?加開人數!
系列文
AWS 雲原生,學起來比泡咖啡還快20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言