关于Fortigate HA的配置在一本通里逻辑及配置已经阐述的很详细了,本文主要记录近期的一次HA的Out Of Sync的配置及相关排错,作为分享
Fortigate HA重要概念
首先是HA配置的基本要求:
- 两台防火墙硬件同型号
- 两台防火墙软件同版本(包括小型号)
- 所有接口不可有DHCP或PPPOE
然后是HA的两大模式A-A和A-P模式,官方描述如下:
Active-Passive(A-P)模式
集群中的所有防火墙必须工作在同一个模式下。可以对运行中的HA集群进行模式的修改,但会造成一定的延时,因为集群需要重新协商并选取新的主设备。A-P模式提供了备机保护。HA集群中由一台主设备,和一台以上到从设备组成。
从设备与主设备一样连接到网络,但不处理任何的数据包,从设备处于备用状态。从设备会自动同步主设备的配置,并时刻监视主设备到运行状态。整个失效保护的过程是透明的,一旦主设备失效,从设备会自动接替其工作。如果设备的接口或链路出现故障,集群内会更新链路状态数据库,重新选举新的主设备。
Active-Active(A-A)模式
A-A模式下会对占用资源较多的进程进行在各个设备中进行分担。需要处理协议识别、病毒扫描、ips、网页过滤、邮件过滤、数据防泄露、应用程序控制、voip内容扫描、协议保护, SCCP协议控制等。通过对如上内容的负载均担,A-A模式可以提供更高的UTM性能。安全策略中的终端控制,流控,用户认证功能,在A-A模式下没有什么提高效果。其他非UTM功能不会进行负载分担,将由主设备进行处理。除了UTM功能外,还可以实现对TCP会话进行分担。
以个人经验来讲,开启会话同步的场景下,AP和AA情况下HA灾备切换造成的网络中断基本没差别,A-A的优势在于性能的负载,尤其当单台设备的UTM等处理能力不够时,A-A在既能保证高可用的情况下又能解决单台的成本,但会增加运维风险和成本,在绝大多数的场景中,建议使用A-P方式部署HA

讯享网
然后另一个重要概念是HA的选举机制,按照以下逻辑进行主备选举:

- 连接的接口数,接口数多的选为主设备,这个很好理解,很多HA场景中限于上行下行的网络原因无法做到完整的双线路,仅一台接线,HA仅用于配置同步,这种情况下自然接线的那台就会选为主设备
- 开机时间,开机时间越长约容易选为主设备
- 设备系统内手动定义的优先级,优先级越大的选为主设备
- 当以上三项都相同的情况下(基本不可能碰到),对比两台设备的序列号,较大的序列号选为主设备
Fortigate HA设计及配置
WebUI里配置HA比较简单,首先两台防火墙先不连接HA线单独进行配置


- 系统管理-高可靠性里开启主动-被动模式
- 设置组名称,组密码(两台一致)
- 选择对应的监控接口(一般选择使用中端口,主备选举最优先的接口选举看的就是这边的监控接口)
- 选择心跳接口(建议使用两条,一些型号直接有HA1,HA2接口),配置心跳接口优先级
配置完成后两台防火墙连接HA线,设备开始自动选举,顺利完成后可看到状态

