双机热备集群配置
场景概述
矩尺平台有两类高可用:
| 类型 | 层面 | 保护对象 | 实现方式 | 对应文档 |
|---|---|---|---|---|
| 管理节点 HA | 控制面 | Web 管理平台、配置下发 | 双管理节点 + VIP + VRRP | 部署高可用双管理节点 |
| 转发引擎 HA(本章) | 数据面 | 业务流量转发 | 主备流量组 + 浮动 IP(VIP) | 本文档 |
本章聚焦数据面的双机热备:两台转发引擎组成主备流量组,对外暴露一个浮动 IP(VIP),正常情况下主引擎处理所有流量,备用引擎待命。主引擎故障时,备引擎自动接管 VIP 并继续转发流量,客户端无感知。
管理节点 HA vs 转发引擎 HA
管理节点 HA 保护的是"配置和管理的入口",转发引擎 HA 保护的是"业务流量的通道"。两者互相独立:可以只有管理节点 HA(单台转发引擎),也可以只有转发引擎 HA(单管理节点 + 双转发引擎),也可以两者都配(生产环境推荐)。
整体流程
第一步:配置转发引擎集群 → 将两台转发引擎加入同一个集群
第二步:配置本地 IP → 在每台转发引擎上配置与 VIP 同网段的本地 IP
第三步:创建主备流量组 → 将两台转发引擎组织为主备关系(第二、三步没有先后关系)
第四步:创建浮动 IP(VIP) → 在流量组中创建统一对外暴露的虚拟 IP
第五步:创建虚拟服务 → 选择流量组(而非单台转发引擎)作为运行对象
第六步:验证与运维 → 测试主备切换、规划升级流程第一步:配置转发引擎集群
首先需要将两台转发引擎纳入同一个转发引擎集群。
入口:【平台系统 → 基础设施 → 转发引擎集群】,点击"新增":

选择两台转发引擎,并为该集群选择一个集群网络策略(系统内置了默认策略,一般选择默认即可)。
前提
两台转发引擎必须已通过【平台系统 → 基础设施 → 转发引擎】添加到平台中,且状态均为正常。参见 快速创建HTTP虚拟服务 - 创建转发引擎。
第二步:配置本地 IP
在创建浮动 IP(VIP)之前,必须先确保每台转发引擎上已经配置了与 VIP 同网段的本地 IP。浮动 IP 是建立在本地 IP 之上的——它是从本地 IP 所在网段中"借"出一个地址作为 VIP。
操作方式
在【单台设备页面 → 本地 IP】中,为每台转发引擎分别新增本地 IP:

示例:
| 转发引擎 | 本地 IP | 说明 |
|---|---|---|
| engine-A | 10.1.9.101/24 | 物理接口 IP |
| engine-B | 10.1.9.102/24 | 物理接口 IP(与 A 同网段) |
| 浮动 IP | 10.1.9.100/32 | VIP,将从 10.1.9.0/24 网段中分配 |
重要
浮动 IP 必须与两台转发引擎的本地 IP 处于同一网段,否则流量无法正常路由到 VIP。
第三步:创建主备流量组
入口:【平台系统 → 基础设施 → 流量组管理 → 流量组】,点击"新增":

关键配置
| 配置项 | 设置 |
|---|---|
| 类型 | 选择 "主备流量组" |
| 转发引擎集群 | 选择第一步创建的集群 |
| 主转发引擎 | 选择一台为主(如 engine-A) |
| 备转发引擎 | 选择一台为备(如 engine-B) |
| 浮动 IP | 选择第三步创建的浮动 IP |

创建完成后,流量组的浮动 IP 会自动绑定到主转发引擎上。此时 VIP 开始工作——发往 VIP 的流量将被主转发引擎处理。
主备流量组的工作机制
正常状态:
客户端 → VIP (10.1.9.100) → 主引擎 engine-A 处理流量
备引擎 engine-B 待命(不收发流量)
主引擎故障:
客户端 → VIP (10.1.9.100) → 主引擎 engine-A ✗(故障)
→ 备引擎 engine-B 自动接管 VIP,继续处理流量
主引擎恢复:
客户端 → VIP (10.1.9.100) → 主引擎 engine-A 恢复后自动抢回 VIP
→ 备引擎 engine-B 退回待命状态主备流量组最多可包含 4 台转发引擎,但同一时间发往 VIP 的流量只会由一台主引擎处理(性能上限受限于单台主引擎的处理能力)。如果需要多台引擎同时处理流量以提高性能,请使用 ECMP 等价路由流量组(主主模式)。
云环境注意事项
某些 IaaS 云(如部分版本的阿里政务云)不允许主机发送多播或广播报文。这种情况下,主备切换依赖的 VRRP 心跳可能失效。此时需要在流量组配置中开启单播模式,使心跳通过单播方式传输,确保主备切换正常进行。
第四步:创建浮动 IP(VIP)
入口:【平台系统 → 基础设施 → 流量组管理 → 浮动 IP】,点击"新增":

