Danh mục sản phẩm
Cấu hình HA Cluster FortiGate & Heartbeat Interface (FGCP) — Hướng dẫn chi tiết
1. Liên hệ thực tế
Sau khi trình bày xong nguyên lý FGCP HA (Active-Passive, Active-Active, cách bầu chọn Primary) trong bài FGCP HA: Active-Passive, Active-Active — nguyên lý bầu chọn Master, chị Lan giao cho anh Nam việc triển khai thật: khách hàng là một công ty phân phối có datacenter nhỏ, yêu cầu 2 FortiGate 100F chạy HA Active-Passive, không được downtime quá vài giây khi 1 thiết bị hỏng.
Anh Nam bắt tay vào cấu hình nhưng loay hoay ở khâu heartbeat interface: đấu port3-port4 hai máy vào chung switch với port LAN, kết quả 2 FortiGate không bao giờ join được cluster, log báo liên tục "negotiate" rồi rớt. Chị Lan kiểm tra và chỉ ra lỗi kinh điển: heartbeat interface phải đấu trực tiếp port-to-port giữa 2 thiết bị, không được đi qua switch chung với traffic khác — vì switch có thể chặn hoặc trễ gói heartbeat (traffic heartbeat dùng Ethertype riêng, nhiều switch layer 2 không xử lý đúng khi có VLAN tag hoặc STP can thiệp).
Bài này đi vào chi tiết cách cấu hình cluster FGCP: chọn heartbeat interface, gán priority, group-id, password, và các tùy chọn quan trọng như session pickup, override.
2. Kiến thức cốt lõi
2.1 Thành phần bắt buộc của một FGCP cluster
Trước khi 2 FortiGate có thể join thành cluster, cả hai phải giống nhau về: model, phiên bản firmware, số lượng và loại interface, chế độ VDOM (bật/tắt), và license FortiGuard tương thích. Fortinet cũng khuyến cáo rõ: cùng model, cùng cấu hình phần cứng, cùng cách đấu nối, cùng thế hệ (generation) — nếu một thiết bị bị lỗi ổ cứng còn thiết bị kia thì không, thiết bị lỗi sẽ bị loại khỏi cluster ngay khi setup.
Các tham số phải giống nhau tuyệt đối trên cả 2 node:
| Tham số | Vai trò |
|---|---|
group-id |
Định danh cluster, dùng để tính Virtual MAC — 2 cluster khác nhau trong cùng broadcast domain phải khác group-id |
group-name |
Tên cluster, chỉ mang tính hiển thị |
mode |
a-p (Active-Passive) hoặc a-a (Active-Active) |
password |
Mật khẩu xác thực giữa các thành viên cluster |
hbdev (heartbeat interface) |
Danh sách interface + priority dùng làm heartbeat |
Riêng priority (device priority, mặc định 128) là tham số duy nhất nên khác nhau giữa các node — dùng để xác định node nào ưu tiên làm Primary khi cluster mới hình thành hoặc khi bật override.
2.2 Heartbeat interface — trái tim của cluster
Heartbeat interface (hbdev) là interface Ethernet dùng để: đồng bộ session, đồng bộ cấu hình, đồng bộ bảng định tuyến kernel, và báo cáo trạng thái từng thành viên trong cluster. Đây là kênh sống còn — nếu cả 2 heartbeat interface cùng mất kết nối, cluster sẽ rơi vào tình huống split-brain: mỗi node đều tự cho mình là Primary, gây xung đột IP/MAC nghiêm trọng trên mạng.
Một vài nguyên tắc quan trọng:
- Nên cấu hình tối thiểu 2 heartbeat interface dự phòng lẫn nhau (mặc định nhiều model FortiGate đã có sẵn 2 interface được gán làm heartbeat). Có thể chọn tối đa 8 heartbeat interface trên các model có nhiều hơn 8 cổng vật lý.
- Mỗi heartbeat interface có priority riêng (khác với device priority ở trên), mặc định là 50, dải giá trị 0–512, số càng cao càng ưu tiên. FGCP sẽ chọn heartbeat interface có priority cao nhất còn kết nối để xử lý heartbeat traffic thực tế; nếu bằng nhau thì chọn interface có index thấp hơn (
diagnose netlink interface list). - Nên đấu trực tiếp (back-to-back) giữa 2 FortiGate, không qua switch trung gian — đúng như tình huống anh Nam gặp phải ở phần 1.
- Về mặt kỹ thuật nội bộ, FGCP dùng dải địa chỉ link-local 169.254.0.x (theo RFC 3927) để gán cho heartbeat interface ảo (
port_ha) — người quản trị không cần và không nên tự đặt IP cho các interface này.
⚠️ Lưu ý: Heartbeat interface khác hoàn toàn với interface đồng bộ session (
session-sync-dev) dùng riêng cho Active-Active — mặc định nếu không khai báosession-sync-dev, việc đồng bộ session vẫn đi qua heartbeat interface, nhưng với cluster lưu lượng lớn nên tách riêng để tránh heartbeat bị nghẽn.
2.3 Cấu hình cluster qua CLI
Ví dụ cấu hình node FGT-A (sẽ là Primary, priority cao) và FGT-B (Secondary, priority thấp hơn hoặc để mặc định):
Trên FGT-A:
config system ha
set group-id 10
set group-name HQ-Cluster
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
Trên FGT-B:
config system ha
set group-id 10
set group-name HQ-Cluster
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
Giải thích các tham số quan trọng:
hbdev port3 50 port4 50: chọn port3 và port4 làm heartbeat, cả hai cùng priority 50 (giá trị mặc định) — FGCP sẽ tự chọn interface đang hoạt động ổn định hơn.session-pickup enable: bật đồng bộ session đang chạy sang node Secondary, giúp failover không làm rớt kết nối TCP đang mở (ví dụ VPN, phiên SSH dài). Nếu tắt, sau failover các session phải khởi tạo lại.override enable+prioritykhác nhau: đảm bảo FGT-A luôn giành lại vai trò Primary mỗi khi nó online trở lại (kể cả sau khi failover). Nếu đểoverride disable(khuyến nghị cho môi trường production ổn định), node đang là Primary sẽ giữ nguyên vai trò kể cả khi node kia có priority cao hơn quay lại — tránh hiện tượng "flip-flop" gây gián đoạn không cần thiết.
🔄 Khác biệt version FortiOS: Từ FortiOS 7.4 trở lên, tham số
hb-intervalhỗ trợ đơn vị mili-giây quahb-interval-in-milliseconds(100ms hoặc 10ms) để rút ngắn thời gian phát hiện lỗi heartbeat; trên FortiOS 7.0,hb-intervalmặc định tính theo đơn vị 100ms cố định. Nếu triển khai trên 7.0, không có tùy chọn này.
2.4 Cấu hình qua GUI
Trên GUI, vào System > HA, chọn Mode là Active-Passive, điền Group Name, Password, chọn heartbeat interface bằng cách nhấn dấu + trong ô Heartbeat Interfaces (mặc định thường có sẵn 2 interface được đề xuất theo model). Sau khi lưu trên node đầu tiên, thực hiện factory reset hoặc cấu hình tương tự trên node thứ hai (bỏ qua bước set priority riêng, giữ nguyên các tham số còn lại giống hệt), rồi đấu nối heartbeat + traffic interface theo đúng sơ đồ, cluster sẽ tự thương lượng và hình thành.
2.5 Kiểm tra cluster đã hình thành
Sau khi đấu nối, kiểm tra bằng lệnh:
get system ha status diagnose sys ha status
Kết quả cần thấy cả 2 thành viên với trạng thái Configuration Status: in-sync, và một node ở trạng thái Primary/Master, node còn lại Secondary/Slave. Nếu trạng thái là not synchronized, thường do cấu hình group-id/password/mode chưa khớp giữa 2 node, hoặc heartbeat interface chưa lên link.
💡 Việc test failover thật sự, đọc log heartbeat chi tiết, và xử lý tình huống split-brain sẽ được trình bày kỹ trong bài kế tiếp: HA failover testing & troubleshooting.
3. Hỏi & Đáp
Heartbeat interface có cần cắm switch riêng không, hay bắt buộc phải đấu trực tiếp?
Không bắt buộc phải có switch riêng, nhưng khuyến nghị mạnh là đấu trực tiếp port-to-port giữa 2 FortiGate bằng cáp thẳng hoặc chéo (hầu hết cổng Gigabit hiện nay tự động MDI/MDI-X nên dùng cáp nào cũng được). Nếu bắt buộc phải qua thiết bị trung gian (ví dụ cluster đặt ở 2 rack khác nhau), phải dùng switch riêng chuyên cho heartbeat, không dùng chung switch với traffic LAN/WAN để tránh nhiễu hoặc bị filter bởi VLAN/STP.
Có thể để chỉ 1 heartbeat interface không?
Được, về mặt kỹ thuật FortiGate cho phép chọn chỉ 1 heartbeat interface, nhưng đây không phải cấu hình khuyến nghịvì nếu link đó đứt, cluster ngay lập tức rơi vào rủi ro split-brain. Luôn dùng tối thiểu 2 heartbeat interface trong triển khai thực tế.
Priority trong hbdev (heartbeat interface priority) và priority (device priority) có phải là một không?
Không. Đây là 2 khái niệm priority hoàn toàn khác nhau dù cùng tên gọi — dễ gây nhầm lẫn:
- Device priority (
set priority 200): quyết định node nào được ưu tiên làm Primary của cả cluster. - Heartbeat interface priority (con số đi kèm sau tên interface trong
hbdev port3 50 port4 50): chỉ quyết định trong số các heartbeat interface, cái nào được FGCP chọn để xử lý heartbeat traffic thực tế, không liên quan gì đến việc chọn Primary/Secondary của cluster.
Vì sao nên tắt override trong môi trường production?
Khi override enable, mỗi lần node có priority cao hơn quay lại online (ví dụ sau bảo trì), nó sẽ giành lại vai trò Primary ngay lập tức, gây một đợt failover phụ dù hệ thống đang chạy ổn định trên node kia. Với môi trường production đã hoạt động ổn định, đa số kỹ sư Fortinet khuyến nghị override disable để tránh gián đoạn không cần thiết — chỉ bật override khi cần đảm bảo chắc chắn node nào đó luôn là Primary (ví dụ do node đó có phần cứng mạnh hơn).
4. Quiz
Câu 1: Tham số nào trong cấu hình config system ha không cần giống nhau giữa các thành viên cluster?
- A. group-id
- B. password
- C. priority
- D. mode
Câu 2: Heartbeat interface trên FGCP sử dụng dải địa chỉ IP nào cho interface ảo port_ha?
- A. 192.168.0.0/24
- B. 169.254.0.x (link-local)
- C. 10.0.0.0/8
- D. Không có địa chỉ IP nào được gán
Câu 3: Tình huống nào sau đây mô tả đúng "split-brain" trong HA cluster?
- A. Cả 2 node đều là Secondary cùng lúc
- B. Cả 2 node mất kết nối heartbeat và cùng tự nhận là Primary
- C. Session không được đồng bộ sau failover
- D. Firmware giữa 2 node không khớp
Câu 4: Khi override được đặt là disable, điều gì xảy ra khi node có priority cao hơn quay lại online sau khi node priority thấp đang làm Primary?
- A. Node priority cao lập tức giành lại vai trò Primary
- B. Cluster tự động tách ra thành 2 thiết bị độc lập
- C. Node đang là Primary tiếp tục giữ vai trò Primary
- D. Cả hai node đều chuyển sang Secondary
👉 Đáp án
Câu 1: C Priority (device priority) là tham số duy nhất nên đặt khác nhau giữa các node để xác định node nào ưu tiên làm Primary; các tham số còn lại như group-id, password, mode bắt buộc phải giống nhau tuyệt đối.
Câu 2: B FGCP dùng dải địa chỉ link-local 169.254.0.x (theo RFC 3927) để tự động gán cho heartbeat interface ảo port_ha, người quản trị không cần và không nên tự cấu hình IP cho các interface này.
Câu 3: B Split-brain xảy ra khi các thành viên cluster không còn liên lạc được qua heartbeat interface, khiến mỗi node tự cho mình là Primary, dẫn đến xung đột IP/MAC trên mạng.
Câu 4: C Với override disable, node đang là Primary sẽ giữ nguyên vai trò kể cả khi một node khác có priority cao hơn quay lại online — giúp tránh hiện tượng failover phụ không cần thiết trong môi trường production ổn định.
📚 Bài viết thuộc khóa học FortiGate của VNExperts
🧭 Điều hướng
| ⬅️ Bài trước | 🏠 Mục lục khóa học | Bài kế tiếp ➡️ |
|---|---|---|
| FGCP HA: Active-Passive, Active-Active — nguyên lý bầu chọn Master | Mục lục khóa học FortiGate | HA failover testing & troubleshooting |
