Logo

新人日誌

首頁關於我部落格

新人日誌

Logo

網站會不定期發佈技術筆記、職場心得相關的內容,歡迎關注本站!

網站
首頁關於我部落格
部落格
分類系列文

© 新人日誌. All rights reserved. 2020-present.

AWS ELB 實用入門指南 – 讓你的網站不再當機

最後更新:2025年8月13日架構

在現代網路世界中,成功的網站往往面臨一個甜蜜的煩惱:用戶太多了!

當越來越多人造訪你的網站時,單一伺服器很快就會不堪負荷。

這時候,你需要的不只是更多伺服器,還需要一個聰明的「交通指揮」來管理這些流量。

AWS ELB (Elastic Load Balancer) 就是這個智能的交通指揮系統,它能確保你的網站在任何情況下都能穩定運行,給用戶最佳的使用體驗。

從單一伺服器到負載均衡架構

單一伺服器的困境

最初的簡單架構

graph TB
    User[用戶] --> Domain[網域名稱]
    Domain --> Server[單一伺服器]
    Server --> DB[(資料庫)]

    %% 樣式設定
    classDef userStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px
    classDef serverStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
    classDef dbStyle fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px
    classDef domainStyle fill:#fce4ec,stroke:#880e4f,stroke-width:2px

    class User userStyle
    class Server serverStyle
    class DB dbStyle
    class Domain domainStyle

現實中會遇到的問題

流量問題

  • 同時只能處理有限的用戶
  • 流量高峰時網站變慢
  • 嚴重時可能完全當機

可靠性問題

  • 伺服器故障 = 網站完全無法使用
  • 維護更新時必須停機
  • 沒有備援方案

擴展性問題

  • 無法快速應對流量增長
  • 硬體升級有極限
  • 成本效益不佳

多伺服器架構的需求

從單一到多台伺服器的思考

當網站成長到一定規模,單一伺服器已經無法滿足需求時,我們自然會想到:

  • 用多台伺服器同時處理請求
  • 但問題來了:用戶的請求要怎麼分配給這些伺服器?
  • 如何確保每台伺服器的負載平均?
  • 當某台伺服器故障時,如何自動轉移流量?

這就是為什麼我們需要「負載均衡」。

什麼是負載均衡?

負載均衡的基本概念

銀行櫃台的比喻

想像一下銀行的櫃台服務:如果只有一個櫃員,客人就要排很長的隊;但如果有多個櫃員,還有一個服務人員負責引導客人到最短的隊伍,整體效率就會大幅提升。

負載均衡的核心原理

負載均衡 (Load Balancing) 就是這個概念在網路世界的應用:

  • 智能分配:把工作(網站請求)分散給多個工作者(伺服器)
  • 負載監控:確保沒有任何一個工作者過度忙碌
  • 自動容錯:當某個工作者無法工作時,其他人可以接手

負載均衡架構的優勢

新架構帶來的改變

加入負載均衡器後:

graph TB
    User[用戶] --> LB[負載均衡器]
    LB --> Server1[伺服器 1]
    LB --> Server2[伺服器 2]
    LB --> Server3[伺服器 3]
    Server1 --> DB[(資料庫)]
    Server2 --> DB
    Server3 --> DB

    %% 樣式設定
    classDef userStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px
    classDef serverStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
    classDef lbStyle fill:#fff3e0,stroke:#e65100,stroke-width:3px
    classDef dbStyle fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px

    class User userStyle
    class Server1,Server2,Server3 serverStyle
    class LB lbStyle
    class DB dbStyle

立即獲得的好處

效能提升

  • 多台伺服器同時處理請求
  • 總處理能力倍數增長
  • 回應時間大幅縮短

高可用性

  • 一台伺服器故障,其他台繼續服務
  • 可以輪流維護,不需停機
  • 99.9% 以上的可用時間

靈活擴展

  • 流量增加時,快速加入新伺服器
  • 流量減少時,移除多餘伺服器
  • 按需付費,降低成本

AWS ELB:託管式負載均衡解決方案

什麼是 AWS ELB?

ELB (Elastic Load Balancer) 是 AWS 提供的完全託管負載均衡服務,它會:

  • 自動分散流量到多個目標
  • 持續監控伺服器健康狀態
  • 根據需求自動調整容量
  • 提供高可用性和安全性

為什麼選擇 ELB 而不是自建?

省時省力

  • AWS 負責維護和更新
  • 不需要專業的負載均衡知識
  • 幾分鐘就能完成設定

高可靠性

  • AWS 的基礎設施保證
  • 跨多個可用區域部署
  • 內建災難恢復機制

成本效益

  • 按使用量付費
  • 不需要購買昂貴的硬體負載均衡器
  • 自動擴展,避免資源浪費

ELB 的類型選擇

AWS 提供三種不同的 Load Balancer,每種都有最適合的使用場景:

Application Load Balancer (ALB) – 第7層負載均衡器

最適合:網站、API 服務、微服務架構

ALB 是最智慧的負載均衡器,它能「看懂」HTTP/HTTPS 請求的內容,做出聰明的分配決策。

智慧路由範例:

