HA-Cluster 不间断升级
HA-Cluster 不间断升级
重要
在 HA 环境下降级,没有不间断的机制,降级时 HA 所有成员会同时重启,请务必注意。 降级建议使用 系统管理 → 固件与配置管理 → 固件切换中介绍的方法。
不间断升级介绍
“HA 不间断升级”故名思义就是说在 HA 升级过程中,HA-cluster 中的成员会依次进行升级,从而保证了业务在升级过程中不中断。
上传 FortiOS 的方法分为 Web 界面上传和 CLI 上传,本文介绍以 Web 界面上传的方式,两台设备升级完成需要 15 分钟左右,过程如下(未开启 Override):

升级过程
- 在主机 Web 界面上点击升级按钮。
- 主机把 FortiOS 发给备机,备机准备并开始升级,然后自动重启,此过程需要 5 分钟(或更长时间),请耐心等待。
- 备机升级完成,并切换成主机。
- 主机观察到备机升级成功并切换为新的主机后,开始准备升级,此过程需要 5 分钟(或更长时间),请耐心等待。
- 一旦准备完成,主机(此时为备)自动重启加载升级后 OS,重启约 2 分钟。
- 主机(此时为备)重启后,形成 HA 。主机从原来的备同步配置(外部配置和内部配置),约 1~3 分钟。
- 此时,HA 重新建立,如果 HA 没有开启 Override,主备关系与升级前相反,如果想要主备关系与升级前一致,在新的主机(原备机)手工执行 diagnose sys ha reset-uptime 命令切换回升级前的主备关系(此命令需要原主机升级完成启动 5 分钟后,在新主机上执行才会进行主备切换)。
操作建议
操作前下载并阅读 Release 文档和升级说明文档,做到注意事项心中有数。可以参考官方文档:https://docs.fortinet.com/document/fortigate/7.2.99/fortios-release-notes/ (进入后找到对应版本的 Release Note,此链接为目前 7.2.X 最新版本的 Release Note)
升级前后备份设备配置。
升级固件必须遵循升级路径,参考 系统管理 → 固件与配置管理 → 固件版本管理 → 升级路径章节。
接入 Console 在主设备上,记录 log 观察升级过程,做到心中有数。 有问题也可以反馈厂商。
耐心等待,主备机升级的时间都会比较长。
操作步骤
分别备份主备设备的配置文件,参考 系统管理 → 固件与配置管理 → 配置管理 → 配置备份及恢复章节。
举例:FortiGate-VM 从 FortiOS 7.0.12 升级到 FortiOS 7.2.5,从 https://docs.fortinet.com/upgrade-tool 得知直接升级即可,无需升级多次版本。

从 https://support.fortinet.com/support/#/downloads/firmware 下载 7.2.5 版本对应产品的文件到本地,以便通过 GUI 导入软件版本进行升级。

准备工作做完,正式开始升级,在主设备进入系统管理 → Fabric 管理页面(7.4 为 Firmware & Registration 页面),右键点击要升级的设备,选择升级按钮。

在弹出的页面中,选择文件上传,并浏览选择需要升级的版本。

点击确认并备份配置,会在升级前下载设备当前的配置文件到本地(只有当前主机的)。


此时 FortiOS 将先传给备机,业务还是运行在主机上,等备机重启后将接管主机的业务,然后主机再重启升级,此过程业务是不中断的。

