A10 Networks Thunder 實戰課程

Level 1 - Foundation: 3. SLB (Server Load Balancing) 核心邏輯

講師: A10 Thunder 架構大師

一、核心概念 (Concept)

一句話定義

SLB (伺服器負載平衡) 就像是一位交通指揮官,將來自用戶端的請求,依據特定的規則,聰明地分配給後端多台伺服器,確保沒有一台伺服器過勞,也沒有一台閒置。

生活化比喻:銀行櫃台

想像你去銀行辦事:

  • Virtual Server (VIP):抽號碼牌機(你只認得這個入口)。
  • A10 Thunder (SLB):大廳經理(負責看哪個櫃台沒人,叫你的號碼)。
  • Real Server:實際辦理業務的行員(真正處理工作的人)。
重點:客戶不需要知道哪個行員有空,只找大廳經理即可。

二、運作原理 (Mechanism)

1. 關鍵物件階層 (Hierarchy)

Real Server (RS)

真實的物理或虛擬主機 IP。
(例如:192.168.1.10)

Service Group (SG)

將一群提供相同服務的 RS 綁定在一起的邏輯群組。

Virtual Server (VIP)

對外服務的 IP 地址,接收使用者流量的入口。

2. 負載平衡演算法 (Algorithms)

Round Robin (RR)

輪流發牌。1號、2號、3號、1號... 公平但無視伺服器效能差異。

Least Connection (LC)

誰最閒給誰。將連線丟給當前連線數最少的伺服器。適合長連線服務。

Weighted (加權)

能者多勞。效能強的伺服器設高權重 (Weight),處理更多流量。

3. 健康檢查 (Health Monitor)

類型 檢查方式 優缺點
L3/L4 Check (Ping/TCP) Ping IP 或 Telnet Port (如 TCP 80)。 快、省資源。但無法得知 Web 服務是否當機 (例如 IIS 服務掛掉但 Port 還開著)。
L7 Check (HTTP/Content) 發送 HTTP GET,檢查回應是否為 "200 OK" 或包含特定關鍵字。 精準。能確認應用程式真的活著,但較耗資源。

三、運作模式 (Operation Modes)

A10 Thunder 支援多種網路部署模式,選擇哪種模式取決於現有的網路拓撲與是否需要保留來源 IP。

1. Route Mode (路由模式)

A10 位於 Client 與 Server 之間,並且擔任後端 Server 的 預設閘道 (Default Gateway)

特性:Server 回程流量自然經過 A10 (因為 Gateway 指向 A10)。

優點:通常不需要設定 Source NAT,Server 可以看到真實的 Client IP。

適用:新架設的網路環境,結構最單純。

2. One-Arm Mode (單臂模式)

A10 以「旁掛」方式連接在 Core Switch 旁。Server 的 Gateway 指向 Core Switch,而非 A10

關鍵限制:必須開啟 Source NAT (SNAT)

為什麼?若不做 SNAT,Server 回程流量會直接丟給 Gateway (Switch) 轉回給 Client,導致「來回不對稱路由」(Asymmetric Routing),連線會失敗。

適用:既有資料中心環境,無法更動 Server Gateway 設定時。

3. Transparent Mode (透明模式)

A10 作為 L2 Bridge (橋接器) 串接在網路中,不參與 L3 路由轉發。

特性:不需更動現有 IP 架構,設備就像「隱形」一樣。

適用:需要在不改變現有路由架構下,插入 SLB 或防火牆檢查功能。

四、架構視覺化 (Visuals)

圖一:ACOS 設定物件階層關係