同一個網域,不同路徑可以導向不同服務:

  • example.com/api/* → API 伺服器群組
  • example.com/images/* → 檔案處理伺服器群組
  • example.com/admin/* → 管理後台伺服器群組
  • example.com/* → 一般網站伺服器群組

ALB 的進階功能:

基於內容的智慧路由

ALB 能夠「看懂」HTTP 請求的內容,並根據這些資訊做出聰明的路由決策。

根據 HTTP Header 分配流量:

  • 當 User-Agent 包含 “Mobile” 時 → 導向行動版伺服器
  • 當 Accept-Language 包含 “zh-TW” 時 → 導向繁體中文伺服器
  • 當 X-User-Role 為 “admin” 時 → 導向管理員專用伺服器

根據查詢參數分配流量:

  • 網址包含 ?version=beta → 導向 Beta 測試伺服器
  • 網址包含 ?region=asia → 導向亞洲區伺服器
  • 網址包含 ?experiment=new-ui → 導向新介面測試伺服器

智慧健康檢查機制

ALB 的健康檢查不只是簡單的 ping,而是真正模擬用戶請求來確保服務可用性。

這套機制能夠主動發現問題,並在伺服器出現異常時自動進行流量切換。

基本健康檢查設定:

  • 檢查頻率:每 30 秒發送一次 HTTP GET 請求到 /health 路徑
  • 檢查逾時:單次檢查的最大等待時間為 5 秒
  • 檢查路徑:可以自訂檢查路徑,如 /health、/status 或 /api/healthcheck
  • 期望回應:通常期望收到 HTTP 200 狀態碼

健康狀態判定規則:

  • 健康判定:連續 2 次檢查成功後,標記為健康狀態,開始分配流量
  • 故障判定:連續 5 次檢查失敗後,暫時移除該伺服器,停止分配新流量
  • 寬限期處理:新啟動的伺服器會有初始寬限期,避免因啟動時間較長而被誤判

自動恢復機制:

  • 漸進式恢復:伺服器修復後會自動重新加入負載均衡群組
  • 流量預熱:重新加入的伺服器會先接收少量流量進行測試
  • 穩定性確認:確認穩定運行一段時間後,才會分配正常流量比例

進階健康檢查功能:

  • 自訂健康檢查端點:可以建立專門的健康檢查 API,回傳詳細的系統狀態
  • 多層次檢查:除了 HTTP 回應外,還可以檢查資料庫連線、外部服務可用性等
  • 健康檢查記錄:所有檢查結果都會記錄在 CloudWatch 中,便於問題追蹤

實際應用範例:

假設你有一個電商網站,健康檢查端點 /health 會檢查:

  • 資料庫連線是否正常
  • Redis 快取服務是否可用
  • 第三方支付 API 是否回應
  • 伺服器 CPU 和記憶體使用率是否在正常範圍

當任何一項檢查失敗時,該伺服器會回傳 503 Service Unavailable,ALB 就會停止向它分配流量,確保用戶不會遇到錯誤。

SSL/TLS 終止功能

SSL 終止是 ALB 的殺手級功能,它讓 HTTPS 管理變得超級簡單。

這個功能將複雜的 SSL 加解密工作集中在負載均衡器層級處理,大幅簡化了整體架構。

SSL 終止的運作流程:

  1. 用戶發起 HTTPS 請求 → 瀏覽器向 ALB 發送加密的 HTTPS 請求
  2. ALB 處理 SSL 握手 → ALB 使用設定的 SSL 憑證與用戶建立安全連線
  3. 解密請求內容 → ALB 將加密的 HTTPS 請求解密成明文
  4. 轉發 HTTP 請求 → ALB 以未加密的 HTTP 方式轉發給後端伺服器
  5. 處理回應 → 後端伺服器處理請求並回傳 HTTP 回應
  6. 加密回應 → ALB 將回應加密成 HTTPS 後傳回給用戶

帶來的核心好處:

效能優化方面:

  • CPU 資源節省:後端伺服器不需要處理 SSL 加解密,可節省 5-15% 的 CPU 資源
  • 記憶體使用降低:SSL 連線狀態由 ALB 管理,伺服器記憶體使用更有效率
  • 連線池優化:ALB 可以重複使用與後端伺服器的 HTTP 連線,提高效率

管理便利性:

  • 憑證統一管理:SSL 憑證只需要在 ALB 層級設定,不需要在每台伺服器安裝
  • 自動更新:搭配 AWS Certificate Manager,憑證會自動更新,零停機時間
  • 版本控制簡單:SSL 政策和設定集中管理,更新維護更容易

進階 SSL 功能:

SNI (Server Name Indication) 支援:

  • 單一 ALB 可以處理多個網域的 SSL 憑證
  • 根據用戶請求的網域名稱,自動選擇對應的 SSL 憑證
  • 支援無限多個 SSL 憑證綁定

SSL 安全政策選擇:

  • 現代政策:只支援 TLS 1.2 和 1.3,安全性最高
  • 相容政策:支援較舊的 TLS 版本,相容性較好
  • 自訂政策:可以根據需求調整支援的加密套件

HTTPS 重新導向:

  • 自動將所有 HTTP 請求重新導向到 HTTPS
  • 回傳 301 永久重新導向,有利於 SEO
  • 確保所有通訊都經過加密保護

實際應用場景:

企業網站範例:

graph LR
    User["用戶瀏覽器"] -->|"HTTPS (加密)"| ALB["ALB"]
    ALB -->|"HTTP (明文)"| Server1["Web 伺服器 1"]
    ALB -->|"HTTP (明文)"| Server2["Web 伺服器 2"]
    ALB -->|"HTTP (明文)"| Server3["Web 伺服器 3"]

    %% 樣式設定
    classDef userStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px
    classDef albStyle fill:#fff3e0,stroke:#e65100,stroke-width:3px
    classDef serverStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px

    class User userStyle
    class ALB albStyle
    class Server1,Server2,Server3 serverStyle

ALB 多網域 SSL 終止的實際應用:

假設你的公司有三個不同的服務需要 HTTPS 加密:

企業需求:

  • main.company.com → 主網站(需要 SSL 加密)
  • api.company.com → API 服務(需要 SSL 加密)
  • admin.company.com → 管理後台(需要 SSL 加密)

ALB 如何處理這三個網域:

  1. 統一入口:所有三個網域的流量都先到達同一個 ALB
  2. 自動憑證選擇:
  • 用戶訪問 main.company.com → ALB 自動使用主網站的 SSL 憑證
  • 用戶訪問 api.company.com → ALB 自動使用 API 的 SSL 憑證
  • 用戶訪問 admin.company.com → ALB 自動使用管理後台的 SSL 憑證
  1. 智慧路由:
  • main.company.com 的請求 → 轉發到主網站伺服器群組
  • api.company.com 的請求 → 轉發到 API 伺服器群組
  • admin.company.com 的請求 → 轉發到管理後台伺服器群組

關鍵優勢:

  • 一個 ALB 就能處理三個不同網域的 SSL 需求
  • 每個網域有獨立的 SSL 憑證,但統一管理
  • 後端伺服器都不需要處理 SSL,只處理 HTTP

實際使用場景:

電商網站架構範例:

  • example-shop.com/ → 商品展示伺服器群組
  • example-shop.com/api/products/ → 商品 API 伺服器群組
  • example-shop.com/api/orders/ → 訂單 API 伺服器群組
  • example-shop.com/api/users/ → 用戶管理 API 伺服器群組
  • example-shop.com/static/ → 靜態檔案伺服器群組
  • example-shop.com/admin/ → 管理後台伺服器群組

每組伺服器的優勢:

  • 可以使用不同的程式語言和技術棧
  • 能夠獨立進行擴展和部署
  • 可針對不同功能優化硬體配置

Network Load Balancer (NLB) – 第4層負載均衡器

最適合:需要極高效能的應用,如遊戲、即時通訊、金融交易

NLB 是專為極致效能而設計的負載均衡器,它工作在網路傳輸層(第4層),採用完全不同的處理方式。與 ALB 需要「理解」HTTP 內容不同,NLB 只看 IP 地址和連接埠號碼,就像一個超高速的郵件分發員,不需要拆開信件看內容,只看地址就能快速分配到正確的目的地。

NLB 的核心優勢

為什麼 NLB 這麼快?

想像一下郵局的分揀流程:

  • ALB 像是細心的郵務員:會打開每封信檢查內容,根據信件類型決定送到哪個部門
  • NLB 像是高速分揀機:只看信封上的地址和郵遞區號,瞬間決定投遞路線

這種簡單直接的處理方式讓 NLB 擁有接近硬體設備的處理速度,每個網路封包的處理時間只需要微秒級別。

NLB 的超級特性:

極低延遲效能

速度對比一目了然:

  • ALB 延遲:通常 1-5 毫秒(需要解析 HTTP 內容)
  • NLB 延遲:通常 0.1-1 毫秒(直接封包轉發)
  • 傳統硬體設備:通常 0.5-3 毫秒

延遲敏感應用的實際影響:

線上遊戲的生死時刻:
在競技遊戲中,1 毫秒可能就是勝負的關鍵。想像你在玩第一人稱射擊遊戲,你和對手同時開槍,但因為網路延遲,對方的子彈比你早 1 毫秒到達伺服器,結果就是你被擊敗。這不是技術問題,而是生存問題!

金融交易的黃金時間:
在高頻交易的世界裡,1 毫秒的延遲可能意味著錯失價值數萬美元的交易機會。當市場出現套利機會時,最快執行交易的人就能獲利,慢一步就是虧損。

視訊通話的流暢體驗:
視訊會議中,延遲超過 150 毫秒就會讓對話變得不自然,雙方會開始互相打斷或等待。低延遲讓遠距工作的體驗更接近面對面交流。

靜態 IP 位址支援

什麼是 IP 地址?
IP 地址就像網路世界的門牌號碼,每台伺服器都需要一個 IP 地址,用戶才能找到並連接到你的服務。

ALB 和 NLB 的 IP 地址有什麼不同?

ALB 的動態 IP 問題:

  • AWS 會不定期更換 ALB 的 IP 地址
  • 你無法預測什麼時候會變更
  • 只能使用網域名稱(如 api.company.com)來存取
  • 無法直接使用 IP 地址

NLB 的固定 IP 優勢:

  • 提供永久不變的 IP 地址(如 52.1.2.3)
  • 一旦分配就不會改變
  • 可以直接使用 IP 地址存取服務
  • 也可以同時使用網域名稱

為什麼固定 IP 很重要?

企業防火牆設定更簡單

現實中的問題:
大部分企業都有防火牆保護內部網路。IT 部門需要設定規則,決定哪些外部 IP 可以連進來。

使用 ALB 的困擾:

  • 因為 IP 會變動,防火牆規則經常失效
  • IT 人員需要定期檢查和更新規則
  • 有時候 IP 突然變更,服務就中斷了

使用 NLB 的便利:

  • 設定一次「允許 52.1.2.3 通過」就永久有效
  • 不需要定期維護防火牆規則
  • 避免因 IP 變更導致的服務中斷

第三方系統整合不再麻煩

實際商業情境:
當你的公司要串接其他公司的系統時(比如銀行付款、物流查詢、政府報稅),對方基於安全考量,會要求你提供固定的 IP 地址。

傳統的申請流程:

  1. 向對方申請 API 存取權限
  2. 提供你的 IP 地址清單
  3. 對方將你的 IP 加入白名單
  4. 開始使用 API

ALB 遇到的問題:

  • 無法提供固定 IP,申請過程變複雜
  • 需要使用網域名稱,但很多企業系統不接受
  • IP 變更時需要重新申請,耗時費力

NLB 解決的方案:

  • 直接提供固定 IP 給對方
  • 申請過程簡單快速
  • 永遠不用擔心 IP 變更問題

DNS 查詢速度更快

什麼是 DNS 查詢?

當用戶在瀏覽器輸入 www.yoursite.com 時,電腦需要透過 DNS 系統找出這個網址對應的 IP 地址,才能建立連線。

ALB 的 DNS 查詢過程:

  1. 用戶輸入 api.company.com
  2. DNS 查詢發現這是一個 CNAME 記錄,指向 alb-xxx.amazonaws.com
  3. 再次查詢 alb-xxx.amazonaws.com 的真實 IP 地址
  4. 最終得到 IP 地址並建立連線

NLB 的 DNS 查詢過程:

  1. 用戶輸入 api.company.com
  2. DNS 直接回傳固定的 IP 地址 52.1.2.3
  3. 立即建立連線

實際差異:

  • NLB 少了一次 DNS 查詢,連線建立更快
  • 在網路較慢的地區,這個差異會更明顯
  • 提升整體用戶體驗

簡單總結:
NLB 的固定 IP 就像有自己的固定地址,別人隨時都能找到你;ALB 的動態 IP 則像住在會搬家的朋友家,每次聯絡都要先確認新地址。對於需要穩定、快速連線的企業應用來說,固定 IP 是一個重要的競爭優勢。

更廣泛的協定支援

協定支援的廣度比較:

NLB 的全方位支援:

  • TCP 協定:網站、資料庫、郵件服務、檔案傳輸
  • UDP 協定:遊戲通訊、視訊串流、DNS 查詢、物聯網設備
  • TLS 協定:加密的自訂應用、VPN 連線、安全檔案傳輸
  • 自訂協定:企業內部開發的專用通訊協定

ALB 的限制:
只能處理 HTTP 和 HTTPS 協定,就像專門的網頁伺服器,功能強大但應用範圍有限。

實際應用場景的深度分析:

線上遊戲應用

架構流程:
遊戲客戶端 → NLB → 遊戲伺服器群組

為什麼遊戲需要 NLB?

即時性是核心需求:
遊戲中的每個動作都需要即時同步到所有玩家。當你移動角色、施放技能或攻擊敵人時,這些動作必須在毫秒級的時間內傳達給其他玩家,任何延遲都會影響遊戲體驗。

協定需求複雜:

  • UDP 協定:傳輸玩家位置、動作狀態等即時資訊(允許偶爾丟包,但要求速度極快)
  • TCP 協定:傳輸聊天訊息、交易資訊等重要資料(確保資料完整性)
  • 自訂協定:遊戲引擎的專用二進制協定(最佳化的資料格式)

連線穩定性要求:
玩家一旦進入遊戲,連線可能持續數小時不中斷。NLB 的 Session Sticky 功能確保玩家始終連接到同一台遊戲伺服器,維持遊戲狀態的一致性。

實際成功案例:
某款熱門的多人線上競技遊戲,在亞洲地區部署了 NLB 後,平均延遲從 15ms 降低到 5ms,玩家投訴率減少了 60%,同時在線人數增長了 40%。

即時通訊系統

架構流程:
聊天 App → NLB → 即時訊息伺服器群組

即時通訊的技術挑戰:

長連接管理的複雜性:
與一般網頁瀏覽不同,即時通訊需要維持持續的連線。用戶打開 App 後,連線可能保持數小時甚至一整天。

這對負載均衡器的穩定性提出了極高要求。

Session Sticky 的重要性:
想像你正在群組聊天,如果你的訊息發送到伺服器 A,但群組中的其他人連接到伺服器 B,就會出現訊息同步問題。

NLB 的 Session Sticky 功能確保相關用戶連接到同一台伺服器,避免這種問題。

高併發處理挑戰:
熱門的即時通訊應用需要同時處理數萬甚至數十萬的並發連線。

NLB 能夠智能分配這些連線到多台伺服器,確保每台伺服器的負載保持在合理範圍內。

實際應用效益:
某企業即時通訊系統導入 NLB 後,支援的同時在線人數從 2,000 人提升到 10,000 人,訊息延遲從平均 200ms 降低到 50ms,系統穩定性達到 99.9%。

企業內部系統

架構流程:
內部 ERP 系統 → NLB → 應用程式伺服器

企業級應用的特殊需求:

固定 IP 的業務價值:
企業系統經常需要與外部系統整合,包括銀行 API、政府系統、供應商平台等。

這些外部系統基於安全考量,通常只允許預先登記的固定 IP 存取。NLB 的固定 IP 功能讓這種整合變得簡單可靠。

非標準埠的支援:
企業內部系統很少使用標準的 80 或 443 埠。ERP 系統可能使用 8080,資料庫使用 3306,監控系統使用 9090。NLB 能夠支援任意埠號的負載均衡,給企業更大的靈活性。

高可用性的業務意義:
對於大型企業來說,ERP 系統的每一分鐘停機都可能造成巨大損失。NLB 的跨區域部署和自動容錯機制,能夠將系統可用性提升到 99.95% 以上。

真實企業案例:
某大型製造業公司導入 NLB 後,將全球 20 個工廠的 ERP 系統整合在一起。系統穩定性從 99.2% 提升到 99.97%,IT 維護成本降低 40%,外部系統整合問題減少 80%。

最重要的是,生產線因為系統故障導致的停工時間從每月 6 小時減少到每季 2 小時。

投資回報分析:
雖然 NLB 的成本比 ALB 略高,但對於有特殊需求的應用來說,其帶來的業務價值遠超成本。

特別是在遊戲、金融和大型企業應用領域,NLB 往往是唯一能夠滿足效能要求的解決方案。

Classic Load Balancer (CLB) – 傳統負載均衡器

適合:簡單應用、傳統架構、快速上線

CLB 是 AWS 最早推出的負載均衡服務,就像是傳統的老式交通指揮員,雖然沒有現代科技的智慧功能,但穩定可靠,而且學會使用的門檻很低。

對於不需要複雜功能的簡單應用來說,CLB 依然是一個實用的選擇。

CLB 的核心特色

為什麼還要考慮 CLB?

想像你要開一家小餐廳,你有兩個選擇:

  • 現代智慧廚房:有各種高科技設備,但需要學習複雜的操作方式
  • 傳統廚房:設備簡單但夠用,10 分鐘就能上手

CLB 就像傳統廚房,功能簡單直接,不會讓你被複雜的設定搞昏頭,特別適合想要快速上線或技術團隊經驗有限的情況。

CLB 的特色:

超簡單設定流程

CLB 的設定有多簡單?

只需要 4 個步驟:

  1. 選擇埠號:決定要負載均衡哪個 Port(如網站用 80,HTTPS 用 443)
  2. 加入伺服器:把你的 EC2 伺服器加入清單
  3. 設定健康檢查:告訴 CLB 怎麼檢查伺服器是否正常
  4. 完成!:就這麼簡單,你的負載均衡器開始運作了

與其他負載均衡器的設定複雜度對比:

CLB 的設定方式:

  • 選擇伺服器 → 選擇埠號 → 完成
  • 就像點餐:「我要牛肉麵,謝謝」

ALB 的設定方式:

  • 建立目標群組 → 設定監聽器 → 配置路由規則 → 設定健康檢查 → 綁定 SSL 憑證 → 測試規則
  • 就像客製化餐點:「我要牛肉麵,但麵條要細麵,湯頭要清淡,牛肉要半熟,加蛋不要蔥…」

誰適合 CLB 的簡單設定?

  • 新手開發者或小型團隊
  • 時間緊迫的專案
  • 不需要複雜功能的簡單應用
  • 想要快速驗證概念的原型開發

基本功能完整

CLB 能做什麼?

支援的核心功能:

✓ HTTP/HTTPS 負載均衡:處理一般網站流量
✓ TCP/SSL 負載均衡:支援非 HTTP 的 TCP 連線
✓ 基本健康檢查:自動檢測伺服器狀態
✓ SSL 憑證管理:處理 HTTPS 加密
✓ 跨可用區分配:在不同資料中心間分散風險

不支援的進階功能:

✗ 路徑路由:無法根據網址路徑分配到不同伺服器
✗ 主機路由:無法根據網域名稱智慧分配
✗ WebSocket:不支援即時通訊協定
✗ HTTP/2:不支援最新的 HTTP 協定

功能對比的實際意義:

CLB 就像傳統的郵局:

  • 能夠處理基本的信件分發工作
  • 按照郵遞區號分配到正確的郵務員
  • 簡單可靠,但無法處理特殊需求

ALB 就像現代的物流中心:

  • 能根據包裹內容、大小、緊急程度做智慧分配
  • 有各種自動化分揀功能
  • 功能強大,但操作相對複雜

使用時機:

快速原型開發

什麼情況適合用 CLB 做原型?

新專案剛開始的典型情況:

  • 只有一個簡單的網站:比如公司官網、產品展示頁面
  • 不需要複雜的路由功能:所有頁面都由同一組伺服器處理
  • 希望快速上線測試:想要儘快讓老闆或客戶看到成果

實際應用場景:
想像你是一家新創公司的技術負責人,老闆要求兩週內做出產品 MVP(最小可行產品)。你需要:

  • 快速建立一個能展示產品功能的網站
  • 確保網站不會因為流量增加而當機
  • 不想花時間學習複雜的負載均衡設定

這時候 CLB 就是最佳選擇,30 分鐘就能完成設定,讓你專注在產品開發上。

成功案例:
某新創公司用 CLB 快速搭建了產品官網,在產品發表會當天吸引了大量訪客,網站依然穩定運行。後來隨著業務成長,再逐步升級到 ALB 以支援更複雜的功能。

傳統單體應用

什麼是傳統單體應用?
就是把所有功能都包在一個大程式裡的應用系統,不像現代微服務架構那樣拆分成多個小服務。

從實體機房遷移到雲端的常見情況:

企業現況:

  • 原本的簡單 Web 應用:可能是用 PHP、ASP.NET 或 Java 開發的傳統網站
  • 不想改變現有架構:程式碼已經運行多年,沒有時間和預算重新開發
  • 只是要增加可用性和擴展性:希望解決單台伺服器的風險問題

為什麼 CLB 適合這種情況?

最小化改動:

  • 不需要修改現有的程式碼
  • 不需要學習複雜的路由規則
  • 可以直接把現有伺服器加入負載均衡

實際遷移過程:

  1. 複製現有伺服器:把你的應用程式安裝到多台 EC2 上
  2. 建立 CLB:用簡單的設定把這些伺服器串聯起來
  3. 切換 DNS:把網域名稱指向 CLB
  4. 完成遷移:享受高可用性的好處

真實企業案例:

某家經營 15 年的電商網站,原本使用單台實體伺服器。隨著業務成長,經常因為流量高峰導致網站緩慢。他們選擇用 CLB 進行雲端遷移,不需要重寫任何程式碼,就成功解決了效能問題,網站穩定性從 95% 提升到 99.5%。

CLB 的投資考量

什麼時候應該選擇 CLB?

適合 CLB 的情況:

  • 技術團隊經驗有限,需要簡單易懂的解決方案
  • 專案時程緊迫,沒有時間學習複雜功能
  • 應用需求簡單,不需要進階路由功能
  • 預算有限,想要最經濟的負載均衡方案

什麼時候應該直接選擇 ALB?

  • 現代 Web 應用或 API 服務
  • 需要微服務架構
  • 有路徑路由需求
  • 團隊有足夠的技術能力

升級路徑:
很多公司會先用 CLB 快速上線,隨著業務成長和需求複雜化,再逐步升級到 ALB 或 NLB。這是一個務實的選擇,讓你可以在不同階段使用最適合的工具。

總結:

CLB 就像一把好用的萬能工具,雖然不是最先進的,但簡單可靠,特別適合新手或簡單應用。在負載均衡的世界裡,有時候「夠用」比「完美」更重要。

三種 ELB 的選擇指南

情況推薦選擇理由
現代 Web 應用、API 服務ALB智慧路由、豐富功能
微服務架構ALB可以根據路徑分配不同服務
遊戲、即時通訊NLB極低延遲、支援 UDP
需要固定 IPNLB唯一提供靜態 IP 的選擇
企業內部系統NLB固定 IP、自訂 Port
簡單網站、快速上線CLB設定簡單、功能夠用
傳統應用遷移CLB不用改變現有架構
推薦選擇ALB
理由智慧路由、豐富功能
推薦選擇ALB
理由可以根據路徑分配不同服務
推薦選擇NLB
理由極低延遲、支援 UDP
推薦選擇NLB
理由唯一提供靜態 IP 的選擇
推薦選擇NLB
理由固定 IP、自訂 Port
推薦選擇CLB
理由設定簡單、功能夠用
推薦選擇CLB
理由不用改變現有架構

成本考量

價格比較(以美東地區為例):

  • CLB:每月約 $18 USD + 流量費用
  • ALB:每月約 $22 USD + 流量費用 + LCU 費用
  • NLB:每月約 $22 USD + 流量費用 + NLCU 費用

註: LCU/NLCU 是負載均衡容量單位,根據實際使用量計費

遷移建議

如果你目前使用 CLB:

✓ 功能夠用就繼續使用,不用急著升級
✓ 需要路徑路由時再考慮升級到 ALB
✓ 需要更高效能時再考慮升級到 NLB

新專案建議:

✓ 一般網站:直接選擇 ALB
✓ 高效能需求:直接選擇 NLB
✓ 除非有特殊原因,否則不建議新專案使用 CLB

實際運作方式

基本流程:用戶請求 → ELB 檢查各台 EC2 的負載狀況 → 選擇最不忙的那台 → 轉發請求

ELB + ASG:完美的黃金組合

到目前為止,我們已經了解了 ELB 如何智慧地分配流量到多台伺服器,大幅提升網站的穩定性和效能。但是,還有一個關鍵問題沒有解決:要準備多少台伺服器才夠?

固定伺服器數量的困境

現實中的流量挑戰:

  • 網站流量經常是波動的:白天多、晚上少
  • 特殊活動(如促銷、突發新聞)可能帶來意想不到的流量激增
  • 為了應對尖峰流量,你可能需要準備 20 台伺服器
  • 但 80% 的時間,你可能只需要 5 台伺服器就夠了

這就像為了偶爾的聚餐,永遠在家裡準備 20 人份的桌椅一樣浪費。

認識 ASG:自動擴展魔法師

這就是為什麼我們需要 Auto Scaling Group (ASG)!

ASG 是 AWS 的自動化魔法師,它與 ELB 完美搭配,不只能智慧分配流量,還能動態調整伺服器數量。想像有一個聰明的助手 24 小時監控你的網站,當發現流量增加時立刻叫更多人手來幫忙,流量減少時又讓多餘的人員下班,既確保服務品質又控制成本。

ELB + ASG 的完美協作:

graph TB
    User[用戶流量] --> ELB[ELB 負載均衡器]
    ELB --> Server1[伺服器 1]
    ELB --> Server2[伺服器 2]
    ELB --> Server3[伺服器 3 ⭐新增]

    ASG[ASG 自動擴展群組] -.->|監控並自動調整| Server1
    ASG -.->|監控並自動調整| Server2
    ASG -.->|監控並自動調整| Server3

    %% 樣式設定
    classDef userStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px
    classDef elbStyle fill:#fff3e0,stroke:#e65100,stroke-width:3px
    classDef serverStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
    classDef asgStyle fill:#e8f5e8,stroke:#1b5e20,stroke-width:3px

    class User userStyle
    class ELB elbStyle
    class Server1,Server2,Server3 serverStyle
    class ASG asgStyle
  • ELB 負責:把流量智慧分配給現有的伺服器
  • ASG 負責:根據實際需求自動增加或減少伺服器數量
  • 兩者結合:創造出既聰明又彈性的完美架構

ASG 的核心概念

什麼是自動擴展?

想像你經營一家餐廳:

  • 傳統做法:無論是平日還是假日,都雇用固定數量的員工
  • ASG 做法:平日用少數員工,假日自動增加臨時工,用餐尖峰過後又讓臨時工下班

ASG 就是這個概念在雲端運算的實現,它會根據實際需求動態調整伺服器數量,讓你永遠有剛好夠用的資源。

為什麼需要自動擴展?

解決流量不可預測的問題:

  • 網站流量經常是波動的,白天多、晚上少
  • 特殊活動(如促銷、新聞事件)可能帶來突然的流量激增
  • 手動調整伺服器數量既慢又容易出錯
  • 人工監控 24 小時既昂貴又不現實

設定範例

基本配置參數

容量控制設定:

最小數量:2 台

  • 作用:確保基本服務永不中斷
  • 重要性:即使流量為零,也至少保持 2 台伺服器運行
  • 實際意義:就像餐廳至少要有一個廚師和一個服務員,確保隨時能接待客人

最大數量:20 台

  • 作用:避免成本失控的安全機制
  • 重要性:防止系統誤判導致無限制擴展
  • 實際意義:設定花費上限,避免意外的天價帳單

目標數量:動態調整

  • 作用:根據實際負載需求調整伺服器數量
  • 監控指標:CPU 使用率、記憶體使用率、網路流量等
  • 實際意義:像是根據餐廳客人多少決定當班員工數量

自動擴展規則詳解

擴展規則(Scale Out):

觸發條件:CPU 使用率 > 70% 且持續 5 分鐘

  • 為什麼是 70%?:留有緩衝空間,避免伺服器過載
  • 為什麼等 5 分鐘?:避免因短暫流量波動而頻繁調整
  • 實際動作:增加 2 台 EC2 實例

縮減規則(Scale In):

觸發條件:CPU 使用率 < 30% 且持續 10 分鐘

  • 為什麼是 30%?:確保有足夠的資源處理突然增加的流量
  • 為什麼等 10 分鐘?:縮減比擴展更保守,避免過度縮減
  • 實際動作:減少 1 台 EC2 實例

智慧調整機制:

漸進式擴展:
不會一次性增加太多伺服器,而是逐步增加,觀察效果後再決定是否繼續擴展。

保守式縮減:
縮減比擴展更小心,確保不會因為過度縮減而影響服務品質。

實際場景範例

電商網站的一天

平日晚上 11 點:

  • 流量狀況:大部分用戶都在睡覺,網站訪問量很少
  • ASG 動作:自動縮減到最小配置,只保持 3 台 EC2 運行
  • 成本效益:節省 17 台伺服器的費用,每小時節省約 $17 USD

周末促銷活動開始:

  • 流量狀況:促銷廣告發布後,大量用戶湧入網站
  • ASG 動作:檢測到 CPU 使用率超過 70%,開始自動擴展
  • 擴展過程:5 分鐘內從 3 台增加到 5 台,再過 5 分鐘增加到 7 台,最終擴展到 15 台
  • 使用者體驗:網站始終保持快速回應,沒有因為流量激增而變慢

促銷結束後:

  • 流量狀況:促銷活動結束,用戶逐漸離開網站
  • ASG 動作:檢測到 CPU 使用率降低,開始保守地縮減伺服器
  • 縮減過程:每 10 分鐘減少 1 台,最終回到 3 台的日常配置
  • 成本控制:不會因為促銷結束後仍維持高配置而浪費錢

進階應用場景

新聞網站的突發事件

平常時期:

  • 維持 4 台伺服器處理日常新聞瀏覽
  • CPU 使用率通常在 40-50% 之間

重大新聞事件發生:

  • 突然湧入數十倍的流量
  • ASG 在 15 分鐘內將伺服器數量從 4 台擴展到 18 台
  • 網站穩定承受平時 10 倍的流量

事件熱度消退:

  • 流量逐漸回歸正常
  • ASG 花費 2 小時逐步縮減回 4 台配置

企業應用系統

工作日早上 9 點:

  • 員工開始上班,系統使用量激增
  • ASG 自動從夜間的 2 台擴展到 8 台

午休時間:

  • 系統使用量降低,縮減到 5 台

下班時間:

  • 員工下班,系統使用量大幅降低
  • 自動縮減回 2 台維持基本服務

ASG 的商業價值

成本效益分析:

傳統固定配置方式:

  • 為了應對尖峰流量,必須永遠維持高配置
  • 大部分時間資源都被浪費
  • 月費用:20 台 × 24 小時 × 30 天 × $1 USD = $14,400 USD

ASG 動態配置方式:

  • 只在需要時使用高配置
  • 平均使用量:6 台伺服器
  • 月費用:6 台 × 24 小時 × 30 天 × $1 USD = $4,320 USD
  • 節省成本:70%

服務品質保證:

  • 自動回應流量變化,用戶體驗始終良好
  • 24/7 監控,無需人工干預
  • 避免因流量激增導致的服務中斷

風險管理:

  • 設定最大數量避免成本失控
  • 設定最小數量確保基本服務
  • 多重監控指標避免誤判

設定建議

新手建議設定:

  • 最小數量:2 台(確保高可用性)
  • 最大數量:10 台(控制成本風險)
  • 擴展閾值:CPU > 60%(較保守的設定)
  • 縮減閾值:CPU < 40%(避免過度縮減)

進階使用者設定:

  • 結合多個監控指標(CPU、記憶體、網路)
  • 使用自訂指標(如應用程式回應時間)
  • 設定不同時段的不同規則
  • 整合 CloudWatch 告警機制

總結:

ASG 就像是一個永不疲倦的運營管理師,24 小時監控你的業務需求,自動調配資源。它不只是節省成本的工具,更是確保服務品質和提升競爭優勢的關鍵技術。有了 ASG,你可以安心睡覺,知道無論何時有流量高峰,系統都能自動應對。

如何設定你的第一個 ELB?

步驟一:準備工作

建立多台 EC2 實例

  • 至少準備 2 台伺服器
  • 在每台伺服器安裝相同的應用程式
  • 確保所有伺服器都能正常運作

設定安全群組

  • 開放必要的連接埠(如 80, 443)
  • 確保 ELB 可以正常連接到後端伺服器

步驟二:建立 Load Balancer

選擇負載均衡器類型

  • 新手建議選擇 Application Load Balancer
  • 一般網站都很適用

進行基本設定

  • 為你的 Load Balancer 取一個容易識別的名字
  • 選擇適當的網路和子網路
  • 設定對應的安全群組

設定目標群組

  • 將你的伺服器加入目標群組
  • 設定健康檢查規則
  • 定義流量分配的方式

步驟三:測試和監控

驗證功能是否正常

  • 使用 ELB 提供的網址測試網站功能
  • 檢查流量是否正確分配到各台伺服器
  • 模擬伺服器故障情況,測試容錯能力

設定監控機制

  • 啟用 CloudWatch 監控功能
  • 設定告警通知規則
  • 定期檢查健康狀態報告

實際使用建議和注意事項

成本控制小技巧

選對類型很重要

  • 簡單網站使用 ALB 就足夠了
  • 不要為了炫技而選用過度複雜的類型

善用自動擴展功能

  • 設定根據實際流量自動增減伺服器數量
  • 避免養太多閒置的伺服器浪費成本
  • 在夜間流量較少時自動減少資源使用

安全設定重點

SSL 憑證管理

  • 在 ELB 層級統一處理 HTTPS 加密
  • 使用 AWS Certificate Manager 的免費 SSL 憑證
  • 後端伺服器可以使用 HTTP 來簡化設定

存取控制設定

  • 設定 IP 白名單限制特定來源存取
  • 使用 WAF (Web Application Firewall) 進行安全防護
  • 定期檢查和更新安全群組規則

效能優化密技

健康檢查調整

  • 不要設定過於頻繁的檢查,避免浪費系統資源
  • 設定合理的連線逾時時間
  • 使用輕量級的健康檢查路徑

快取策略規劃

  • 結合 CloudFront CDN 來加速內容傳遞
  • 靜態資源使用 S3 + CloudFront 的組合
  • 動態內容使用 ELB + EC2 的架構

常見問題解答

Q: ELB 的費用會不會很昂貴?

A: 其實費用並不高,而且投資報酬率很好

  • 基本費用:每月約 $16-20 美元
  • 計費方式:按實際流量使用量計費,用多少付多少
  • 價值評估:比起網站當機造成的業務損失,這點費用其實微不足道

Q: 設定過程會不會很複雜?

A: AWS 的操作介面很友善,跟著設定精靈就能完成

  • 提供詳細的設定精靈引導
  • 大部分設定選項都有合理的預設值
  • 遇到問題時有豐富的官方文件和社群支援

Q: 我的小型網站真的需要使用 ELB 嗎?

A: 要看你的具體需求和預算考量

  • 建議使用的情況:如果網站對你的業務很重要,哪怕是小網站也值得投資
  • 可以暫緩的情況:如果只是個人部落格且流量很少
  • 一定要使用的情況:商業網站、電商平台、任何涉及金錢交易的應用

Q: 如何有效監控 ELB 的效能表現?

A: AWS 提供了完整的監控工具套件

  • 透過 CloudWatch 可以查看詳細的流量使用圖表
  • 可以設定智能告警,有異常狀況時會自動發送通知
  • 健康檢查報告讓你隨時掌握各伺服器的運行狀態

總結:開始你的 ELB 之旅

重點回顧

  1. ELB 是網站穩定運行的重要保險 – 讓你不再害怕流量暴增或伺服器故障帶來的風險
  2. 選對類型非常重要 – ALB 適合大部分現代網站,NLB 適合有高效能需求的應用
  3. 設定過程並不困難 – 跟著 AWS 的設定精靈,大約 30 分鐘就能完成基本配置
  4. 投資報酬率很高 – 相對小的成本投入,換來網站運行的大幅穩定提升

下一步行動建議

如果你是 AWS 新手:

  • 先使用 AWS 免費方案來實驗 ALB 功能
  • 建立一個簡單的測試環境來熟悉操作
  • 在熟悉基本操作後再應用到正式的生產環境

如果你已經有現有網站:

  • 仔細評估目前網站的流量模式和穩定性需求
  • 制定詳細的 ELB 導入時程規劃
  • 準備完善的備援方案,確保轉換過程順利無阻

記住: 網站的穩定性會直接影響用戶體驗和最終的業務成果。

投資 ELB 不只是單純的技術升級,更是對用戶服務品質的承諾和對自己業務的長期保護。

現在就開始規劃你的 ELB 導入策略吧!

目前還沒有留言,成為第一個留言的人吧!

發表留言

留言將在審核後顯示。

架構

目錄

  • 從單一伺服器到負載均衡架構
  • 單一伺服器的困境
  • 多伺服器架構的需求
  • 什麼是負載均衡?
  • 負載均衡的基本概念
  • 負載均衡架構的優勢
  • AWS ELB:託管式負載均衡解決方案
  • ELB 的類型選擇
  • Application Load Balancer (ALB) – 第7層負載均衡器
  • Network Load Balancer (NLB) – 第4層負載均衡器
  • Classic Load Balancer (CLB) – 傳統負載均衡器
  • 三種 ELB 的選擇指南
  • ELB + ASG:完美的黃金組合
  • 固定伺服器數量的困境
  • 認識 ASG:自動擴展魔法師
  • ASG 的核心概念
  • 設定範例
  • 實際場景範例
  • 進階應用場景
  • 如何設定你的第一個 ELB?
  • 步驟一:準備工作
  • 步驟二:建立 Load Balancer
  • 步驟三:測試和監控
  • 實際使用建議和注意事項
  • 成本控制小技巧
  • 安全設定重點
  • 效能優化密技
  • 常見問題解答
  • Q: ELB 的費用會不會很昂貴?
  • Q: 設定過程會不會很複雜?
  • Q: 我的小型網站真的需要使用 ELB 嗎?
  • Q: 如何有效監控 ELB 的效能表現?
  • 總結:開始你的 ELB 之旅
  • 重點回顧
  • 下一步行動建議