Skip to content

双机热备集群配置

场景概述

矩尺平台有两类高可用:

类型层面保护对象实现方式对应文档
管理节点 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

示例:

转发引擎本地 IP说明
engine-A10.1.9.101/24物理接口 IP
engine-B10.1.9.102/24物理接口 IP(与 A 同网段)
浮动 IP10.1.9.100/32VIP,将从 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新增

配置项说明
转发引擎集群选择第一步创建的集群
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 VIPcurl https://VIP 验证流量是否通畅
主备心跳两台引擎之间的网络连通性是否正常(心跳链路不能断)
版本一致性主备引擎的版本号是否一致(不一致时可能导致切换后行为差异)
硬件资源备引擎的 CPU/内存规格是否与主引擎相当(接管后能否承载相同流量)

更多流量组配置选项(ECMP 主主模式、单播设置等)请参考流量组用户手册