HA
FortiGate-VM high availability (HA) supports having two virtual machines in an HA cluster on the same physical server or on different physical servers. In both cases, the two VMs run on the same hypervisor, such as Xen. The primary consideration is that all interfaces involved can communicate efficiently over TCP/IP connection sessions.
Heartbeat
There are two options for setting up the HA heartbeat: unicast and broadcast. Broadcast is the default HA heartbeat configuration. However, the broadcast configuration may not be ideal for FortiGate-VM because it may require special settings on the host. In most cases, the unicast configuration is preferable.
Differences between the unicast and broadcast heartbeat setups are:
- The unicast method does not change the FortiGate-VM interface MAC addresses to virtual MAC addresses.
- Unicast HA only supports two FortiGate-VMs.
- Unicast HA heartbeat interfaces must be connected to the same network and you must add IP addresses to these interfaces.
Unicast
You can configure the unicast settings in the FortiOS CLI:
config system ha
set unicast-hb {enable/disable}
set unicast-hb-peerip {Peer heartbeat interface IP address}
end
Setting |
Description |
---|---|
|
Enable or disable default unicast HA heartbeat. |
|
IP address of the HA heartbeat interface of the other FortiGate-VM in the HA cluster. |
Broadcast
Broadcast HA heartbeat packets are non-TCP packets that use Ethertype values 0x8892, 0x8891, and 0x8890. These packets use automatically assigned link-local IPv4 addresses in the 169.254.0.x range for HA heartbeat interface IP addresses.
For FortiGate-VMs to support a broadcast HA heartbeat configuration, you must configure the virtual switches that connect heartbeat interfaces to
In addition, you must configure the VM platform to allow MAC address spoofing for the FortiGate-VM data interfaces. This is required because in broadcast mode, the FGCP applies virtual MAC addresses to FortiGate data interfaces, and these virtual MAC addresses mean that matching interfaces of the FortiGate-VM instances in the cluster have the same virtual MAC addresses.
Promiscuous mode for broadcast HA
This section describes how to support promiscuous mode for the heartbeat interfaces of a FortiGate-VM running on XenServer to support broadcast HA heartbeat.
On XenServer, FortiGate-VM HA interfaces are directly attached to a virtual network interface (VIF). The VIF is connected to a virtual switch (xenbr) that segments network traffic between a physical network interface (PIF) and one or more VIFs. Enabling promiscuous mode as described allows all traffic crossing the PIF to become transparent across the xenbr and visible to the VIF that the FortiGate-VM HA interface is connected to.
To enable promiscuous mode for the PIF from the XenServer host CLI:
- Find and record the UUID of the PIF that the HA heartbeat interface is connected to by entering the following command:
xe pif-list network-name-label=<network>
Where
<network>
is the common name for the network as it appears in XenCenter (for example, Network 0). - Enter the following command to enable promiscuous mode for the PIF:
xe pif-param-set uuid=<uuid> other-config:promiscuous="true"
Where
<uuid>
is the UUID for the PIF. - Enter the following command to verify that you have set the promiscuous option:
xe pif-param-list uuid=<uuid>
A line similar to the following should appear in the command output to indicate that promiscuous mode is enabled:
other-config (MRW): promiscuous: true
To enable promiscuous mode for the VIF from the XenServer host CLI:
- Find and record the UUID of the VIF that the HA heartbeat interface is connected to by entering the following command:
xe vif-list vm-name-label=<vm-name>
Where
<vm-name>
is the common name of the FortiGate-VM as it appears in XenCenter. - Enter the following command to enable promiscuous mode for the VIF:
xe vif-param-set uuid=<uuid> other-config:promiscuous="true"
Where
<uuid>
is the UUID for the PIF. - Enter the following command to verify that you have set the promiscuous option:
xe vif-param-list uuid=<uuid_of_vif>
A line similar to the following should appear in the command output to indicate that promiscuous mode is enabled:
other-config (MRW): promiscuous: true
- Enter the following commands to activate promiscuous mode for the VIF:
xe vif-unplug uuid=<uuid_of_vif>
xe vif-plug uuid=<uuid_of_vif>
These commands disconnect and reconnect the VIF to the VM. When the VIF reconnects, promiscuous mode is active. The
unplug
command takes the FortiGate-VM HA interface offline, and brings down the interface to the VM until you enter thevif-plug
command.You can use
tcpdump
utility to compare traffic on the PIF and VIF to ensure that the VIF is behaving promiscuously.