配置项作用 #
gateway.recover_after_master_nodes 配置项用于指定集群恢复状态所需要的最少主节点数量。
当集群启动时,只有在达到指定数量的主节点(有资格成为 master 的节点)后,才会开始恢复集群状态。
配置项属性 #
- 配置路径:
gateway.recover_after_master_nodes - 数据类型:
integer - 默认值:
0 - 最小值:
0 - 是否可选: 是
- 弃用状态: ⚠️ 已弃用
配置项详解 #
工作机制 #
集群启动过程
│
↓
读取配置 recover_after_master_nodes = 2
│
↓
检测当前主节点数量
│
├──────── 当前数量 < 配置数量
│ │
│ ↓
│ 不开始恢复,继续等待
│ │
│ ↓
│ [调试日志] 主节点数量不足
│ │
│ ↓
│ 等待更多主节点加入...
│
└──────── 当前数量 ≥ 配置数量
│
↓
开始恢复集群状态
决策逻辑 #
// 简化的代码逻辑
if (recoverAfterMasterNodes != -1) {
if (nodes.getMasterNodes().size() < recoverAfterMasterNodes) {
// 不开始恢复
logger.debug("not recovering from gateway, nodes_size (master) [{}] < recover_after_master_nodes [{}]",
nodes.getMasterNodes().size(), recoverAfterMasterNodes);
return;
}
}
// 开始恢复
配置建议 #
⚠️ 重要提示 #
此配置项已被标记为弃用,建议使用以下替代方案:
- 控制主节点选举: 使用
discovery.zen.minimum_master_nodes - 控制数据节点数量: 使用
gateway.recover_after_data_nodes
使用替代配置(推荐) #
# 推荐使用以下配置替代
# 控制主节点选举所需的最小节点数
discovery.zen.minimum_master_nodes: 2
# 控制数据节点数量
gateway.recover_after_data_nodes: 3
代码示例 #
easysearch.yml 配置(已弃用) #
# 不推荐使用此配置
gateway:
recover_after_master_nodes: 2 # 期望 2 个主节点才开始恢复
推荐的替代配置 #
cluster:
discovery:
zen:
# 控制主节点选举,防止脑裂
minimum_master_nodes: 2
gateway:
# 确保有足够的数据节点
recover_after_data_nodes: 3
完整的恢复配置 #
cluster:
discovery:
zen:
minimum_master_nodes: 2
gateway:
# 使用数据节点控制而不是主节点
recover_after_data_nodes: 3
recover_after_time: 5m
相关配置 #
| 配置项 | 状态 | 作用 |
|---|---|---|
gateway.recover_after_master_nodes | ⚠️ 已弃用 | 恢复所需的主节点数量 |
gateway.recover_after_data_nodes | ✅ 推荐 | 恢复所需的数据节点数量 |
gateway.recover_after_nodes | ⚠️ 已弃用 | 恢复所需的总节点数量 |
discovery.zen.minimum_master_nodes | ✅ 推荐 | 主节点选举所需最小节点数 |
默认值回退逻辑 #
// 如果未设置 recover_after_master_nodes,
// 系统会回退到使用 discovery.zen.minimum_master_nodes
if (RECOVER_AFTER_MASTER_NODES_SETTING.exists(settings)) {
recoverAfterMasterNodes = RECOVER_AFTER_MASTER_NODES_SETTING.get(settings);
} else if (discovery instanceof ZenDiscovery) {
recoverAfterMasterNodes = settings.getAsInt("discovery.zen.minimum_master_nodes", -1);
} else {
recoverAfterMasterNodes = -1;
}
使用场景 #
原本的使用场景(已弃用) #
此配置原适用于以下场景:
- 防止脑裂: 确保足够的主节点参与恢复
- 大型集群: 协调多个主节点的启动顺序
- 高可用性: 等待冗余主节点上线
推荐的替代方案 #
| 需求 | 推荐配置 |
|---|---|
| 防止脑裂 | discovery.zen.minimum_master_nodes |
| 确保数据节点数量 | gateway.recover_after_data_nodes |
| 控制恢复时机 | gateway.recover_after_time |
配置组合示例 #
生产环境配置(推荐) #
cluster:
discovery:
zen:
# 防止脑裂:设置为 (master_eligible_nodes / 2) + 1
minimum_master_nodes: 2
gateway:
# 确保有足够的数据节点才恢复
recover_after_data_nodes: 3
# 超时后强制恢复
recover_after_time: 5m
高可用配置 #
cluster:
discovery:
zen:
minimum_master_nodes: 3 # 5个主节点中的3个
gateway:
recover_after_data_nodes: 5
recover_after_time: 10m
注意事项 #
已弃用: 此配置已被弃用,建议使用
discovery.zen.minimum_master_nodes替代。仅限主节点: 此配置只计算有资格成为主节点的节点,不包括纯数据节点。
与 minimum_master_nodes 的区别:
recover_after_master_nodes: 控制何时开始恢复minimum_master_nodes: 控制主节点选举
默认值: 默认值为
0,表示不等待特定数量的主节点。动态更新: 此配置不支持动态更新,修改后需要重启节点。
回退行为: 如果未设置,系统会尝试使用
discovery.zen.minimum_master_nodes的值。升级迁移: 如果使用此配置,建议在升级时迁移到新的配置方式。