| 配置项 | 说明 |
|---|---|
| 转发引擎集群 | 选择第一步创建的集群 |
| IP 地址 | 填写计划使用的 VIP,例如 10.1.9.100 |
| 协议 | 支持 IPv4 和 IPv6 |
浮动 IP 创建后,初始状态为未启用,将在下一步被流量组激活。
第五步:创建虚拟服务(使用流量组)
这是与"单机模式"的关键区别——创建虚拟服务时,不选择具体的转发引擎,而是选择流量组。
入口:【SLB 本地负载 → 虚拟服务】,点击"新增":
| 配置项 | 单机模式 | 主备模式(本章) |
|---|---|---|
| 对象类型 | 转发引擎 | 流量组 |
| 转发引擎 / 流量组 | 选择某台具体引擎 | 选择第四步创建的主备流量组 |
| 监听地址 | 引擎物理 IP 或 0.0.0.0 | 浮动 IP(VIP) |
其余配置(协议、端口、分发规则、SSL 策略等)与单机模式完全一致。
客户端访问时,目标地址应填写 VIP(如 10.1.9.100),而非某台转发引擎的物理 IP。这样无论主备如何切换,客户端始终访问同一个 IP。
第六步:运维操作
查看流量组状态
在【平台系统 → 基础设施 → 流量组管理 → 流量组】列表中,可查看当前主备状态:

列表中会显示哪台是当前主引擎、哪台是备引擎,以及各引擎的运行状态。
主动主备切换
当需要在主备引擎之间手动切换时(如例行维护),在流量组列表中点击"主转发引擎切换按钮":

点击后,原备引擎升级为主引擎(接管 VIP),原主引擎降级为备引擎。切换过程中可能出现短暂的流量中断(通常秒级),建议在业务低峰期操作。
主动切换的典型场景:
- 主引擎需要停机维护
- 主引擎负载过高,需要切换到备引擎分担(需配合 ECMP 模式)
- 升级版本时按顺序切换(见下方)
被动切换(故障自动切换)
被动切换无需人工干预,由系统自动完成。触发条件包括:
- 主引擎硬件故障或宕机
- 主引擎网络链路中断
- 主引擎上的矩尺转发服务异常退出
备引擎检测到主引擎心跳丢失后,自动接管 VIP 并开始处理流量。切换时间取决于心跳检测间隔和超时设置,通常在数秒内完成。
主引擎恢复后,默认会自动抢回 VIP(从备引擎手中夺回主角色),恢复故障前的状态。
升级版本时的最佳实践
当需要升级矩尺平台版本时,双机热备可以做到业务不中断升级。推荐以下流程:
升级前状态:
主引擎 engine-A(处理流量) ← VIP
备引擎 engine-B(待命)
步骤 1:先升级备引擎 engine-B
→ engine-B 升级中,暂时脱离流量组(不会影响业务,因为流量在 A 上)
步骤 2:等待 engine-B 升级完成并恢复正常
步骤 3:主动切换主备
→ 点击"主转发引擎切换按钮"
→ engine-B 升级为主引擎(接管 VIP,开始处理流量)
→ engine-A 降级为备引擎
步骤 4:升级原主引擎 engine-A
→ engine-A 升级中(不会影响业务,因为流量在 B 上)
步骤 5:可选,再次切换回原主备关系
→ engine-A 恢复为主,engine-B 退回待命升级操作详见 升级用户手册。
日常巡检要点
| 检查项 | 关注内容 |
|---|---|
| 流量组状态 | 主备角色是否与预期一致,两台引擎运行状态是否正常 |
| VIP 可达性 | 用 ping VIP 和 curl https://VIP 验证流量是否通畅 |
| 主备心跳 | 两台引擎之间的网络连通性是否正常(心跳链路不能断) |
| 版本一致性 | 主备引擎的版本号是否一致(不一致时可能导致切换后行为差异) |
| 硬件资源 | 备引擎的 CPU/内存规格是否与主引擎相当(接管后能否承载相同流量) |
更多流量组配置选项(ECMP 主主模式、单播设置等)请参考流量组用户手册。
