Here's a link in configuring FortiGate High Availability (HA) in Active-Passive setup.
You can view the FortiGate HA mode under System > HA > Mode: Standalone (default).
You can also view HA mode by issuing either the get system status or get system ha commands.
FG-FW01_PRI # get system status
Version:
FortiGate-40F v7.2.4,build1396,230131 (GA.F)
Firmware Signature:
certified
Virus-DB:
1.00000(2018-04-09 18:07)
Extended DB:
1.00000(2018-04-09 18:07)
AV AI/ML Model:
0.00000(2001-01-01 00:00)
IPS-DB:
6.00741(2015-12-01 02:30)
IPS-ETDB:
0.00000(2001-01-01 00:00)
APP-DB:
6.00741(2015-12-01 02:30)
INDUSTRIAL-DB:
6.00741(2015-12-01 02:30)
IPS Malicious URL
Database: 1.00001(2015-01-01 01:01)
IoT-Detect:
0.00000(2022-08-17 17:31)
Serial-Number:
FGT40FTK2101234
BIOS version:
05000021
System Part-Number:
P24680-04
Log hard disk: Not
available
Hostname: FG-FW01_PRI
Private Encryption:
Disable
Operation Mode: NAT
Current virtual
domain: root
Max number of
virtual domains: 10
Virtual domains
status: 1 in NAT mode, 0 in TP mode
Virtual domain
configuration: disable
FIPS-CC mode:
disable
Current HA mode: standalone
Branch point: 1396
Release Version
Information: GA
System time: Sat Mar
18 18:09:09 2023
Last reboot reason:
power cycle
FG-FW01_PRI #
get system ha status
HA Health Status: OK
Model: FortiGate-40F
Mode: Standalone
Group Name:
Group ID: 0
Debug: 0
Cluster Uptime: 0
days 0:0:0
Cluster state change
time: N/A
ses_pickup: disable
override: disable
System Usage stats:
HBDEV stats:
number of vcluster:
0
In this post, I'll configure a pair of FortiGate firewalls in Active-Passive High Availability (HA) setup. Only one FortiGate device will actively process network traffic while the other device will just synchronize its config and remain standby in case of a failure. The Active-Passive mode also simplifies the network setup and troubleshooting since it has a deterministic traffic flow.
To configure FortiGate HA Active-Passive mode, go to System > HA > Mode: Active > type Device priority: 200 (default is 128, higher priority is preferred) > type Group name: FG-FW01_CLUSTER (must be the same with Secondary FortiGate) > type a password (must be the same with Secondary FortiGate) > enable/toggle Session pickup (Secondary FortiGate will resume TCP, UDP, IPSec VPN and NAT session during failover) > select Monitor interfaces (LAN and WAN interfaces) > Heartbeat interfaces: a (used to send hello packets, sync config, sessions) > click OK.
Under Monitor Interfaces > click add (+) > select the interfaces to monitor. In this case the MGMT and data interfaces were selected. If one of the monitored interface failed, it will failover to the FortiGate with the most interfaces that are up/operational in the cluster.
Under Heartbeat interfaces > click add (+) > select the heartbeat "a" interface. I directly connected an RJ45 cable between the two FortiGate device. Click OK.
The same procedure is done in the Secondary FortiGate but the difference is using a Device priority of 100 (lower).
You can view HA status under System > HA. Just wait for 3-5 minutes for HA to synchronize. Sometimes you'll need to reboot the Secondary FortiGate for synchronization to work.
You can configure an out-of-band management IP address for the Primary and Secondary FortiGate. I configured this in CLI but this can be configured under System > HA > enable/toggle Management Interface Reservation > type the Gateway IP address.
FG-FW01_PRI #
config system ha
FG-FW01_PRI
(ha) # set ha-mgmt-status enable
FG-FW01_PRI
(ha) # config ha-mgmt-interfaces
FG-FW01_PRI
(ha-mgmt-interfaces) # edit 1
new entry '1' added
FG-FW01_PRI (1)
# set interface lan1
FG-FW01_PRI (1)
# set gateway 172.20.2.1
FG-FW01_PRI (1)
# end
FG-FW01_PRI
(ha) # end
FG-FW01_PRI #
To view HA status/sync, you can issue either the diagnose sys ha status or get system ha status command.
FG-FW01_PRI #
diagnose sys ha status
HA information
Statistics
traffic.local = s:0 p:1446468
b:471747487
traffic.total = s:0 p:1446412
b:471602671
activity.ha_id_changes = 4
activity.fdb = c:0 q:0
Model=40, Mode=2
Group=0 Debug=0
nvcluster=1,
ses_pickup=1, delay=0
[Debug_Zone HA
information]
HA group member
information: is_manage_primary=0.
FGT40FTK21091234:
Secondary, serialno_prio=1, usr_priority=200, hostname=FG-FW01_PRI
FGT40FTK21095678: Primary, serialno_prio=0,
usr_priority=100, hostname=FG-FW01_SEC
[Kernel HA
information]
vcluster 1,
state=standby, primary_ip=169.254.0.1, primary_id=0
FGT40FTK21091234: Secondary, ha_prio/o_ha_prio=1/1
FGT40FTK21095678: Primary, ha_prio/o_ha_prio=0/0
FG-FW01_PRI #
get system ha status
HA Health Status: OK
Model: FortiGate-40F
Mode: HA A-P
Group Name: FG-FW01_CLUSTER
Group ID: 0
Debug: 0
Cluster Uptime: 0
days 3:59:9
Cluster state change
time: 2023-03-18 22:49:45
Primary selected
using:
<2023/03/18 22:49:45> vcluster-1:
FGT40FTK21091234 is selected as the primary because its override priority is
larger than peer member FGT40FTK21095678.
<2023/03/18 22:44:31> vcluster-1:
FGT40FTK21095678 is selected as the primary because the value 0 of link-failure
+ pingsvr-failure is less than peer member FGT40FTK21091234.
<2023/03/18 19:26:41> vcluster-1:
FGT40FTK21091234 is selected as the primary because its uptime is larger than
peer member FGT40FTK21095678.
<2023/03/18 18:52:16> vcluster-1:
FGT40FTK21091234 is selected as the primary because it's the only member in the
cluster.
ses_pickup: enable,
ses_pickup_delay=disable
override: enable
Configuration
Status:
FGT40FTK21091234(updated 4 seconds ago): in-sync
FGT40FTK21095678(updated 5 seconds ago): in-sync
System Usage stats:
FGT40FTK21091234(updated 4 seconds ago):
sessions=14,
average-cpu-user/nice/system/idle=0%/0%/0%/99%, memory=35%
FGT40FTK21095678(updated 5 seconds ago):
sessions=5,
average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=35%
HBDEV stats:
FGT40FTK21091234(updated 4 seconds ago):
a: physical/1000auto, up,
rx-bytes/packets/dropped/errors=38092643/156998/0/0, tx=38105486/90275/0/0
FGT40FTK21095678(updated 5 seconds ago):
a: physical/1000auto, up,
rx-bytes/packets/dropped/errors=38100087/90259/0/0, tx=38086526/156993/0/0
MONDEV stats:
FGT40FTK2109A1234updated 4 seconds ago):
lan2: physical/100auto, up,
rx-bytes/packets/dropped/errors=141415408/2060360/0/0, tx=10289012/81659/0/0
lan3: physical/100auto, up,
rx-bytes/packets/dropped/errors=24131614/227799/0/0, tx=10295220/81756/0/0
PortChannel1: aggregate/00, up,
rx-bytes/packets/dropped/errors=165547022/2288159/0/0, tx=20584232/163415/0/0
wan: physical/1000auto, up,
rx-bytes/packets/dropped/errors=266313568/1145360/0/0, tx=152763749/498545/0/0
FGT40FTK21095678(updated 5 seconds ago):
lan2: physical/100auto, up,
rx-bytes/packets/dropped/errors=24139694/227900/0/0, tx=10292156/81684/0/0
lan3: physical/100auto, up,
rx-bytes/packets/dropped/errors=141448602/2060862/0/0, tx=10293884/81711/0/0
PortChannel1: aggregate/00, up,
rx-bytes/packets/dropped/errors=165588296/2288762/0/0, tx=20586040/163395/0/0
wan: physical/1000auto, up,
rx-bytes/packets/dropped/errors=259124868/1122118/0/0, tx=138256452/473772/0/0
Primary : FG-FW01_PRI, FGT40FTK21091234, HA cluster index = 1
Secondary : FG-FW01_SEC, FGT40FTK21095678, HA cluster index = 0
number of vcluster:
1
vcluster 1: work
169.254.0.2
Primary: FGT40FTK21091234, HA operating index = 0
Secondary: FGT40FTK21095678, HA operating index = 1
I simulated a device failover by rebooting the Primary FortiGate. The Secondary FortiGate became Primary/Active.
FG-FW01_PRI #
execute reboot
This operation will
reboot the system !
Do you want to
continue? (y/n)y
System is
rebooting...
The system is going
down NOW !!
FG-FW01_SEC # get system ha status
HA Health Status:
ERROR:
FGT40FTK21091234 is lost @ 2023/03/21 10:45:49
WARNING:
FGT40FTK21095678 has hbdev down;
Model: FortiGate-40F
Mode: HA A-P
Group Name: FG-FW01_CLUSTER
Group ID: 0
Debug: 0
Cluster Uptime: 2
days 15:54:5
Cluster state change
time: 2023-03-21 10:45:49
Primary selected using:
<2023/03/21 10:45:49> vcluster-1: FGT40FTK21095678 is selected as
the primary because it's the only member in the cluster.
<2023/03/21 10:45:43> vcluster-1:
FGT40FTK21095678 is selected as the primary because SET_AS_SECONDARY flag is
set on peer member FGT40FTK21091234.
<2023/03/19 22:16:52> vcluster-1:
FGT40FTK21091234 is selected as the primary because its override priority is
larger than peer member FGT40FTK21095678.
<2023/03/19 22:16:42> vcluster-1:
FGT40FTK21095678 is selected as the primary because its override priority is
larger than peer member FGT40FTK21091234.
ses_pickup: enable,
ses_pickup_delay=disable
override: disable
System Usage stats:
FGT40FTK21095678(updated 5 seconds ago):
sessions=10,
average-cpu-user/nice/system/idle=0%/0%/1%/98%, memory=35%
HBDEV stats:
FGT40FTK21095678(updated 5 seconds ago):
a: physical/00, down,
rx-bytes/packets/dropped/errors=594402106/1413899/0/0, tx=515709123/1429523/0/0
MONDEV stats:
FGT40FTK21095678(updated 5 seconds ago):
lan2: physical/100auto, up,
rx-bytes/packets/dropped/errors=28648858/270239/0/0, tx=12107326/96090/0/0
lan3: physical/100auto, up,
rx-bytes/packets/dropped/errors=166350426/2423682/0/0, tx=12359514/98319/0/0
PortChannel1: aggregate/00, up,
rx-bytes/packets/dropped/errors=194999284/2693921/0/0, tx=24466840/194409/0/0
wan: physical/1000auto, up,
rx-bytes/packets/dropped/errors=269957042/1268488/0/0, tx=138662112/476451/0/0
Primary : FG-FW01_SEC, FGT40FTK21095678, HA cluster index = 0
number of vcluster:
1
vcluster 1: work
169.254.0.1
Primary: FGT40FTK21095678, HA operating index = 0
The Primary FortiGate became Active again since it has a higher priority (200).
FG-FW01_PRI # get system ha status
HA Health Status: OK
Model: FortiGate-40F
Mode: HA A-P
Group Name: FG-FW01_CLUSTER
Group ID: 0
Debug: 0
Cluster Uptime: 2
days 15:56:10
Cluster state change
time: 2023-03-21 10:47:26
Primary selected using:
<2023/03/21 10:47:26> vcluster-1: FGT40FTK21091234 is selected as
the primary because its override priority is larger than peer member
FGT40FTK21095678.
<2023/03/21 10:47:17> vcluster-1:
FGT40FTK21095678 is selected as the primary because its override priority is
larger than peer member FGT40FTK21091234.
ses_pickup: enable,
ses_pickup_delay=disable
override: enable
Configuration
Status:
FGT40FTK21091234(updated 3 seconds ago):
in-sync
FGT40FTK21095678(updated 5 seconds ago):
in-sync
System Usage stats:
FGT40FTK21091234(updated 3 seconds ago):
sessions=38,
average-cpu-user/nice/system/idle=0%/0%/0%/99%, memory=33%
FGT40FTK21095678(updated 5 seconds ago):
sessions=10,
average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=35%
HBDEV stats:
FGT40FTK21091234(updated 3 seconds ago):
a: physical/1000auto, up,
rx-bytes/packets/dropped/errors=192898/562/0/0, tx=172622/456/0/0
FGT40FTK21095678(updated 5 seconds ago):
a: physical/1000auto, up,
rx-bytes/packets/dropped/errors=594572404/1414349/0/0, tx=515960605/1430235/0/0
MONDEV stats:
FGT40FTK21091234(updated 3 seconds ago):
lan2: physical/100auto, up,
rx-bytes/packets/dropped/errors=11240/117/0/0, tx=2152/17/0/0
lan3: physical/100auto, up,
rx-bytes/packets/dropped/errors=5352/25/0/0, tx=2408/21/0/0
PortChannel1: aggregate/00, up,
rx-bytes/packets/dropped/errors=16592/142/0/0, tx=4560/38/0/0
wan: physical/1000auto, up,
rx-bytes/packets/dropped/errors=85043/195/0/0, tx=46824/147/0/0
FGT40FTK21095678(updated 5 seconds ago):
lan2: physical/100auto, up,
rx-bytes/packets/dropped/errors=29198292/274899/0/0, tx=12109482/96107/0/0
lan3: physical/100auto, up,
rx-bytes/packets/dropped/errors=166364690/2423890/0/0, tx=12890330/102976/0/0
PortChannel1: aggregate/00, up,
rx-bytes/packets/dropped/errors=195562982/2698789/0/0, tx=24999812/199083/0/0
wan: physical/1000auto, up,
rx-bytes/packets/dropped/errors=270528521/1273320/0/0, tx=139232137/481219/0/0
Primary : FG-FW01_PRI, FGT40FTK21091234S, HA cluster index = 1
Secondary : FG-FW01_SEC, FGT40FTK21095678, HA cluster index = 0
number of vcluster:
1
vcluster 1: work
169.254.0.2
Primary: FGT40FTK21091234, HA operating index = 0
Secondary: FGT40FTK21095678, HA operating index = 1
To manage or troubleshoot the Secondary FortiGate from Primary without exiting or opening a new CLI session, just issue execute ha manage 0 <admin/root account> command. This is similar to the Cisco ASA failover exec mate <show> command.
FG-FW01_PRI # execute ha manage 0 admin
Warning: Permanently
added '169.254.0.1' (ED25519) to the list of known hosts.
admin@169.254.0.1's
password:
FG-FW01_SEC #