Fortinet FortiGate 實戰課程

Level 3: Architect - 高可用性 (High Availability)

單元介紹

在企業級網路架構中,單點故障 (Single Point of Failure) 是最大的風險。本單元將深入探討 FortiGate 的高可用性 (HA) 機制,學習如何透過多台設備組成叢集 (Cluster),實現 99.999% 的服務不中斷。

一、核心概念 (Concept)

HA 的模式:A-P 與 A-A

Active-Passive (A-P) 主備模式

最常見的部署方式。一台設備負責處理所有流量,另一台待命,僅同步設定與連線狀態 (Session)。

生活化比喻:飛機駕駛

就像飛機上的「正駕駛 (Active)」與「副駕駛 (Passive)」。平常由正駕駛全權操控飛機,副駕駛只負責監控儀表並保持同步。只有當正駕駛突然暈倒 (設備故障) 時,副駕駛才會接手控制權。這確保了航程 (網路連線) 不會中斷。

Active-Active (A-A) 雙活模式

兩台設備同時運作。Primary 負責流量分配與控制,Secondary 協助處理 UTM 安全掃描 (如 AV, IPS)。

生活化比喻:超市收銀台

就像超市開了兩個收銀櫃檯。雖然有一個資深店長 (Primary) 負責引導排隊隊伍,但他會把部分只需掃描條碼的顧客 (UTM 流量) 分流給另一個店員 (Secondary) 處理,兩人一起工作來加快結帳速度。

二、運作原理 (Mechanism)

FGCP (FortiGate Clustering Protocol)

FortiGate 使用專有的 FGCP 協定來溝通。透過專屬的 Heartbeat Link (心跳線),設備之間會不斷交換 Hello 封包以確認彼此存活。

1. Master 選舉邏輯 (Election)

當兩台設備連接時,誰當老大 (Primary)?系統會依照以下順序比較,由高到低:

  1. Monitored Ports: 有效連接埠數量越多越好 (例如 WAN 線路斷了,該台即降級)。
  2. HA Uptime: 運行時間越長越好 (穩定性優先)。
    *註:若開啟 Override,此項會被忽略。
  3. Priority: 人為設定的優先權數值 (大於小,預設 128)。
  4. Serial Number: 序號越大者優先 (最後手段)。

2. 同步內容 (Synchronization)

  • Configuration: 除了 Hostname、HA 設定、特定介面 IP 外,幾乎所有設定全同步。
  • Session Table: 只有 TCP/IP 連線狀態會被同步 (ICMP/UDP 通常不預設同步),確保切換時使用者不需重新登入。
關鍵技術:Virtual MAC (vMAC)
Cluster 會產生虛擬 MAC 位址。當切換發生時,新 Primary 會發送 Gratuitous ARP (GARP) 告訴交換器:「嘿!這個 IP 現在對應到我的 Port 了」,從而將流量引導過來。
三、架構視覺化 (Visuals)

HA 拓撲與切換流程

1. 實體連接拓撲圖 (Physical Topology)

graph TD %% 定義樣式 classDef firewall fill:#e11d48,stroke:#881337,stroke-width:2px,color:white; classDef switch fill:#3b82f6,stroke:#1d4ed8,stroke-width:2px,color:white; classDef internet fill:#fbbf24,stroke:#d97706,stroke-width:2px; Internet(("Internet")):::internet subgraph "High Availability Cluster" FGT_A["FortiGate A<br/>(Primary)"]:::firewall FGT_B["FortiGate B<br/>(Secondary)"]:::firewall end SW_WAN["WAN Switch"]:::switch SW_LAN["Core Switch"]:::switch Users(("Internal Users")) %% 連線關係 Internet --- SW_WAN SW_WAN -- "Port1 (WAN)" --> FGT_A SW_WAN -- "Port1 (WAN)" --> FGT_B FGT_A -- "HA1 + HA2<br/>(Heartbeat Sync)" --- FGT_B FGT_A -- "Port2 (LAN)" --> SW_LAN FGT_B -- "Port2 (LAN)" --> SW_LAN SW_LAN --- Users %% 註解 %% Index 3 is the HA link (4th link defined) linkStyle 3 stroke:#e11d48,stroke-width:3px;

2. 故障切換流程 (Failover Sequence)

sequenceDiagram participant User as 使用者 PC participant SW as Core Switch participant Pri as FGT-Primary participant Sec as FGT-Secondary Note over Pri, Sec: 正常狀態:A-P 模式 Pri->>Sec: Heartbeat (Hello + Session Sync) User->>SW: 傳送 HTTP Request SW->>Pri: 轉送流量 (Target: vMAC_A) Pri-->>SW: 回傳 HTTP Response Note over Pri: ⚠️ 發生故障 (斷電/當機) Note over Sec: 連續 3 個 Heartbeat 未收到回應 Note over Sec: 選舉機制啟動 -> 升級為 Primary Sec->>SW: 發送 Gratuitous ARP (GARP)<br/>"IP x.x.x.x 現在在我的 Port 上!" SW->>SW: 更新 MAC Address Table User->>SW: 傳送下一個 HTTP Request SW->>Sec: 轉送流量 (Target: vMAC_A) Note right of SW: 因為 Session 已同步,<br/>連線不中斷 Sec-->>SW: 回傳 HTTP Response
四、實務應用場景 (Use Case)

企業總部 HA 部署實戰

情境: 一間擁有 500 人的企業總部,要求網路不能因為單一設備故障而中斷。我們將部署兩台 FortiGate 100F 建立 A-P Cluster。

  • 目標: 建立 Active-Passive HA。
  • 要求: FGT-A 必須優先成為 Master (透過 Priority 設定)。開啟 Session Pickup (連線同步)。設定 Group ID 以避免 MAC 衝突。

設定範例 (Configuration Example)

FortiGate-A (Primary)
config system ha set group-name "HQ-Cluster" set mode a-p set password Fortinet123! set group-id 10 set hbdev "ha1" 50 "ha2" 50 set session-pickup enable set override disable set priority 200 set monitor "wan1" "internal" end

說明:Priority 設為 200 (預設 128),確保它在正常情況下勝出。

FortiGate-B (Secondary)
config system ha set group-name "HQ-Cluster" set mode a-p set password Fortinet123! set group-id 10 set hbdev "ha1" 50 "ha2" 50 set session-pickup enable set override disable set priority 100 set monitor "wan1" "internal" end

說明:Group Name、Group ID 與 Password 必須完全一致才能形成 Cluster。在同一網段中有多組 HA Cluster 的環境(例如實驗室或大型資料中心)特別重要,因為 Group ID 決定了 Virtual MAC Address,若重複會導致衝突。

大師觀點:Override (搶佔模式) 要開嗎?

許多新手會開啟 set override enable,希望 Primary 復電後自動搶回主控權。但在實務上,建議設為 disable (預設值)

原因: 如果原本的 Primary 剛修好,系統可能還不穩定 (Flapping)。若立刻搶回主控權,可能導致網路再次中斷。保持 disable,讓它先以 Secondary 身份同步資料並待命,直到下一次維護視窗再手動切換,是比較穩健 (Stable) 的做法。

五、隨堂測驗 (Quiz)

FortiGate HA 架構師挑戰