第205篇:防火墙双机热备:主备与负载分担
关键词:双机热备、HA、主备模式、负载分担、HRP、状态同步、会话同步、抢占模式、心跳线
一、引言
在企业网络中,防火墙作为安全边界的关键设备,其可用性直接关系到业务的连续性。单台防火墙一旦出现故障,将导致整个网络中断。双机热备(High Availability, HA)通过在两台防火墙之间建立冗余关系,实现了设备级的故障自动切换,是构建高可用安全架构的基础方案。
华为防火墙采用 HRP(Huawei Redundancy Protocol)协议实现双机热备,支持主备模式和负载分担两种工作模式。理解这两种模式的差异及其适用场景,是设计高可用防火墙架构的核心能力。
二、核心概念
2.1 主备模式(Active-Standby)
主备模式是最常见的双机热备方案。两台防火墙中一台作为主设备(Active),承担所有业务流量;另一台作为备设备(Standby),实时同步主设备的配置和会话状态但不转发业务流量。
主备模式的核心特征:
| 特性 | 主设备(Active) | 备设备(Standby) |
|---|---|---|
| 业务流量 | 全部处理 | 不处理 |
| 配置管理 | 唯一管理入口 | 自动同步主设备配置 |
| 会话表 | 维护完整会话 | 实时同步主设备会话 |
| 故障切换 | 自动降级为备 | 自动升级为主 |
2.2 负载分担模式(Active-Active)
负载分担模式下,两台防火墙同时处理业务流量,通过 VRRP 或策略路由将流量分散到两台设备上。这种模式充分利用了两台设备的硬件资源,但配置复杂度较高。
负载分担的核心要点:
- 两台防火墙通过 HRP 同步配置和部分会话状态
- 每台设备独立维护自己的会话表(本端创建的会话不同步到对端)
- 通过 VRRP 组将不同业务区域的流量分配到不同设备
- 某台设备故障时,对端接管全部流量
2.3 HRP 协议工作机制
HRP(Huawei Redundancy Protocol)是华为防火墙专有的双机热备协议,运行在两台防火墙的心跳接口上,负责以下功能的同步:
| 同步内容 | 说明 |
|---|---|
| 配置同步 | 主设备配置变更实时同步到备设备 |
| 会话同步 | 主设备的会话表项同步到备设备(主备模式) |
| 状态同步 | 设备状态、接口状态、路由状态同步 |
| 切换协商 | 故障检测和角色切换协商 |
三、技术细节
3.1 主备模式心跳与切换流程