flowchart TD %% Nodes Client((Client Device)) subgraph A10_Thunder [A10 Thunder ADC] direction TB VIP["Virtual Server (VIP)
1.1.1.1:80"] SG["Service Group
Algorithm: Round Robin"] RS1["Real Server 1
192.168.1.10"] RS2["Real Server 2
192.168.1.11"] RS3["Real Server 3
192.168.1.12"] VIP -->|Bound to| SG SG -->|Member| RS1 SG -->|Member| RS2 SG -->|Member| RS3 end subgraph Backend [Backend Environment] direction TB App1["Web App A"] App2["Web App A"] App3["Web App A"] end %% Edge Connections Client -->|Internet| VIP RS1 -.->|Health Check| App1 RS2 -.->|Health Check| App2 RS3 -.->|Health Check| App3 %% Styles classDef vip fill:#CF0072,stroke:#333,stroke-width:2px,color:#fff; classDef sg fill:#663399,stroke:#333,stroke-width:2px,color:#fff; classDef rs fill:#002F6C,stroke:#333,stroke-width:2px,color:#fff; class VIP vip; class SG sg; class RS1,RS2,RS3 rs;

圖二:Route Mode 架構 (Inline)

A10 也是 Server 的 Gateway,流量一進一出自然對稱

flowchart TD User((User)) Router["Core Router"] A10["A10 Thunder
Gateway for Servers"] Server["Real Server"] User -->|1. Request| Router Router -->|2. Traffic| A10 A10 -->|3. Load Balance| Server Server -->|4. Return| A10 A10 -->|5. Reply| Router classDef a10 fill:#002F6C,stroke:#333,stroke-width:2px,color:#fff; classDef server fill:#e2e8f0,stroke:#333,stroke-width:2px; class A10 a10; class Server server;

圖三:One-Arm Mode 架構 (Side-arm)

注意! 必須使用 SNAT,否則 Server 會直接回給 Router

flowchart TD User((User)) Router["Core Router
Gateway for Servers"] A10["A10 Thunder"] Server["Real Server"] User -->|1. Request| Router Router -->|2. Traffic| A10 A10 -->|3. SNAT + LB| Router Router -->|4. Forward| Server Server -->|5. Return to A10 IP| Router Router -->|6. Return to A10| A10 A10 -->|7. Reply to User| Router classDef a10 fill:#CF0072,stroke:#333,stroke-width:2px,color:#fff; classDef router fill:#FF6600,stroke:#333,stroke-width:2px,color:#fff; class A10 a10; class Router router;

五、實務應用場景 (Use Case)

場景:電商網站「雙11」搶購活動

企業部署了一組 Web 伺服器叢集 (Server Farm) 來應對瞬間爆量的搶購流量。使用 A10 Thunder ADC 作為 SLB。

設定策略:

  • 模式選擇:採用 One-Arm Mode,因為不想更改舊有伺服器的 Gateway 設定。
  • 演算法:使用 Weighted Round Robin
  • 會話保持:啟用 Cookie Persistence,確保使用者在結帳過程中購物車不會清空。

優缺點分析

優點 (Pros)

高可用性 (HA);One-Arm 模式下部署快速,不影響網路主骨幹。

缺點/挑戰 (Cons)

One-Arm 模式下 Server 看到的來源 IP 都是 A10 的 IP (因 SNAT),若需記錄真實 Client IP,需在 HTTP Header 插入 X-Forwarded-For

六、綜合設定範例 (Integrated Config)

場景:雙 Service Port 服務配置 (HTTP + HTTPS)

在此範例中,VIP 需要同時提供 Port 80 (HTTP)Port 443 (HTTPS) 的負載平衡服務。

注意: 針對 Port 443,本範例展示 Layer 4 (TCP) Pass-through 模式 (未綁定憑證)。若要使用 SSL Offload,請參考第八章的設定範例。

CLI 配置範例 (Command Line)

! 1. 設定 Real Server (定義後端實體主機) ! 需明確定義該主機有開啟哪些 Port slb server RS-01 192.168.1.10 port 80 tcp port 443 tcp slb server RS-02 192.168.1.11 port 80 tcp port 443 tcp ! 2. 設定 Service Group (分組) ! [重點] 將 Port 80 的成員綁成一組 slb service-group SG-Web-80 tcp member RS-01 80 member RS-02 80 ! [重點] 將 Port 443 的成員綁成另一組 slb service-group SG-Web-443 tcp member RS-01 443 member RS-02 443 ! 3. 設定 Virtual Server (VIP) ! 定義 VIP IP 與對外服務 Port slb virtual-server VIP-Web 10.0.0.100 ! 綁定 80 Group (L7 Mode) port 80 http service-group SG-Web-80 ! 綁定 443 Group (L4 Mode, No Cert) port 443 tcp service-group SG-Web-443

邏輯架構圖 (Mapping Logic)

flowchart TD subgraph VIP_Layer ["Virtual Server (VIP)"] V80["VIP Port 80
(HTTP Mode)"] V443["VIP Port 443
(TCP Mode)"] end subgraph SG_Layer ["Service Groups"] SG80["SG-Web-80
(Port 80 Only)"] SG443["SG-Web-443
(Port 443 Only)"] end subgraph RS_Layer ["Real Servers"] RS1_80["RS-01:80"] RS1_443["RS-01:443"] RS2_80["RS-02:80"] RS2_443["RS-02:443"] end %% Connections V80 -->|Bind| SG80 V443 -->|Bind| SG443 SG80 --> RS1_80 SG80 --> RS2_80 SG443 --> RS1_443 SG443 --> RS2_443 %% Styles classDef vip fill:#CF0072,stroke:#333,color:#fff; classDef sg fill:#663399,stroke:#333,color:#fff; classDef rs fill:#002F6C,stroke:#333,color:#fff; class V80,V443 vip; class SG80,SG443 sg; class RS1_80,RS1_443,RS2_80,RS2_443 rs;

七、關鍵功能:會話保持 (Persistence)

Persistence (又稱 Session Affinity) 是一種確保來自「同一位使用者」的請求,在一段時間內都會被分配到「同一台後端伺服器」的機制。
如果沒有 Persistence,使用者的購物車可能會因為請求跳轉到另一台伺服器而「憑空消失」。

1. Source IP Persistence (來源 IP 保持)

根據 Client 的 IP 地址來決定分配給哪台伺服器。相同 IP 永遠去同一台。

  • 簡單、支援所有 TCP/UDP 協定。
  • Mega-Proxy 問題:若大量使用者躲在同一個 NAT/Proxy 後面,負載會不均。

2. Cookie Persistence (HTTP Cookie 保持)

A10 在回應使用者的 HTTP Header 中插入一個專屬 Cookie,下次使用者帶這個 Cookie 來時即可識別。

  • 最精準:能精確識別每一個瀏覽器 Session,不受 Proxy 影響。
  • 僅適用於 HTTP/HTTPS 流量。

3. Destination IP Persistence (目的 IP 保持)

根據封包的「目的 IP」來決定分配路徑。

  • 適用場景:主要用於 Wildcard VIP (接收所有網段流量) 或 FWLB (防火牆負載平衡)
  • 確保前往特定目的地的流量,總是經過同一台防火牆或路由器,避免路由路徑不一致。

Persistence 設定範例與 Match Type 解析

Source IP Persistence 的 Match Type (匹配類型)

在設定 Source IP Persistence 時,match-type 決定了會話保持的顆粒度 (Granularity)。根據 CLI Reference,主要選項如下:

Default (預設值/無設定):

最細緻的模式。來自特定 Client 存取「同一個 Virtual IP 的 ServicePort」的流量,會被送往「同一個 Real Server」。

server [scan-all-members]:

針對「後端實體伺服器 (Real Server)」進行保持。
來自特定 Client 存取同一個 VIP 的任何 Service Port,都會被送往同一台 Real Server。
應用場景:跨 Port 保持 (Cross-port persistence),如 HTTP (80) 跳轉 HTTPS (443) 需連回同一台主機。`scan-all-members` 用於掃描所有成員狀態。

service-group:

適用於搭配 URL SwitchingHost Switching 使用。
確保當 Switching 規則選定某個 Service Group 後,後續請求持續鎖定該 Service Group。

範例 A: Cookie Persistence
! 1. 建立 Persistence Template
slb template persist cookie tmpl-cookie-web
  cookie-name MySiteID
  expire 0 ! 0 = Session Cookie
! 2. 綁定到 Virtual Server
slb virtual-server VIP-Web 10.0.0.100
  port 80 http
    template persist cookie tmpl-cookie-web
範例 B: Source IP Persistence
! 1. 建立 Source IP Template
slb template persist source-ip tmpl-src-ip
! 設定為 server 模式 (跨 Port)
  match-type server
  timeout 5
! 2. 綁定到 Virtual Server
slb virtual-server VIP-Service 10.0.0.100
  port 443 tcp
    template persist source-ip tmpl-src-ip
範例 C: Destination IP Persistence
! 1. 建立 Dest IP Template
slb template persist destination-ip tmpl-dst-ip
  timeout 5 ! 閒置 5 分鐘清除紀錄
! 2. 綁定到 Wildcard VIP
slb virtual-server VIP-Wildcard 0.0.0.0
  port 0 others
    template persist destination-ip tmpl-dst-ip

八、進階功能:SSL Offload (SSL 卸載)

SSL Offload (SSL Termination) 是一種將加密流量的「解密與加密」工作,從後端伺服器轉移到 A10 Thunder 設備上執行的技術。
用戶端與 A10 之間透過加密的 HTTPS 連線,而 A10 解密後,再以明文 HTTP (或輕量加密) 與後端伺服器溝通。

三大核心優勢 (Benefits)

1. 降低伺服器負載 (Server Offload)

SSL/TLS 的握手 (Handshake) 與加解密運算非常消耗 CPU 資源。將此工作交給 A10 的專用 ASIC 晶片處理,後端伺服器只需專注於產生網頁內容,大幅提升效能。

2. 憑證集中管理 (Centralized Certs)

企業不需在每一台 Web Server 上安裝與更新憑證。只需將憑證匯入 A10,即可統一管理與更新,減少過期風險與維運成本。

3. L7 可視性與安全性 (Visibility)

流量若是加密的,防火牆無法檢查內容。SSL Offload 解密後,A10 可以執行 WAF (網頁防火牆)Cookie PersistenceURL Switching 等進階 L7 功能。

運作架構與設定 (Architecture & Config)

flowchart TD Client((Client)) -- "HTTPS (Encrypted)" --> VIP[A10 VIP:443] subgraph A10 [A10 Thunder] VIP -- "Decrypt" --> Logic[L7 Engine] Logic -- "Inspect/LB" --> SG[Service Group] end SG -- "HTTP (Plain Text)" --> Server[Real Server:80] style A10 fill:#f0f9ff,stroke:#002F6C style Logic fill:#CF0072,color:#fff
! 1. 建立 Client-SSL Template (綁定憑證)
slb template client-ssl tmpl-ssl-web
  cert my-site-cert
  key my-site-key
! 2. 設定 VIP (使用 HTTPS 並套用 Template)
slb virtual-server VIP-Web 10.0.0.100
  port 443 https
    service-group SG-Web-80
    template client-ssl tmpl-ssl-web

九、隨堂測驗 (Quiz)