HA หรือ High Availability เป็น Solution ที่ช่วยในการเพิ่ม Redundancy ของอุปกรณ์ ในกรณีที่มีการ Fail เกิดขึ้นหรือช่วยในการ Monitor ในส่วนของ Links, Routes และ Health check ของอุปกรณ์ ซึ่งการทำ HA จะช่วยหลีกเลี่ยงการเกิดปัญหา Network outage และการหยุดชะงักในการรับส่งข้อมูลผ่านอุปกรณ์ Network.

Referrence : https://docs.fortinet.com/document/fortigate/6.4.3/administration-guide/900885/ha-active-passive-cluster-setup
ในอุปกรณ์ FortiGate มี Protocol ที่ใช้ทำ HA ที่ชื่อว่า FortiGate Clustering Protocol (FGCP) ในการค้นหา Member FortiGate เพื่อใช้ในการ Negotiate และสร้าง Cluster โดยอุปกรณ์ FortiGate จะต้องเป็นรุ่นและ Firmware เดียวกัน โดย FGCP จะ Support การ Failover Protection 4 วิธีดังนี้
- Link Fail
- Power Loses
- SSD Fails
- การใช้งาน Memory เกินค่าในระยะเวลาที่กำหนด
อุปกรณ์ที่ทำ HA จะใช้ HA heartbeat interface ในการสื่อสารระหว่างอุปกรณ์ใน Cluster ซึ่งต้องมีอย่างน้อย 1 Interface เพื่อใช้ทำ HA heartbeat interface โดย HA heartbeat interface จะทำการส่ง Hello Packet เพื่อเช็คสถานะของอุปกรณ์ระหว่าง Cluster รวมถึงการ Communication ของ Session และยังถูกนำไปใช้กับ Cluster อื่นๆ ใน Unit เพื่อให้ Cluster ทำการ Synchronized กัน
เมื่อมีการ Configure HA บนอุปกรณ์ FortiGate จะทำให้ Device Failover ถูก Enable เสมอ ซึ่งผู้ใช้งานสามารถเข้าไปตั้งค่าในส่วนของ Failover Time เพื่อปรับระยะเวลาในการ Failover ของอุปกรณ์ได้ โดยการปรับระยะเวลานั้นสามารถทำได้ทั้งการลดหรือเพิ่มเพื่อช่วยให้อุปกรณ์ลดการเกิดการ False Failover ระหว่างอุปกรณ์ใน HA Cluster อีกทั้งในกรณีที่ CPU ของ Cluster unit ใน HA Cluster มีการใช้งานที่มากขึ้นอาจจะส่งผลให้ Cluster unit ไม่สามารถส่ง Heartbeat interval ก่อนระยะเวลาของค่าที่กำหนดไว้สำหรับการส่ง Heartbeat packet ทำให้อุปกรณ์เกิดการ Failover และเปลี่ยน State การทำงานเกิดขึ้น โดยผู้ใช้งานสามารถคำนวณระยะเวลาของการส่ง Heartbeat interval ระหว่างอุปกรณ์ใน Cluster unit ได้ดังนี้
วิธีการคำนวณระยะเวลาของการส่ง Heartbeat packet
| heartbeat interval x heartbeat interval-milliseconds x heartbeat lost threshold |
ค่า Heartbeat interval คือระยะเวลาระหว่างการส่ง Heartbeat interval โดยที่ Interval range จะอยู่ที่ 1-20 (100*ms) ค่า Default คือ 2 (200 ms) ถ้า hb-interval สั้นลง Heartbeat packet จะมีการใช้งาน Bandwidth ที่มากขึ้น โดยค่า hb-interval ไม่ควรที่จะนานมากเกินไปเพราะจะส่งผลให้ Cluster unit ไม่ทำการเปลี่ยนแปลง State ในระบบ Network
ในกรณีที่ระบบ Network มีการเปลี่ยนแปลง
| Command: set hb-interval <integer> |
ค่า Heartbeat interval-milliseconds จำนวน Milliseconds สำหรับแต่ละ Heartbeat interval (100 หรือ 10) โดยมีค่า Default อยู่ที่ 100
| Command: hb-interval-in-milliseconds {100 | 10} |
ค่า Heartbeat lost threshold คือจำนวนของ Heartbeat packet ที่ไม่ได้รับจาก Cluster unit อื่นๆ ติดต่อกันตามค่า Lost heartbeat threshold ที่ตั้งค่าไว้โดยค่า Default จะขึ้นอยู่กับรุ่นของอุปกรณ์
| Command: set hb-lost-threshold <1-60> |
ตัวอย่างการคำนวณจากอุปกรณ์ FortiGate60E (ซึ่งมีค่า heartbeat lost threshold = 6)
สูตร: heartbeat interval x heartbeat interval-milliseconds x heartbeat lost threshold (Default ขึ้นอยู่กับรุ่นของอุปกรณ์)
ระยะเวลาของการส่ง heartbeat packet = 2 x 100ms x 6 = 1200ms (1.2 seconds)
หมายเหตุ: การปรับระยะเวลาของการส่ง Heartbeat packet ขึ้นอยู่กับ Network topo
เรียบเรียงบทความโดย Palita Leangjai, Pakapum Pittaya-usa and Nipata Tanakan
