配置项作用 #
gateway.expected_nodes 配置项指定集群恢复时期望的节点数量。当集群重启时,此配置控制必须有多少个节点加入后才开始恢复集群状态。
配置项类型 #
该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。
默认值 #
-1(禁用此检查)
是否必需 #
可选配置项(已弃用)
取值范围 #
-1 ~ 正整数
配置格式 #
# 禁用(默认)
gateway.expected_nodes: -1
# 期望 3 个节点后恢复
gateway.expected_nodes: 3
# 期望 5 个节点后恢复
gateway.expected_nodes: 5
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
gateway.expected_nodes | -1 | 期望的总节点数(已弃用) |
gateway.expected_data_nodes | -1 | 期望的数据节点数 |
gateway.expected_master_nodes | -1 | 期望的主节点数(已弃用) |
gateway.recover_after_nodes | -1 | 恢复前最少节点数(已弃用) |
gateway.recover_after_data_nodes | -1 | 恢复前最少数据节点数 |
gateway.recover_after_time | 0 | 恢复前等待时间 |
gateway.recover_after_master_nodes | 0 | 恢复前最少主节点数(已弃用) |
工作原理 #
集群恢复过程:
┌─────────────────────────────────────────────────────────────────┐
│ 集群重启恢复流程 │
└─────────────────────────────────────────────────────────────────┘
节点启动
│
▼
等待其他节点
│
├── gateway.expected_nodes: 3
│
└── 检查当前节点数
│
├── 节点数 < 3
│ │
│ └── 继续等待,阻塞集群恢复
│
└── 节点数 >= 3
│
▼
开始集群恢复
│
├── 从持久化存储读取集群状态
├── 恢复索引元数据
└── 开始分片分配
使用场景 #
1. 小型集群(3 节点) #
gateway.expected_nodes: 3
gateway.expected_data_nodes: 2
效果: 必须至少 3 个节点(其中 2 个为数据节点)加入才开始恢复。
2. 大型集群(7 节点) #
gateway.expected_nodes: 7
gateway.expected_data_nodes: 5
效果: 确保大多数节点加入后才开始恢复,避免数据不一致。
3. 禁用检查(默认) #
gateway.expected_nodes: -1
效果: 节点启动后立即恢复,无需等待其他节点。
与 recover_after_time 的配合 #
# 方式 1:仅节点数控制
gateway.expected_nodes: 3
# 方式 2:仅时间控制
gateway.recover_after_time: 5m
# 方式 3:节点数或时间(先到者触发)
gateway.expected_nodes: 3
gateway.recover_after_time: 5m
# 3 个节点加入后,或 5 分钟后开始恢复
推荐配置 #
| 场景 | expected_nodes | expected_data_nodes | 说明 |
|---|---|---|---|
| 开发/测试 | -1 | -1 | 禁用检查 |
| 生产(3节点) | 3 | 2 | 确保完整集群 |
| 生产(5节点) | 5 | 3 | 高可用要求 |
| 生产(7节点) | 7 | 5 | 大型集群 |
集群重启最佳实践 #
# 完整配置示例
gateway.expected_nodes: 3
gateway.expected_data_nodes: 2
gateway.recover_after_time: 5m
行为:
- 如果 3 个节点在 5 分钟内加入 → 立即恢复
- 如果 5 分钟后节点数不足 → 也开始恢复
弃用说明 #
此配置项已被弃用,建议使用以下配置替代:
| 旧配置 | 新配置 |
|---|---|
gateway.expected_nodes | 无直接替代 |
gateway.expected_master_nodes | 无直接替代 |
gateway.recover_after_nodes | gateway.recover_after_data_nodes |
监控建议 #
# 查看集群状态
GET /_cluster/health
# 查看节点信息
GET /_cat/nodes?v
# 查看集群是否在恢复中
GET /_cluster/state
常见问题 #
问题 1:集群无法启动
可能原因: 配置的期望节点数无法达到
解决方案:
- 检查网络连接
- 检查节点配置
- 降低期望节点数或设置为 -1
问题 2:恢复等待时间过长
可能原因: 某些节点无法加入集群
解决方案:
# 添加超时时间
gateway.recover_after_time: 5m
注意事项 #
- 已弃用:此配置项已弃用,新部署应避免使用
- 静态配置:修改需要重启节点
- 集群恢复:影响集群重启时的恢复行为
- 配合使用:应与
recover_after_time配合使用 - 规划节点数:根据实际集群规模设置合理的值