Console 记录
耐心等待与观察 Console 输出信息,做到心中有数。以下为升级过程 Left 设备 Consloe 打印信息,其实管理员并不需要做什么,只需要请注意阅读并理解,做到心中有数,万一出现故障可以知道大概是哪一步的问题。
FGT1-LEFT # Wait for HA to be primary of all clusters... //主设备发送FortiOS到备设备 Send image to HA secondary. ..Wait for secondary to restart... //备机先升级,升级重启约5分钟,请耐心等待 Wait for first secondary to become new primary.. //备机升级并重启完毕后,主机会先等待备机变成新的主机,以便业务被备机先接管 Firmware upgrade in progress ... //当备机成为新主机之后,主机将准备升级 Done. //主机准备升级结束,开始正式升级主设备,升级过程约5分钟,请耐心等待 The system is going down NOW !! Please stand by while rebooting the system. Restarting system. SeaBIOS (version rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org) Machine UUID 934483a5-b727-447c-b98c-9cb5dd2209fb Loading flatkc... ok Loading /rootfs.gz...ok System is starting... The config file may contain errors. Please see details by the command 'diagnose debug config-error-log read'. Serial number is FGVM08TM22000173 FGT1-LEFT login: admin Password: Welcome! FGT1-LEFT # get system status Version: FortiGate-VM64-KVM v7.2.5,build1517,230606 (GA.F) //原主机后升级完毕 Security Level: 1 Firmware Signature: certified Virus-DB: 1.00000(2018-04-09 18:07) Extended DB: 1.00000(2018-04-09 18:07) Extreme 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: 6.00741(2015-12-01 02:30) 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: FGVM08TM23000180 License Status: Valid License Expiration Date: 2024-01-19 VM Resources: 2 CPU/8 allowed, 3946 MB RAM Log hard disk: Available Hostname: FGVM08TM23000180 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: a-p, secondary //升级完毕之后状态是主还是备将视具体情况而定:主防火墙和备防火墙重启完成时间相差五分钟以内,则后面重启的主机(优先级高的FGT)将会主动抢占为主设备,如果二者升级重启时间相差超过5分钟,则后重启的主设备将会处于备的状态,不会抢占回主的状态 Cluster uptime: 2 hours, 15 minutes, 17 seconds Cluster state change time: 2023-09-01 05:16:51 Branch point: 1517 Release Version Information: GA FortiOS x86-64: Yes System time: Fri Sep 1 15:41:51 2023 Last reboot reason: warm rebootRIGHT 防火墙的 Console 记录。
FGT2-RIGHT # geGet image from ha primary OK. //主机发送FortiOS到备机上 Verifying the integrity of the firmware image... Check image OK. Please wait for system to restart. //备机先开始升级并重启,因此业务在主机上运行 Firmware upgrade in progress ... Done. The system is going down NOW !! Please stand by while rebooting the system. Restarting system. SeaBIOS (version rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org) Machine UUID fe581bd9-2eb0-4115-896a-dd50f521d0ee Booting from Hard Disk... SYSLINUX 6.04 EDD 6.04-pre1 Copyright (C) 1994-2015 H. Peter Anvin et al Loading flatkc... ok Loading /rootfs.gz...ok System is starting... The config file may contain errors. Please see details by the command 'diagnose debug config-error-log read'. Serial number is FGVM08TM22000174 FGT2-RIGHT login: admin Password: Welcome! FGT2-RIGHT # get system status Version: FortiGate-VM64-KVM v7.2.5,build1513,230606 (GA.F) //原备机升级成功 Security Level: 1 Firmware Signature: certified Virus-DB: 1.00000(2018-04-09 18:07) Extended DB: 1.00000(2018-04-09 18:07) Extreme 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: 6.00741(2015-12-01 02:30) 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: FGVM08TM23000180 License Status: Valid License Expiration Date: 2024-01-19 VM Resources: 2 CPU/8 allowed, 3946 MB RAM Log hard disk: Available Hostname: FGVM08TM23000180 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: a-p, primary //升级完毕之后状态是主还是备将视具体情况而定:主防火墙和备防火墙重启完成时间相差五分钟以内,则后面重启的主机(优先级高的FGT)将会主动抢占为主设备,如果二者升级重启时间相差超过5分钟,则后重启的主设备将会处于备的状态,不会抢占回主的状态 Cluster uptime: 2 hours, 16 minutes, 28 seconds Cluster state change time: 2023-09-01 05:16:51 Branch point: 1517 Release Version Information: GA FortiOS x86-64: Yes System time: Fri Sep 1 15:41:51 2023 Last reboot reason: warm reboot手工切换 HA 状态,此步骤不是必要,升级完毕之后状态是主还是备将视具体情况而定:
情况 1:主防火墙和备防火墙重启完成时间相差五分钟以内,则后面重启的主机(优先级高的 FGT)将会主动抢占为主设备。如果是这种情况,则不需要任何的额外切换动作。
情况 2:如果二者升级重启时间相差超过 5 分钟,则后重启的主设备将会处于备的状态,不会抢占回主的状态。这个时候才需要命令行进行强制的 HA 切换一下,让 HA 状态恢复到升级之前的主备状态。
如果有以上第 2 种情况,HA-Cluster 升级完毕之后,备机成了新的主,而旧的主机成为了备,并且想要将 HA 的状态切换到升级之前的状态,则只需要重启完成 5 分钟后在备机(新的主机)上敲一条命令即可完成主备切换。
FGT2-RIGHT # diagnose sys ha reset-uptime //此命令会Reset当前设备的HA时间,以便重新进行HA的选举。reset-uptime相当于把备机的HA运行时间清0,这样运行时间长且优先级高的主设备,一定会重新选举为主的再观察 HA 的状态是否是我们所需要的状态,以下这三个命令都可以看到 HA 的选举结果和 HA 状态。
# diagnose sys ha status # get system status # get system ha status升级后检查是否有重要配置丢失。
diagnose debug config-error-log read //不丢路由、接口地址、服务对象、防火墙策略、VPN这些,一般问题不大。丢一些默认的配置可能是因为新版本做了功能变检查配置是否同步,查看主备防火墙的配置 HA checksum,正常来说二者的配置 checksum 是一致的,如果状态不同步,可以参考 HA 双机热备 → HA 常见问题 → HA 同步机制和故障诊断章节排查(如果升级路径有多个版本,建议在每个版本升级完成,等待 HA 同步后,再升级下个版本)。
FGT1-LEFT # diagnose sys ha checksum show is_manage_primary()=0, is_root_primary()=0 debugzone global: a5 20 2d 71 a0 22 13 92 59 82 45 6d 43 b8 fb d9 root: d0 f3 bd a2 b5 f8 df 39 7c 6c 25 c9 91 e1 b9 99 all: b9 3b b3 36 86 d7 ff 08 1d e8 ce 48 e4 85 85 48 checksum global: a5 20 2d 71 a0 22 13 92 59 82 45 6d 43 b8 fb d9 root: d0 f3 bd a2 b5 f8 df 39 7c 6c 25 c9 91 e1 b9 99 all: b9 3b b3 36 86 d7 ff 08 1d e8 ce 48 e4 85 85 48 FGT2-RIGHT # diagnose sys ha checksum show is_manage_primary()=0, is_root_primary()=0 debugzone global: a5 20 2d 71 a0 22 13 92 59 82 45 6d 43 b8 fb d9 root: d0 f3 bd a2 b5 f8 df 39 7c 6c 25 c9 91 e1 b9 99 all: b9 3b b3 36 86 d7 ff 08 1d e8 ce 48 e4 85 85 48 checksum global: a5 20 2d 71 a0 22 13 92 59 82 45 6d 43 b8 fb d9 root: d0 f3 bd a2 b5 f8 df 39 7c 6c 25 c9 91 e1 b9 99 all: b9 3b b3 36 86 d7 ff 08 1d e8 ce 48 e4 85 85 48HA 升级完毕,升级完毕之后查看 HA 的状态、测试业务、最好再次备份一份软件版本升级之后的配置文件。
关闭不间断升级(谨慎使用)
某些特殊情况下,用户需要关闭不间断升级功能,通过如下命令可以关闭不间断升级功能。
重要
关闭 HA 的不间断升级功能,执行升级操作(上传版本文件)后,HA 的所有成员设备会同时重启升级,业务会发生中断!请务必谨慎使用此命令!!!
config system ha
set uninterruptible-upgrade disable
end
7.4.1版本后,命令变为:
config system ha
set upgrade-mode simultaneous
end具体解释可参考官方文档:https://docs.fortinet.com/document/fortigate/7.0.99/administration-guide/247944/upgrading-fortigates-in-an-ha-cluster 中的“Interrupted upgrade”部分。
HA 切换测试注意事项
部分用户在做完 HA 升级或上线后,会做 HA 的切换测试,上边的步骤中已经介绍,通常建议通过命令“diagnose sys ha reset-uptime”进行 HA 主备的切换(默认情况下需要主备的 HA uptime 间隔超过 5 分钟)。
当需要通过 HA 主设备监控接口 Down 的方式测试触发 HA 切换时,尽量使用手工拔线的方式,切记不要直接在页面将主设备监控接口 Shutdown,因为 HA 备机会同步该配置,随后也将监控接口 Shutdown,这会导致 HA 发生主备切换后再发生一次主备切换。
如果不方便到机房手工拔线,可以使用如下 CLI 将主机的监控接口物理性 Down 掉,该操作仅本机生效,不会同步到备机。这样就可以模拟手工拔线相同的效果。
fnsysctl ifconfig port1 downHA 切换测试完成后,记得将原主机 HA 监控接口 UP。
fnsysctl ifconfig port1 up