其他配置HA注意事项:
- 开始配置前记得备份配置!
- 会话同步开启
- HA建议至少连接两路,最好能使用SFP接口
- 建议去命令行确认下Override是否开启,这个建议关闭,开启的情况下HA的选举参数发生变更会导致主备自动切换,慎用!
Out Of Sync问题排错
Prim-FW (global) # execute ha synchronize start
讯享网
看下HA的状态,如果有out-of-sync的状态就是有问题
讯享网Prim-FW (global) # get sys ha status HA Health Status: OK Model: FortiGate-VM64-KVM Mode: HA A-P Group: 9 Debug: 0 Cluster Uptime: 14 days 5:9:44 Cluster state change time: 2019-06-13 14:21:15 Master selected using: <date:02> FGVMXXXXXXXXXX44 is selected as the master because it has the largest value of uptime. <--- this is the reason for last failover <date:01> FGVMXXXXXXXXXX46 is selected as the master because it has the largest value of uptime. <date:00> FGVMXXXXXXXXXX44 is selected as the master because it has the largest value of override priority. ses_pickup: enable, ses_pickup_delay=disable override: disable Configuration Status: FGVMXXXXXXXXXX44(updated 3 seconds ago): in-sync FGVMXXXXXXXXXX46(updated 4 seconds ago): in-sync System Usage stats: FGVMXXXXXXXXXX44(updated 3 seconds ago): sessions=42, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=64% FGVMXXXXXXXXXX46(updated 4 seconds ago): sessions=5, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=54% HBDEV stats: FGVMXXXXXXXXXX44(updated 3 seconds ago): port8: physical/10000full, up, rx-bytes/packets/dropped/errors=//0/0, tx=//0/0 FGVMXXXXXXXXXX46(updated 4 seconds ago): port8: physical/10000full, up, rx-bytes/packets/dropped/errors=//0/0, tx=//0/0 MONDEV stats: FGVMXXXXXXXXXX44(updated 3 seconds ago): port1: physical/10000full, up, rx-bytes/packets/dropped/errors=//0/0, tx=//0/0 FGVMXXXXXXXXXX46(updated 4 seconds ago): port1: physical/10000full, up, rx-bytes/packets/dropped/errors=//0/0, tx=/1225/0/0 Master: Prim-FW , FGVMXXXXXXXXXX44, cluster index = 1 Slave : Bkup-Fw , FGVMXXXXXXXXXX46, cluster index = 0 number of vcluster: 1 vcluster 1: work 169.254.0.2 Master: FGVMXXXXXXXXXX44, operating cluster index = 0 Slave : FGVMXXXXXXXXXX46, operating cluster index = 1
对比两台防火墙所有vdom的checksum,确认下是哪个vdom有配置不一致的情况
Prim-FW(global)# diag sys ha checksum cluster ================== FGVMXXXXXXXXXX44 ================== is_manage_master()=1, is_root_master()=1 debugzone global: c5 33 93 23 26 9f 4d 79 ed 5f 29 fa 7a 8c c9 10 root: d3 b5 fc 60 f3 f0 f0 d0 ea e4 a1 7f 1d 17 05 fc Cust-A: 84 af 8f 23 b5 31 ca 32 c1 0b f2 76 d2 57 d1 aa all: 04 ae 37 7e dc 84 aa a4 42 3d db 3c a2 09 b0 g5 checksum global: c5 33 93 23 26 9f 4d 79 ed 5f 29 fa 7a 8c c9 10 root: d3 b5 fc 60 f3 f0 f0 d0 ea e4 a1 7f 1d 17 05 fc Cust-A: 84 af 8f 23 b5 31 ca 32 c1 0b f2 76 d2 57 d1 aa all: 04 ae 37 7e dc 84 aa a4 42 3d db 3c a2 09 b0 g5 ================== FGVMXXXXXXXXXX46 ================== is_manage_master()=0, is_root_master()=0 debugzone global: c5 33 93 23 26 9f 4d 79 ed 5f 29 fa 7a 8c c9 10 root: d3 b5 fc 60 f3 f0 f0 d0 ea e4 a1 7f 1d 17 05 fc Cust-A: 84 af 8f 23 b5 31 ca 32 c1 0b f2 76 d2 57 d1 bc all: 04 ae 37 7e dc 84 aa a4 42 3d db 3c a2 09 b0 60 checksum global: c5 33 93 23 26 9f 4d 79 ed 5f 29 fa 7a 8c c9 10 root: d3 b5 fc 60 f3 f0 f0 d0 ea e4 a1 7f 1d 17 05 fc Cust-A: 84 af 8f 23 b5 31 ca 32 c1 0b f2 76 d2 57 d1 bc all: 04 ae 37 7e dc 84 aa a4 42 3d db 3c a2 09 b0 60
两台防火墙上分别把不一样的vdom的checksum拉出来
讯享网Prim-FW (global) # diag sys ha checksum show Cust-A
可用工具进行比对,如果有不一样的checksum的项,手动去配置里确认下,我以下只是修改了不一样做的示例,实际场景中完全一致

确定两边所有vdom的checksum都一致后进行checksum的重新计算
Prim-FW (global) # diagnose sys ha checksum recalculate
这个就是碰到的最大的坑,因为配置比对完全一致也从未变更过,也没想到去recalculate,最后跑了一下就ok了
后来跟一个400的哥们确认了下,这个算是bug,HA的recalculate在没有配置变更的情况下不会触发,这种情况要么手动跑一边recalculate,要么在防火墙里手动增删一条配置就ok

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/52890.html