Danh mục sản phẩm
Lab: Dựng HA Cluster Active-Passive (FGCP) trên FortiGate
1. Liên hệ thực tế
Đúng như tình huống chị Lan kể ở bài lý thuyết, anh Nam dựng lại Lab với đúng lỗi kinh điển đó để tự tay trải nghiệm: lần đầu đấu heartbeat qua switch chung, quan sát cluster không bao giờ join được; sau đó đấu lại trực tiếp port-to-port để thấy sự khác biệt. Chị Lan nói thêm: "Làm Lab HA quan trọng nhất là bước test failover thật — rút cáp WAN của Primary giữa lúc đang ping liên tục, xem thời gian mất gói bao lâu. Nếu chỉ đọc get system ha status mà không test failover, coi như chưa hiểu HA."
Lab này dựng cluster Active-Passive 2 node đúng theo sơ đồ bài lý thuyết, tới khi cluster in-sync và xử lý traffic ổn định. Phần test failover thật, so sánh override, và giả lập split-brain được tách sang Lab riêng đi kèm bài kế tiếp để tránh trùng lặp nội dung.
2. Kiến thức cốt lõi — Các bước thực hành
2.1 Sơ đồ Lab
| Thiết bị | Vai trò | port1 (WAN) | port2 (LAN) | port3 (ha1) | port4 (ha2) | Priority |
|---|---|---|---|---|---|---|
| FGT-A | Primary (dự kiến) | Switch WAN | Switch LAN | Đấu trực tiếp sang FGT-B | Đấu trực tiếp sang FGT-B | 200 |
| FGT-B | Secondary (dự kiến) | Switch WAN | Switch LAN | Đấu trực tiếp sang FGT-A | Đấu trực tiếp sang FGT-A | 100 |
Yêu cầu môi trường: 2 FortiGate cùng model, cùng phiên bản firmware (bắt buộc theo yêu cầu FGCP), port1/port2 của cả hai đấu chung vào switch LAN/WAN, port3/port4 đấu chéo trực tiếp giữa 2 máy (không qua switch), 1 PC test ở LAN để theo dõi ping liên tục trong lúc failover.
⚠️ Điểm dễ sai #1 (đúng tình huống anh Nam gặp): Nếu Lab dựng trên GNS3/EVE-NG, tuyệt đối không nối port3/port4 qua switch ảo chung với port1/port2 — phải là link riêng point-to-point giữa 2 node FortiGate.
2.2 Bước 1 — Kiểm tra 2 FortiGate giống nhau trước khi bắt đầu
get system status
Chạy trên cả 2 máy, đối chiếu dòng Version (firmware) và model — phải khớp tuyệt đối. Nếu khác firmware, nâng cấp/hạ cấp cho khớp trước khi tiếp tục (Fortinet không hỗ trợ join cluster khác version).
2.3 Bước 2 — Cấu hình HA trên FGT-A (Primary dự kiến)
config system ha
set group-id 10
set group-name HQ-Cluster-Lab
set mode a-p
set password Str0ngP@ssHA
set hbdev port3 50 port4 50
set session-pickup enable
set override enable
set priority 200
end
2.4 Bước 3 — Cấu hình HA trên FGT-B (Secondary dự kiến)
config system ha
set group-id 10
set group-name HQ-Cluster-Lab
set mode a-p
set password Str0ngP@ssHA
set hbdev port3 50 port4 50
set session-pickup enable
set override enable
set priority 100
end
⚠️ Điểm dễ sai #2: Gõ sai password hoặc group-id lệch nhau dù chỉ 1 ký tự giữa 2 node — cluster sẽ không bao giờ join, và log thường chỉ báo chung chung "negotiate" lặp lại chứ không chỉ đích danh nguyên nhân là sai password.
2.5 Bước 4 — Đấu nối vật lý và chờ cluster hình thành
Sau khi apply cấu hình trên cả 2 node, đấu cáp:
- port3 FGT-A ↔ port3 FGT-B (ha1)
- port4 FGT-A ↔ port4 FGT-B (ha2)
- port1 cả hai vào switch WAN chung, port2 cả hai vào switch LAN chung
Chờ khoảng 1–2 phút để cluster tự thương lượng (config sẽ tự đồng bộ từ Primary sang Secondary, không cần cấu hình tay trên FGT-B sau bước này).
2.6 Bước 5 — Kiểm tra cluster đã hình thành
get system ha status diagnose sys ha status
Kỳ vọng thấy cả 2 thành viên với Configuration Status: in-sync, một node là Primary/Master, một node là Secondary/Slave. Ghi lại Serial Number của node đang là Primary — sẽ dùng để đối chiếu ở bước test failover.
Kiểm tra thêm heartbeat interface nào đang thực sự active:
diagnose sys ha checksum cluster get system ha status
Cột thông tin heartbeat trong get system ha status cho biết interface nào (port3/port4) đang đảm nhiệm heartbeat traffic thực tế tại thời điểm kiểm tra.
⚠️ Điểm dễ sai #3: Nếu Configuration Status báo not synchronized kéo dài, kiểm tra lại theo thứ tự: (1) group-id/password/mode có khớp tuyệt đối giữa 2 node; (2) heartbeat interface đã lên link (kiểm tra đèn cổng vật lý hoặc diagnose netlink interface list); (3) hai node đúng là cùng model/firmware như đã kiểm tra ở Bước 1.
2.7 Bước 6 — Cấu hình Firewall Policy và xác nhận traffic đi qua cluster bình thường
Đăng nhập vào địa chỉ quản lý cluster (không phải IP riêng từng node — sau khi join cluster, quản trị viên thao tác trên node Primary, cấu hình tự động đồng bộ sang Secondary). Tạo một Policy đơn giản cho phép LAN ra Internet, sau đó từ PC test, ping thử ra ngoài để xác nhận cluster đang xử lý traffic bình thường:
ping 8.8.8.8
Nếu ping thành công và get system ha status vẫn báo in-sync ổn định, cluster đã sẵn sàng cho môi trường thực tế.
💡 Phần tiếp theo — test Failover thật, so sánh
override enable/disable, và giả lập Split-Brain sẽ được thực hành chi tiết trong Lab riêng đi kèm bài HA Failover Testing & Troubleshooting, bao gồm cả cách dùng lệnhexecute ha failover setđể ép failover có kiểm soát ngay trong CLI (không cần rút cáp vật lý), và cách đọc logdiagnose debug application hatalkkhi cluster không join được. Lab này chỉ dừng ở bước dựng cluster thành công.
3. Hỏi & Đáp
Nếu Lab không có đủ 2 FortiGate vật lý, có thể test bằng FortiGate-VM không?
Được — FGCP hoạt động tương tự trên FortiGate-VM, chỉ cần đảm bảo 2 VM cùng version, và heartbeat interface được nối qua vNIC riêng (trong VMware/ESXi cần đặt đúng port group cho phép broadcast/multicast qua được, vì mặc định một số vSwitch có thể chặn).
Sau khi cluster đã in-sync, có cần cấu hình Firewall Policy/Address Object riêng trên từng node không?
Không — sau khi join cluster thành công, mọi thao tác cấu hình (Policy, Address Object, User...) chỉ cần thực hiện một lần trên node đang là Primary, FGCP sẽ tự động đồng bộ toàn bộ cấu hình sang node Secondary. Đây là lý do vì sao ở Bước 6, Lab chỉ nhắc "đăng nhập vào địa chỉ quản lý cluster" chứ không cấu hình riêng từng node.
Lab này dừng ở đâu, phần test failover/split-brain nằm ở đâu?
Lab này chỉ dừng ở việc dựng cluster thành công và xác nhận traffic đi qua bình thường (in-sync, ping ra ngoài được). Phần test failover thật, so sánh hành vi override, và giả lập split-brain được tách sang Lab riêng đi kèm bài HA Failover Testing & Troubleshooting để tránh trùng lặp nội dung giữa hai bài.
4. Quiz
Câu 1: Trước khi 2 FortiGate có thể join cluster, yêu cầu bắt buộc nào sau đây phải giống nhau?
- A. Priority
- B. Model và phiên bản firmware
- C. IP quản lý
- D. Tên hostname
Câu 2: Trong Lab, vì sao heartbeat interface bắt buộc đấu trực tiếp port-to-port thay vì qua switch chung?
- A. Vì FortiGate không có đủ cổng để đấu qua switch
- B. Vì switch có thể chặn/trễ gói heartbeat, đặc biệt khi có VLAN tag hoặc STP can thiệp
- C. Vì đấu trực tiếp giúp tăng băng thông traffic LAN
- D. Không có lý do kỹ thuật, chỉ là khuyến nghị thẩm mỹ
Câu 3: Sau khi cluster đã in-sync, cấu hình Firewall Policy mới cần thực hiện ở đâu?
- A. Trên cả 2 node, mỗi node một lần
- B. Chỉ trên node Primary, cấu hình tự động đồng bộ sang Secondary
- C. Chỉ trên node Secondary
- D. Cấu hình qua FortiManager, không thể cấu hình trực tiếp
Câu 4: Configuration Status: in-sync trong get system ha status cho biết điều gì?
- A. Cluster đang bị lỗi nghiêm trọng
- B. Cấu hình giữa 2 node đã đồng bộ thành công, cluster hoạt động bình thường
- C. Heartbeat interface đã bị ngắt kết nối
- D. Cluster đang trong quá trình failover
👉 Đáp án
Câu 1: B Model và phiên bản firmware phải giống nhau tuyệt đối để 2 FortiGate có thể join thành cluster FGCP; priority ngược lại là tham số nên khác nhau.
Câu 2: B Switch trung gian có thể chặn hoặc làm trễ gói heartbeat, đặc biệt khi có VLAN tag hoặc STP can thiệp vào traffic — đấu trực tiếp loại bỏ hoàn toàn rủi ro này.
Câu 3: B Sau khi join cluster, mọi cấu hình chỉ cần thực hiện một lần trên node Primary — FGCP tự động đồng bộ toàn bộ cấu hình sang node Secondary, không cần lặp lại thao tác trên từng node.
Câu 4: B Configuration Status: in-sync xác nhận cấu hình giữa các thành viên cluster đã đồng bộ thành công và cluster đang hoạt động ở trạng thái ổn định bình thường.
📚 Bài Lab thuộc khóa học FortiGate của VNExperts
🧭 Điều hướng
| ⬅️ Bài lý thuyết | 🏠 Mục lục khóa học | Bài kế tiếp ➡️ |
|---|---|---|
| Cấu hình HA Cluster FortiGate & Heartbeat Interface (FGCP) | Mục lục khóa học FortiGate | HA failover testing & troubleshooting |
