海外雲在線 海外雲在線 立即諮詢

AWS帳號充值方案 AWS伺服器如何配置負載均衡ELB

亞馬遜雲AWS / 2026-08-21 19:04:22

前言:為什麼要用 ELB

把網站或 API 部署到 AWS 後,你很快會遇到同一個問題:流量來了以後怎麼辦?單一台 EC2 固然能跑,但面對突發流量、維護或故障,停機風險會明顯上升。這時候你需要一個「流量分配器」,讓使用者的請求能平均或依規則分發到多台後端,並且能在某台後端失效時自動摘除。

AWS 的 ELB(Elastic Load Balancing)就是解決方案。它不只是把流量平均分散而已,還提供了監聽器、路由規則、健康檢查、TLS 終止、以及與自動擴展的整合能力。更重要的是,你不必自己寫負載均衡程式、也不必維護硬體設備。

本文會用「你真的要上線」的角度,逐步講清楚如何配置負載均衡 ELB:從規劃架構,到建立目標群組、設定監聽器與健康檢查,再到與 Auto Scaling 協作,最後補上常見錯誤的排查方式。

第一章:先選對 ELB 類型

AWS 目前主力有三種負載均衡:Application Load Balancer(ALB)、Network Load Balancer(NLB)以及較舊的 Classic Load Balancer(CLB)。你要先搞清楚它們各自擅長什麼,否則後面配置會卡得很痛。

ALB:面向 Web 應用,做路由規則很強

ALB 適合 HTTP/HTTPS 流量,支援根據 URL 路徑、主機名(Host header)、查詢參數或標頭等條件進行路由。它也更容易與現代 Web 架構整合,例如使用 WebSocket、OIDC 登入流程(配合其他服務)、以及對應用層的健康檢查。

大多數網站、後台管理、一般 API,都建議優先選 ALB。

NLB:面向 TCP/UDP,高吞吐與低延遲

NLB 偏向傳輸層(L4),對 TCP/UDP 特別友好,常見於需要極低延遲或特定協定的場景,例如部分遊戲服務、訊息傳遞、或特殊網路需求。若你不需要複雜的 HTTP 路由,而是更在意吞吐與穩定性,NLB 是不錯選擇。

Classic ELB:較舊的配置方式,今天通常不建議新案採用

Classic ELB 仍可用於既有系統,但新案多半不需要它。ALB 與 NLB 的功能與彈性更好,且未來演進更明顯。

本文示範:以 ALB 為主

AWS帳號充值方案 為了讓流程更貼近實際 Web/HTTP 案例,後文主要用 ALB 來示範配置。你若使用 NLB,概念仍類似:建立負載均衡器 → 建立目標群組 → 配置端口與監聽 → 健康檢查 → 綁定 Auto Scaling 或手動掛上後端。但介面與一些細節會有所不同。

第二章:規劃網路與基本前提

開始建立 ALB 前,先確認幾個關鍵前提。這一步常被忽略,但實際上它決定你之後能不能順利通。

子網(Subnets)與可用區(AZ)

負載均衡器通常會部署在多個可用區,以確保某一個 AZ 出問題時仍可提供服務。你至少應該選兩個子網(不同 AZ)。

後端 EC2(或其他目標)也要在相對應的 VPC 中,並且它們的網路安全設定必須允許來自 ALB 的流量。

VPC 與路由

確認 ALB 所在子網與後端目標之間的路由是通的。若你使用私有子網放後端,通常需要 NAT(或透過 VPC Endpoints)確保後端能更新套件或存取必要資源;但這跟「ALB 能不能把流量打到後端」是兩件事。

安全群組(Security Group)是核心

ALB 通常會有自己的安全群組。你需要:

  • 讓 ALB 的安全群組允許來自外部的流量(例如 443/80)。
  • 讓後端目標的安全群組允許來自 ALB 安全群組的流量(例如 80 或你實際應用端口)。

常見錯誤是你只放行了公開網際網路,但後端其實是「只允許 ALB」的方向沒有設好,結果健康檢查失敗或請求一直 502/504。

