多主集群 ECMP 配置与接入
场景概述
在双机热备集群中,主备模式下同一时间只有一台转发引擎处理流量——性能上限受限于单台引擎。当业务流量增长到单机无法承载时,需要多台引擎同时工作来分担流量。
矩尺平台支持 ECMP(Equal-Cost Multi-Path,等价多路径)主主模式:将多台转发引擎组成一个 ECMP 流量组,通过三层交换机的 ECMP 协议将流量按五元组哈希后分发到组内各引擎。所有引擎同时在线处理流量,性能上限等于组内所有引擎性能之和。
| 对比维度 | 主备模式 | ECMP 主主模式(本章) |
|---|---|---|
| 同时工作的引擎数 | 1 台 | 最多 8 台 |
| 性能上限 | 单机性能 | 多机性能之和 |
| 故障切换 | 备机接管 VIP(秒级) | 交换机自动收敛(取决于交换机) |
| 依赖条件 | VRRP 心跳 | 三层交换机支持 ECMP + OSPF/BGP 权限 |
| 适用场景 | 通用高可用 | 高吞吐场景(大流量网站、CDN、直播等) |
前提条件
配置 ECMP 主主模式需要三层交换机开放 OSPF 或 BGP 协议权限。如果您无法控制交换机的路由协议配置,请使用主备模式。
整体流程
ECMP 模式比主备模式多了关键的动态路由配置,整体流程如下:
第一步:确认交换机配置 → 三层交换机开启 OSPF 或 BGP,开放相应权限
第二步:确认同名接口 → 所有转发引擎必须有动态路由策略中引用的同名接口
第三步:配置转发引擎集群 → 将多台转发引擎加入同一个集群
第四步:配置动态路由策略 → 创建 OSPF/BGP 路由策略(ECMP 与主备的核心区别)
第五步:创建 ECMP 流量组 → 选择"ECMP等价路由"类型,绑定多台引擎和浮动 IP
第六步:验证 VRF 路由表 → 确认各接口自动生成 VRF 路由,防止三角路由
第七步:创建虚拟服务 → 选择流量组,使用浮动 IP 对外提供服务
第八步:验证与运维 → 测试多引擎流量分担、故障收敛第一步:确认交换机配置
ECMP 的流量分发由三层交换机根据路由表决定,矩尺平台负责将浮动 IP 通过动态路由协议通告给交换机。
交换机侧要求
| 要求 | 说明 |
|---|---|
| 开启 ECMP | 交换机需开启 ECMP 功能(部分厂商默认开启) |
| 启用 OSPF 或 BGP | 交换机需与矩尺转发引擎运行相同的动态路由协议 |
| 开放路由接收 | 交换机需接收矩尺引擎通告的路由条目 |
| 网络可达 | 交换机与矩尺转发引擎之间 IP 可达 |
矩尺平台侧支持的协议
| 协议 | 特点 | 适用场景 |
|---|---|---|
| OSPF | 内部网关协议(IGP),收敛快,配置简单 | 数据中心内部、同一自治域内 |
| BGP | 边界网关协议(EGP),策略丰富,可跨域 | 跨机房、与运营商对接、大规模组网 |
目前矩尺 ECMP 流量组支持的动态路由协议为 OSPF 和 BGP。请根据您的三层交换机实际配置选择对应的协议。
第二步:确认同名接口
在创建 ECMP 流量组之前,必须确保所有计划加入流量组的转发引擎上存在相同名称的网络接口。这是动态路由策略生效的前提条件。
检查方法
进入每台转发引擎的【单台设备页面 → 网络接口】,查看接口列表:
- 记录将用于 ECMP 通信的接口名称(如
eth1、bond0) - 确认所有转发引擎上该接口名称完全一致
- 确认接口已配置本地 IP 且状态为 UP
示例:
| 转发引擎 | 接口名称 | 本地 IP |
|---|---|---|
| engine-A | eth1 | 10.1.9.101/24 |
| engine-B | eth1 | 10.1.9.102/24 |
| engine-C | eth1 | 10.1.9.103/24 |
重要
如果某台引擎上没有同名接口(例如 engine-C 上只有 eth0,没有 eth1),ECMP 流量组创建后将无法正常工作。请先在对应引擎上创建或重命名接口,确保所有引擎接口名称一致。
第三步:配置转发引擎集群
与主备模式相同,将多台转发引擎加入同一个集群。
入口:【平台系统 → 基础设施 → 转发引擎集群】,点击"新增"。
ECMP 流量组目前最多支持 8 台转发引擎,集群中可选择全部或部分引擎加入。
第四步:配置动态路由策略
这是 ECMP 与主备模式的核心区别——需要通过动态路由策略将浮动 IP 通告给三层交换机。
入口:【平台系统 → 基础设施 → 动态路由策略】,点击"新增"。

关键配置

| 配置项 | 说明 |
|---|---|
| 名称 | 便于识别的名称,例如 ecmp-ospf-policy |
| 协议 | 选择 OSPF 或 BGP,与交换机侧保持一致 |
| 接口 | 选择所有转发引擎上都存在的同名接口(如 eth1) |
| 其他协议参数 | 根据交换机侧配置填写(AS 号、Area 等) |
注意
同一 ECMP 流量组上的所有转发引擎,必须同时具备动态路由策略里配置的接口。参见第二步的说明。
动态路由策略创建后,矩尺平台会在后台自动在各转发引擎上启用相应的动态路由协议(OSPF/BGP),并将 ECMP 流量组的浮动 IP 通过该协议通告给交换机。
第五步:创建 ECMP 流量组
入口:【平台系统 → 基础设施 → 流量组管理 → 流量组】,点击"新增"。
| 配置项 | 主备模式 | ECMP 模式 |
|---|---|---|
| 类型 | 主备流量组 | ECMP 等价路由流量组 |
| 转发引擎集群 | 选择集群 | 选择集群 |
| 动态路由策略 | — | 选择第四步创建的路由策略 |
| 浮动 IP | 选择浮动 IP | 选择浮动 IP |
| 转发引擎 | 选两台(主+备) | 选多台(最多 8 台) |

