配置项作用 #
discovery.zen.master_election.wait_for_joins_timeout 配置项用于控制主节点选举过程中等待其他主节点加入的超时时间。
当一个节点被选举为候选主节点时,它会等待其他具有主节点资格的节点加入集群,此配置决定了等待的最长时间。
配置项属性 #
- 配置路径:
discovery.zen.master_election.wait_for_joins_timeout - 数据类型:
TimeValue(时间值) - 默认值:
join_timeout / 2(默认 30 秒) - 最小值:
0ms - 是否可选: 是
- 弃用状态: ⚠️ 已弃用
配置项详解 #
工作机制 #
主节点选举流程
节点A 被选为候选主节点
│
↓
计算需要等待的节点数量
requiredJoins = max(0, minimum_master_nodes - 1)
│
↓
等待其他主节点加入
│
├──────── < wait_for_joins_timeout
│ ↓
│ 足够节点加入
│ ↓
│ 选举成功 ✅
│
└──────── ≥ wait_for_joins_timeout
↓
超时,选举失败
↓
重新发起选举
动态默认值 #
// 默认值是 join_timeout 的一半
wait_for_joins_timeout = join_timeout / 2
如果 join_timeout = 60s(默认):
wait_for_joins_timeout = 60s / 2 = 30s
如果 join_timeout = 100s:
wait_for_joins_timeout = 100s / 2 = 50s
与 minimum_master_nodes 的关系 #
等待节点数量计算
假设 minimum_master_nodes = 3:
requiredJoins = 3 - 1 = 2
需要等待 2 个其他主节点加入
假设 minimum_master_nodes = 2:
requiredJoins = 2 - 1 = 1
需要等待 1 个其他主节点加入
配置建议 #
⚠️ 重要提示 #
此配置项已被标记为弃用,建议保持默认值或使用新的发现机制。
生产环境(默认) #
discovery.zen.master_election.wait_for_joins_timeout: 30s
建议: 保持默认值 30s(join_timeout/2)。适用于大多数生产环境。
快速选举要求 #
discovery.zen.master_election.wait_for_joins_timeout: 10s
建议: 减少到 10s-20s。当需要快速完成选举时使用。
高延迟网络 #
discovery.zen.master_election.wait_for_joins_timeout: 60s
建议: 增加到 45s-90s。网络延迟高时需要更长的等待时间。
代码示例 #
easysearch.yml 配置(已弃用) #
discovery:
zen:
join_timeout: 60s
# wait_for_joins_timeout 会自动计算为 30s
显式配置超时 #
discovery:
zen:
master_election:
wait_for_joins_timeout: 45s # 覆盖自动计算的值
配合 minimum_master_nodes #
discovery:
zen:
minimum_master_nodes: 3
master_election:
wait_for_joins_timeout: 30s
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
discovery.zen.master_election.wait_for_joins_timeout | 选举等待加入超时 | join_timeout/2 |
discovery.zen.join_timeout | 加入超时 | 60s |
discovery.zen.minimum_master_nodes | 选举所需主节点数 | -1 |
discovery.zen.ping_timeout | ping 超时 | 3s |
配置关系 #
wait_for_joins_timeout 与 join_timeout 的关系
join_timeout = 60s
wait_for_joins_timeout = 60s / 2 = 30s
选举总时间包含:
1. 等待节点加入 (最多 30s)
2. 实际的选举过程
超时设置指南 #
| 集群规模 | minimum_master_nodes | 推荐 wait_for_joins_timeout | 说明 |
|---|---|---|---|
| 小型 (3 节点) | 2 | 15-30s | 网络快,短时间足够 |
| 中型 (5-7 节点) | 3-4 | 30-45s | 标准配置 |
| 大型 (9+ 节点) | 5+ | 45-90s | 节点多,需要更长等待 |
| 跨地域 | 3+ | 60-120s | 网络延迟高 |
选举时间分析 #
最佳情况(立即加入):
选举时间 < 1s
典型情况(大部分节点快速加入):
选举时间 ≈ 5-10s
最坏情况(超时):
选举时间 ≈ wait_for_joins_timeout + 选举处理时间
使用场景 #
推荐保持默认的场景 #
- 标准数据中心: 网络稳定、延迟低
- 中小型集群: 节点数量适中
- 正常负载: 集群启动正常
推荐增加的场景 #
- 跨地域部署: 网络延迟高
- 大型集群: 节点多、加入慢
- 复杂网络: 网络不稳定
推荐减少的场景 #
- 快速恢复: 需要快速完成选举
- 稳定环境: 网络和节点都很稳定
- 小型集群: 节点少、加入快
注意事项 #
已弃用: 此配置已被标记为弃用,建议关注新的发现机制。
动态计算: 默认值基于
join_timeout动态计算。与 minimum_master_nodes 配合: 等待的节点数量 = minimum_master_nodes - 1。
覆盖机制: 显式配置会覆盖自动计算的值。
测试环境: 测试中通常设置为 5s 以确保选举稳定。
调试日志: 启用调试日志可以看到选举过程的详细信息。
动态更新: 此配置支持动态更新,但需谨慎修改。
与集群启动的关系: 集群启动时,此配置影响主节点选举的速度。





