配置项作用 #
cluster.nodes.reconnect_interval 配置项控制集群中节点之间连接断开后重新连接的间隔时间。当检测到节点间连接断开时,系统会按照此间隔定期尝试重新建立连接,确保集群的高可用性。
配置项类型 #
该配置项为静态配置,需要在 easysearch.yml 配置文件中设置,修改后需要重启节点才能生效。
默认值 #
10s(10秒)
是否必需 #
可选配置项(有默认值)
取值范围 #
1s ~ 正无穷时间值
建议配置范围:3s - 60s
配置格式 #
# easysearch.yml
# 默认配置
cluster.nodes.reconnect_interval: 10s
# 更快的重连(适用于高可用要求场景)
cluster.nodes.reconnect_interval: 5s
# 更慢的重连(适用于大规模集群)
cluster.nodes.reconnect_interval: 30s
工作原理 #
┌─────────────────────────────────────────────────────────────────┐
│ 节点重连机制 │
└─────────────────────────────────────────────────────────────────┘
NodeConnectionsService 启动
│
▼
创建 ConnectionChecker 线程
│
▼
定期执行连接检查 (每 reconnect_interval)
│
├── 遍历所有节点连接目标
│ │
│ ├── 已连接 → 跳过
│ │
│ └── 未连接 → 尝试重新连接
│ │
│ ├── 连接成功 → 标记为已连接
│ └── 连接失败 → 保持未连接,等待下次检查
│
▼
等待 reconnect_interval 后再次执行
重连触发场景 #
节点重连会在以下场景中被触发:
| 场景 | 说明 |
|---|---|
| 网络分区恢复 | 网络故障后连接恢复 |
| 节点重启 | 节点临时重启后重新加入 |
| 连接超时 | 传输层连接超时断开后 |
| 临时网络抖动 | 短暂网络问题导致连接断开 |
使用场景 #
1. 默认配置(推荐大多数场景) #
cluster.nodes.reconnect_interval: 10s
适用于标准稳定的生产环境,平衡系统负载和故障恢复速度。
2. 高可用要求场景 #
cluster.nodes.reconnect_interval: 3s
适用场景:
- 对集群可用性要求极高的业务
- 节点间网络非常稳定
- 需要快速发现和恢复节点故障
3. 网络不稳定环境 #
cluster.nodes.reconnect_interval: 5s
适用场景:
- 网络环境不稳定,经常出现短暂断连
- 需要较快恢复连接
- 避免因网络抖动导致长时间不可用
4. 大规模集群 #
cluster.nodes.reconnect_interval: 30s
适用场景:
- 节点数量众多(100+ 节点)
- 减少重连检查带来的系统开销
- 可接受较长的故障恢复时间
推荐设置指南 #
| 集群规模 | 网络环境 | 推荐值 | 说明 |
|---|---|---|---|
| 小型 (<10) | 局域网 | 5s | 快速恢复 |
| 中型 (10-50) | 局域网 | 10s | 默认配置 |
| 大型 (>50) | 局域网 | 20s-30s | 降低开销 |
| 任意规模 | 不稳定网络 | 5s | 快速重连 |
| 任意规模 | 跨地域 | 15s-30s | 考虑延迟 |
与其他配置的关系 #
| 配置项 | 关系 |
|---|---|
cluster.fault_detection.follower_check.* | 故障检测配置,与重连配合工作 |
transport.tcp.connect_timeout | 连接超时时间,影响单次重连尝试的时长 |
transport.ping_schedule | 节点间 ping 调度,与重连机制协同 |
性能影响分析 #
重连间隔对性能的影响:
较短间隔 (3s-5s):
优点:
✓ 快速发现和恢复节点故障
✓ 更高的集群可用性
✓ 减少分片迁移时间
缺点:
✗ 更多的网络连接尝试
✗ 增加系统资源消耗
✗ 可能产生不必要的日志
较长间隔 (20s-60s):
优点:
✓ 减少系统资源消耗
✓ 降低网络负载
✓ 更少的日志输出
缺点:
✗ 较慢的故障恢复
✗ 可能影响集群稳定性
✗ 分片重新分配延迟
配置示例 #
# 场景 1: 标准生产集群
cluster.name: prod-cluster
cluster.nodes.reconnect_interval: 10s
# 场景 2: 高可用集群
cluster.name: ha-cluster
cluster.nodes.reconnect_interval: 3s
# 场景 3: 大规模集群
cluster.name: large-cluster
cluster.nodes.reconnect_interval: 30s
监控与验证 #
# 查看当前配置
GET /_nodes/settings?filter_path=nodes.*.cluster.nodes.reconnect_interval
# 查看集群节点连接状态
GET /_cat/nodes?v
# 查看节点信息
GET /_cluster/state?filter_path=metadata.nodes
# 查看传输层统计
GET /_nodes/stats/transport?filter_path=**.server_open
故障排查 #
问题:节点恢复后长时间无法重新加入集群
可能原因: 重连间隔设置过长
解决方案:
# 减少重连间隔
cluster.nodes.reconnect_interval: 5s
问题:日志中出现大量重连接日志
可能原因: 重连间隔设置过短或网络不稳定
解决方案:
# 增加重连间隔,或排查网络问题
cluster.nodes.reconnect_interval: 20s
问题:系统资源消耗过高
可能原因: 频繁的重连检查消耗资源
解决方案:
# 在大规模集群中适当增加间隔
cluster.nodes.reconnect_interval: 30s
注意事项 #
- 静态配置:修改此配置需要重启节点
- 集群一致性:集群中所有节点建议使用相同配置
- 间隔权衡:过短会增加系统负载,过长会影响故障恢复速度
- 网络环境:应根据实际网络稳定性调整
- 与故障检测配合:应与故障检测配置协调设置
- 日志监控:启用详细日志可帮助诊断连接问题