创建完成后,系统会自动为每台转发引擎配置浮动 IP,并通过动态路由策略向交换机通告路由。交换机收到多台引擎通告的同一条路由后,通过 ECMP 算法将流量分发到各引擎。
ECMP 流量组的工作机制
正常状态(以 3 台引擎为例):
客户端 → 交换机 → ECMP哈希分发
├── engine-A(处理约 1/3 流量)
├── engine-B(处理约 1/3 流量)
└── engine-C(处理约 1/3 流量)
某台引擎故障(如 engine-B):
交换机检测到 engine-B 的路由不可达
→ 收敛:将 engine-B 从路由表中移除
→ 重新哈希:流量分发到 engine-A 和 engine-C(各约 1/2)三层交换机根据五元组(传输层协议、源 IP、目的 IP、源端口、目的端口)进行哈希,将同一会话的请求始终分发到同一台引擎,保证会话一致性。
第六步:验证 VRF 路由表
ECMP 流量组创建后,矩尺平台会自动为每个接口配置 VRF(Virtual Routing and Forwarding)路由表,防止三角路由问题。
什么是三角路由问题
如果不配置 VRF,可能出现以下情况:
客户端请求 → 交换机 → engine-A(根据 ECMP 哈希)
engine-A 处理后,响应包通过 engine-B 返回交换机
→ 交换机收到来自 engine-B 的响应包,但期望来自 engine-A
→ 可能导致连接异常或丢包VRF 为每台引擎创建了独立的虚拟路由表,确保"请求从哪台引擎进来,响应就从哪台引擎出去"。
检查 VRF 路由表
进入每台转发引擎的【路由管理 → 路由表】,按 VRF 过滤查看:

确认每台引擎的 VRF 路由表中包含了浮动 IP 对应的路由条目,且下一跳指向正确的接口。
VRF 路由由系统自动维护,正常情况下无需手动干预。
第七步:创建虚拟服务
与主备模式一致——创建虚拟服务时选择流量组(而非单台转发引擎)作为运行对象。
| 配置项 | 主备模式 | ECMP 模式 |
|---|---|---|
| 对象类型 | 流量组 | 流量组 |
| 流量组 | 选择主备流量组 | 选择 ECMP 流量组 |
| 监听地址 | VIP | VIP(浮动 IP) |
第八步:验证与运维
验证流量分担
创建虚拟服务并变更生效后,验证多台引擎是否都收到流量:
- 使用
curl或浏览器多次访问虚拟服务的 VIP - 进入每台转发引擎的【分析】页面,查看吞吐量指标
- 如果 ECMP 配置正确,多台引擎的吞吐量应接近均分(具体取决于五元组哈希的分布)
高可用测试
VIP 收敛时间由三层交换机决定,而非矩尺平台。这是 ECMP 与主备模式的重要区别:
| 测试场景 | 操作 | 预期结果 |
|---|---|---|
| 单引擎故障 | 关闭一台引擎或断开其网络 | 交换机检测到路由不可达后自动收敛,流量分发到剩余引擎。收敛时间取决于交换机 OSPF/BGP 配置(通常秒级到几十秒) |
| 引擎恢复 | 恢复故障引擎 | 交换机检测到路由恢复,重新将其加入 ECMP 分发。同样取决于交换机收敛时间 |
| 多引擎故障 | 关闭多台引擎 | 只要至少有一台引擎在线,服务就不中断 |
缩短收敛时间
如果需要更快的故障切换,建议在交换机上调整 OSPF hello-interval 或 BGP keepalive 参数。例如将 OSPF hello 间隔从默认 10 秒缩短到 1-3 秒,可显著减少故障检测时间。
日常巡检要点
| 检查项 | 关注内容 |
|---|---|
| 流量分布 | 各引擎的吞吐量是否大致均衡(允许一定偏差,取决于五元组哈希分布) |
| 动态路由状态 | OSPF/BGP 邻居关系是否正常建立,路由表是否包含 VIP 条目 |
| 同名接口 | 各引擎的接口状态是否正常(UP/DOWN) |
| VRF 路由表 | 各引擎的 VRF 路由条目是否一致 |
| 交换机路由表 | 交换机上是否能看到多台引擎通告的等价路由 |
| 版本一致性 | 所有引擎的版本号是否一致 |
引擎增减
增加引擎: 将新引擎加入转发引擎集群后,在 ECMP 流量组中修改成员列表,添加新引擎。交换机将自动学习新引擎的路由并将其纳入 ECMP 分发。注意新引擎必须具备同名接口。
移除引擎: 在 ECMP 流量组中修改成员列表,移除引擎。交换机检测到该引擎路由不可达后会自动停止向其分发流量,无需手动操作交换机。
动态路由策略的详细配置参数请参考 动态路由策略用户手册,转发引擎上的路由管理参见 动态路由。