3.2 心跳链路设计
心跳链路是双机热备的基础,其可靠性直接决定热备系统的质量。华为防火墙支持两种心跳链路配置方式:
| 方式 | 拓扑 | 可靠性 |
|---|---|---|
| 直连心跳 | 两台防火墙通过专用网线直连心跳接口 | 中等(单链路故障) |
| 以太网心跳 | 心跳接口连接交换机,支持主备两条心跳链路 | 高(链路冗余) |
最佳实践建议使用双心跳链路:一条专用直连心跳线 + 一条通过业务交换机的心跳线。当直连心跳线故障时,自动切换到备份心跳链路。
3.3 会话同步的策略
会话同步是主备模式实现无缝切换的关键。但并非所有会话都需要同步:
| 会话类型 | 是否同步 | 原因 |
|---|---|---|
| 普通 TCP/UDP 会话 | 同步 | 切换后继续通信 |
| NAT 会话 | 同步 | 维持地址映射关系 |
| IPSec SA | 同步 | VPN 连接不断 |
| 大流量长时间会话 | 可选不同步 | 同步开销过大 |
| 已被 ALG 修改的会话 | 同步 | 需要维持应用状态 |
四、实战配置/案例分析
4.1 主备模式完整配置
# ============================================
# 设备A(主设备)配置
# ============================================
system-view
sysname FW-Primary
# 1. 创建心跳接口(Eth-Trunk聚合链路)
interface Eth-Trunk 1
mode lacpu
trunkport GigabitEthernet 0/0/4
trunkport GigabitEthernet 0/0/5
quit
# 2. 创建心跳逻辑接口
interface Channel 1
ip address 169.254.1.1 255.255.255.252
quit
# 3. 配置HRP
hrp
# 设置HRP ID(主设备ID=1)
id 1
priority 120
# 开启配置自动同步
configuration enable
# 开启会话同步
session enable
quit
# 4. 配置VRRP(业务接口)
interface GigabitEthernet 0/0/2
description To-Trust-Internal
# 实际IP(主设备)
ip address 10.10.0.2 255.255.255.0
vrrp vrid 10 virtual-ip 10.10.0.1
vrrp vrid 10 priority 120
vrrp vrid 10 preempt-mode timer delay 30
quit
interface GigabitEthernet 0/0/0
description To-Internet
ip address 202.96.1.2 255.255.255.252
vrrp vrid 20 virtual-ip 202.96.1.1
vrrp vrid 20 priority 120
vrrp vrid 20 preempt-mode timer delay 30
quit
# ============================================
# 设备B(备设备)配置
# ============================================
system-view
sysname FW-Standby
# 1. 心跳接口(与主设备相同物理连接)
interface Eth-Trunk 1
mode lacpu
trunkport GigabitEthernet 0/0/4
trunkport GigabitEthernet 0/0/5
quit
interface Channel 1
ip address 169.254.1.2 255.255.255.252
quit
# 2. 配置HRP
hrp
id 2
priority 100
# 注意:备设备不手动配置业务规则
# 配置会自动从主设备同步
quit
# 3. VRRP配置
interface GigabitEthernet 0/0/2
description To-Trust-Internal
ip address 10.10.0.3 255.255.255.0
vrrp vrid 10 virtual-ip 10.10.0.1
vrrp vrid 10 priority 100
vrrp vrid 10 preempt-mode timer delay 60
quit
interface GigabitEthernet 0/0/0
description To-Internet
ip address 202.96.1.3 255.255.255.252
vrrp vrid 20 virtual-ip 202.96.1.1
vrrp vrid 20 priority 100
vrrp vrid 20 preempt-mode timer delay 60
quit
4.2 负载分担模式配置要点
# ============================================
# 负载分担模式:设备A(VRP角色A)
# ============================================
hrp
id 1
priority 120
# 负载分担模式
mode load-balance
quit
# VRRP组10:内网方向,设备A为主
interface GigabitEthernet 0/0/2
ip address 10.10.0.2 255.255.255.0
vrrp vrid 10 virtual-ip 10.10.0.1
vrrp vrid 10 priority 120
quit
# VRRP组20:外网方向,设备A为备
interface GigabitEthernet 0/0/0
ip address 202.96.1.2 255.255.255.252
vrrp vrid 20 virtual-ip 202.96.1.1
vrrp vrid 20 priority 100
quit
# ============================================
# 负载分担模式:设备B(VRP角色B)
# ============================================
hrp
id 2
priority 100
mode load-balance
quit
# VRRP组10:内网方向,设备B为备
interface GigabitEthernet 0/0/2
ip address 10.10.0.3 255.255.255.0
vrrp vrid 10 virtual-ip 10.10.0.1
vrrp vrid 10 priority 100
quit
# VRRP组20:外网方向,设备B为主
interface GigabitEthernet 0/0/0
ip address 202.96.1.3 255.255.255.252
vrrp vrid 20 virtual-ip 202.96.1.1
vrrp vrid 20 priority 120
quit
4.3 监控与排障命令
# 查看HRP状态
display hrp state
# 输出示例:
# HRP State: Primary
# HRP ID: 1
# Priority: 120
# Config sync: Success
# Session sync: Success
# Link State: Up
# 查看HRP链路状态
display hrp link
# 输出示例:
# Link ID: 1
# Interface: Channel1
# State: Up
# Protocol: HRP
# 查看会话同步状态
display hrp session
# 输出示例:
# Sync Session Count: 12,345
# Sync Rate: 500 sessions/sec
# 手动测试切换(谨慎操作)
hrp swap
# 或强制切换
hrp reset
4.4 故障案例:脑裂(Split-Brain)问题
故障现象:双机热备系统中两台防火墙同时认为自己是主设备,导致业务异常。
排查过程:
- 检查两台设备的 HRP 状态:
# 设备A
display hrp state
# HRP State: Primary
# 设备B
display hrp state
# HRP State: Primary <-- 异常!两台都认为自己为主
- 检查心跳链路:
display hrp link
# 主心跳链路:Down
# 备份心跳链路:Down
# 两条心跳链路全部中断
-
根因分析:两条心跳链路同时故障(光纤被施工挖断 + 交换机端口故障),两台防火墙失去通信。在 HRP 超时后,两台设备均认为对端已故障,各自切换为 Active 角色,形成脑裂。
-
影响:
- 两台设备同时占用虚拟 IP,导致 ARP 冲突
- 会话表不一致,部分用户连接中断
-
NAT 地址映射冲突,外网 IP 被重复使用
-
修复与预防措施:
# 临时修复:在一台设备上手动降级
hrp reset
# 长期预防:
# 1. 心跳链路物理隔离(不同路由走线)
# 2. 部署第三心跳链路(4G/5G 备份链路)
# 3. 配置防脑裂机制(通过业务交换机的心跳检测)
hrp split-brain-prevention enable
五、总结
| 知识点 | 核心要点 |
|---|---|
| 主备模式 | 一台 Active 处理业务,Standby 待命,切换时无会话丢失 |
| 负载分担 | 两台同时处理流量,通过 VRRP 分配业务方向 |
| HRP 协议 | 华为专有协议,实现配置/会话/状态三重同步 |
| 心跳链路 | 建议双链路冗余,物理路径隔离 |
| VRRP | 与 HRP 配合,实现业务 IP 的无缝漂移 |
| 会话同步 | 主备模式全量同步,负载分担仅同步部分 |
| 抢占模式 | 主设备恢复后自动抢回主角色,可配置延迟时间 |
| 脑裂风险 | 心跳全断时两台争为主,需物理隔离+防脑裂机制 |
思考
- 主备模式和负载分担模式在会话同步方面的策略有何不同?负载分担模式下,如果一台设备故障,另一台能否接管全部会话?
- HRP 配置同步与手动在两台设备上分别配置业务规则相比,各有什么优缺点?在什么场景下不建议使用自动配置同步?
- 如果两台防火墙通过同一条以太网交换机连接心跳线,当交换机故障时会出现什么问题?如何设计心跳链路拓扑来避免单点故障?
下篇预告:第206篇:防火墙的虚拟化:虚拟防火墙(VSYS)