第三章:建立 ALB(Application Load Balancer)

以下流程以建立一個面向外部的 ALB 為例。實際介面名稱可能依 AWS 控制台版本略有不同,但概念一致。

步驟 1:建立負載均衡器

在 AWS 管理主控台進入 EC2 > Load Balancers,選擇 Create load balancer。

  • 選擇類型:Application Load Balancer。
  • 選擇 scheme:通常選 internet-facing(對外服務);內部服務則可選 internal。
  • 選擇 VPC。
  • 選擇至少兩個子網(跨 AZ)。
  • AWS帳號充值方案 指定安全群組:例如 ALB-SG。

如果你要走 HTTPS,你還要準備憑證(ACM)。憑證可在建立監聽器時選擇。

AWS帳號充值方案 步驟 2:建立目標群組(Target Group)

目標群組是 ALB 把流量導向後端的依據。你要設定:

  • 協定與埠(Protocol/Port):例如 HTTP:80 或 HTTPS:443(視你後端怎麼跑)。
  • 目標類型(Target type):常見是 Instance(EC2),也可能是 IP(如果後端不是 EC2,比如容器或外部 IP)。本文先用 Instance。
  • VPC:必須與負載均衡器相同。

建立後你會看到目標群組的細項設定,例如健康檢查、慢啟動(deregistration delay)等。接下來重點是健康檢查。

步驟 3:設定健康檢查(Health Check)

健康檢查決定 ALB 判斷後端是否可用。若健康檢查設定不合理,你會看到:

  • 負載均衡器判定目標不健康,結果流量不會轉發。
  • 或你以為服務正常,但健康檢查一直 404/超時。

健康檢查至少需要考慮:

  • 協定與路徑:例如 HTTP /healthz。
  • 通過判定:200-399 之類的範圍(預設通常可用)。
  • 間隔與逾時:Interval、Timeout、Healthy threshold、Unhealthy threshold。

建議實務做法:

  • 後端提供一個簡單健康檢查端點,只做必要檢查,不要把健康端點做成昂貴的外部呼叫。
  • 區分 readiness 與 liveness 的概念(若你使用框架或容器可更精準);對 ALB 來說,至少確保健康端點能在服務啟動後快速回應。
  • 若你使用灰度或有版本切換,健康端點可以依版本返回不同狀態碼,但要符合 ALB 判定邏輯。

第四章:配置監聽器與路由(Listener & Routing Rules)

監聽器是 ALB 接收連線的入口。你可以在同一個負載均衡器上設定多個監聽器,例如:

  • 80(HTTP)→ 跳轉到 443(HTTPS)
  • 443(HTTPS)→ 根據路徑路由到不同目標群組

即使你只有單一目標群組,也應設定好監聽器與預設規則。

步驟 1:建立監聽器(Listener)

在 ALB 的 Listeners 區塊新增 Listener:

  • 協定:HTTP 或 HTTPS。
  • 埠:例如 443。
  • SSL 憑證:若是 HTTPS,需要從 ACM 選取或上傳。
  • Default action:轉送到目標群組(Target group)。

步驟 2:設定規則(Rules)

規則常見用法:

  • 依 URL 路徑轉發:/api/* → api-target-group;/admin/* → admin-target-group。
  • 依網域名稱轉發:不同子網域對應不同目標群組。
  • 依標頭轉發:例如特定條件走灰度版本。

建議:先把路由規則保持簡單,確保單一路徑打通後再加入複雜條件。你會更容易定位問題。

步驟 3:啟用 HTTP 到 HTTPS 的導流(可選但建議)

如果你要強制使用 HTTPS,一般會:

  • 在 80 的監聽器設定 redirect action 到 443。
  • 避免同時提供混合流量造成憑證或重定向問題。

第五章:把後端掛上去(Register Targets)

目標群組建立後,你需要把後端 EC2(或其他目標)掛上去。這部分影響你是否能立刻通。

AWS帳號充值方案 手動掛載 EC2(適合測試)

在 Target group 裡選擇 Targets,點 Add targets,把目標 Instance 選進去。掛上後等待健康狀態變為 healthy。

如果長時間不是 healthy,通常是:

  • 後端安全群組沒有允許入站。
  • 健康檢查路徑錯誤(例如 /healthz 實際回 404)。
  • 應用服務沒在該埠 listen。
  • 後端回應太慢或超時。

使用 Auto Scaling(適合正式環境)

正式環境通常會使用 Auto Scaling Group(ASG)。做法是:

  • 建立 Launch Template(含 AMI、instance type、安全群組、啟動腳本等)。
  • 建立 ASG 並選擇目標群組。
  • 設定 Desired/Min/Max Capacity。
  • 選擇伸縮策略:用 CPU、RequestCount、或自訂指標。

當 ASG 新增實例時,它會自動註冊到目標群組。健康檢查通過後才會開始分流,這能降低冷啟動造成的錯誤。

第六章:啟用 TLS 與憑證最佳實務

如果你用 HTTPS,上線時最容易出錯的不是路由,而是憑證或 TLS 設定。

ACM 憑證的基本流程

通常你會用 ACM 申請憑證,完成域名驗證(DNS 或 email)。驗證通過後,憑證就能用於 ALB 監聽器。

建議做到:

  • 憑證類型匹配:單一網域或通配符。
  • 確定憑證覆蓋的網域名就是你實際訪問的網域。
  • 設定好到期提醒或自動續約流程。

TLS 終止位置:放在 ALB 通常更簡單

實務上常見做法是「TLS 終止於 ALB」,也就是外部用 HTTPS 連到 ALB;ALB 再以 HTTP(或 HTTPS)轉發到後端。這樣你集中管理憑證,也降低後端的配置負擔。

若你後端也要端到端加密,可用 HTTPS,但你要確保後端也有憑證或採用私有端證書方案。

第七章:健康檢查與除錯思路(非常關鍵)

ELB 能不能用,常常不是「你做了什麼」,而是「你怎麼驗證」。以下提供一套從外到內、由表入裡的排查順序。

第一層:確認前端到 ALB 的連線

  • AWS帳號充值方案 用瀏覽器或 curl 直接訪問 ALB 的 DNS/自訂網域。
  • 若是 HTTPS,先確認憑證是否正確,是否有重定向循環。
  • 若回應是 502/503,通常代表 ALB 沒有可用目標或路由問題。

第二層:看目標群組健康狀態(Target Health)

在目標群組內查看每個目標是 healthy / unhealthy。若全部 unhealthy,你幾乎可以直接鎖定健康檢查或網路安全設定。

  • 若是某些 unhealthy:可能是特定實例或其安全群組設定有差異。
  • 若全部不健康且是健康檢查路徑錯:通常會是 404 或超時。

第三層:檢查後端安全群組與防火牆

安全群組常見問題:

  • 後端 SG 沒有允許 ALB SG 對應埠。
  • 後端 OS 層(例如 iptables、ufw)擋住了連線。
  • AWS帳號充值方案 你配置了不同埠:例如 ALB 導到 80,但後端實際用 8080。

第四層:檢查健康檢查端點回應

健康檢查端點要保證:

  • 路徑存在並回應預期狀態碼。
  • 在冷啟動期間也能在健康檢查的節奏內回應。
  • 不依賴外部服務的成功結果(否則外部一掛就全站被判為不健康)。

第五層:確認應用是否真的在 listen

到 EC2 上檢查:

  • AWS帳號充值方案 服務是否啟動。
  • 監聽埠是否正確(例如 netstat 或 ss)。
  • 若你使用 Docker,容器映射與主機安全設定是否一致。

第八章:與自動擴展(Auto Scaling)協作

當你有多台後端時,負載均衡是前半段;後半段是「當流量增加時自動補上」。ASG 讓容量跟著需求走,降低你手動干預的成本。

擴展觸發條件(建議不要只看 CPU)

很多網站 CPU 可能不高,但請求量已經爆了。你可以考慮用:

  • ALB 的 RequestCount(每秒請求數)
  • 延遲或錯誤率指標(若你有整合監控)
  • AWS帳號充值方案 自訂指標(例如隊列長度、背景任務堆積)

CPU 仍可作為參考,但不要把它當成唯一真相。

健康狀態與新實例冷啟動(Grace period)

新實例加入時應用可能需要初始化(讀配置、連線 DB、載入緩存)。如果你健康檢查過於敏感,會導致實例被反覆登出/登入。

常見做法:

  • 調整健康檢查的時間參數(interval、timeout、threshold)。
  • 設定 ASG 的 health check grace period(如果使用 instance health 或與系統檢查搭配)。
  • 讓健康端點在必要初始化完成後才回應成功,避免過早宣告 ready。

第九章:常見錯誤與快速修正

下面列出一些最常見的 ELB 配置坑,你可以把它當作上線前的自查清單。

錯誤一:健康檢查路徑不正確

你在目標群組設定的路徑是 /healthz,但實際服務是 /health 或 /status。結果健康檢查永遠回 404,ALB 一直判定 unhealthy。

修正:確認後端實際端點,並用測試確認回應碼與內容。

錯誤二:後端沒開對埠或安全群組沒放行

AWS帳號充值方案 ALB 導到 80,但後端只在 8080 listen;或安全群組沒有允許來自 ALB SG。

修正:核對 ALB target group 的 port,並檢查後端 SG 入站規則。

錯誤三:回應時間太長導致健康檢查超時

你把健康端點寫得很複雜,例如等待外部服務回應才返回成功。當外部服務稍慢,健康檢查就超時。

修正:健康端點只做必要檢查;外部依賴應在更合理的方式下影響業務狀態,而不是直接拖垮健康檢查。

錯誤四:HTTPS 憑證與網域不匹配

你用的是憑證 A 覆蓋了 example.com,但實際訪問是 api.example.com,或相反。

AWS帳號充值方案 修正:確認憑證涵蓋的網域與 SAN,必要時重新申請或選用通配符憑證。

錯誤五:路由規則沒符合到目標

你設定了規則:Host = admin.example.com 才導向 admin 目標群組,但實際請求的 Host 不對(例如忘了 DNS 指向),結果落在預設 action 或直接導向錯誤群組。

修正:檢查請求的 Host header;確認規則優先序與預設 action。

第十章:上線前檢查清單(建議照做)

在你正式把流量導到 ELB 前,花幾分鐘做確認,能省下後面一整天的排錯。

  • ALB 所在子網跨兩個或更多 AZ,且目標群組目標在同一 VPC。
  • ALB 監聽器設定正確(80/443、憑證、預設轉送到正確目標群組)。
  • 目標群組 port/協定設定正確,健康檢查路徑存在且回應碼符合預期。
  • 後端安全群組允許來自 ALB 安全群組的入站埠。
  • 目標群組顯示 healthy,且在替換或重啟後仍能維持穩定。
  • 若搭配 Auto Scaling,確認冷啟動與 grace period 設定合理,避免反覆摘除。
  • 監控與告警已設定(ALB 目標錯誤率、延遲、5xx、健康檢查失敗等)。

結語:把 ELB 當成「流量的安全閘門」

AWS 的 ELB 不是單純的「加一個負載均衡器」,而是把流量、健康狀態與容量管理串成一個系統。ALB 讓你能以應用層規則導流;目標群組讓你定義什麼叫做「可接收流量」;健康檢查則替你持續監控後端是否真的正常。再加上 Auto Scaling,你的服務就能在故障與壓力下依然維持穩定。

只要你遵循一個原則:先確保健康檢查通過、再逐步增加路由規則與擴展策略,你就能快速把 ELB 正確落地。等下一次你遇到 502 或健康狀態異常時,你也會知道該從哪一層開始查,避免陷入盲目調整。

如果你希望我再用你的實際情境(例如:你用 ALB 還是 NLB、後端是 EC2 還是容器、是否要 HTTPS、健康檢查路徑等)把步驟寫成可直接照做的版本,告訴我你的架構與端口,我可以幫你整理一份更貼近你系統的配置清單。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系