配置项作用 #
discovery.zen.fd.connect_on_network_disconnect 配置项用于控制当检测到网络连接断开时,是否在判定节点故障前先尝试重新连接。
配置项属性 #
- 配置路径:
discovery.zen.fd.connect_on_network_disconnect - 数据类型:
boolean - 默认值:
false - 是否可选: 是
- 弃用状态: ⚠️ 已弃用
配置项详解 #
工作机制 #
禁用重连(connect_on_network_disconnect = false,默认) #
网络断开检测
节点A ────✗───── 节点B
断开连接
│
↓
检测到传输层断开
│
↓
立即判定节点B故障
│
↓
触发故障转移
启用重连(connect_on_network_disconnect = true) #
网络断开检测
节点A ────✗───── 节点B
断开连接
│
↓
检测到传输层断开
│
↓
尝试重新连接
│
├──────── 成功 ──→ 继续故障检测
│
└──────── 失败 ──→ 判定节点B故障
↓
触发故障转移
两种故障检测 #
1. 节点故障检测(NodesFaultDetection) #
用于检测其他节点的存活状态:
if (connectOnNetworkDisconnect) {
try {
transportService.connectToNode(node);
// 重连成功,继续监控
nodesFD.put(node, fd);
} catch (Exception e) {
// 重连失败,通知节点故障
notifyNodeFailure(node, "transport disconnected (with verified connect)");
}
} else {
// 直接通知节点故障
notifyNodeFailure(node, "transport disconnected");
}
2. 主节点故障检测(MasterFaultDetection) #
用于检测主节点的存活状态:
if (connectOnNetworkDisconnect) {
try {
transportService.connectToNode(masterNode);
// 重连成功,继续监控
this.masterPinger = new MasterPinger();
} catch (Exception e) {
// 重连失败,通知主节点故障
notifyMasterFailure(masterNode, null, "transport disconnected (with verified connect)");
}
} else {
// 直接通知主节点故障
notifyMasterFailure(masterNode, null, "transport disconnected");
}
配置建议 #
⚠️ 重要提示 #
此配置项已被标记为弃用,建议保持默认值 false。
生产环境(默认) #
discovery.zen.fd.connect_on_network_disconnect: false
建议: 保持默认值 false。网络断开通常是真实故障,应快速触发故障转移。
网络不稳定环境 #
discovery.zen.fd.connect_on_network_disconnect: true
建议: 可以设置为 true。当网络经常出现短暂波动,但会自动恢复时使用。
代码示例 #
easysearch.yml 配置(已弃用) #
discovery:
zen:
fd:
connect_on_network_disconnect: false # 默认值
启用重连 #
discovery:
zen:
fd:
connect_on_network_disconnect: true # 尝试重连
配合其他故障检测配置 #
discovery:
zen:
fd:
connect_on_network_disconnect: false
ping_interval: 1s
ping_timeout: 30s
ping_retries: 3
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
discovery.zen.fd.connect_on_network_disconnect | 网络断开时是否重连 | false |
discovery.zen.fd.ping_interval | ping 间隔 | 1s |
discovery.zen.fd.ping_timeout | ping 超时 | 30s |
discovery.zen.fd.ping_retries | ping 重试次数 | 3 |
行为对比 #
| 设置 | 网络断开行为 | 故障检测速度 | 适用场景 |
|---|---|---|---|
| false | 立即判定故障 | 快 | 稳定网络 |
| true | 尝试重连后判定 | 较慢 | 不稳定网络 |
故障检测时间对比 #
connect_on_network_disconnect = false:
网络断开 → 立即判定故障 → 故障转移
总时间: 几乎立即
connect_on_network_disconnect = true:
网络断开 → 尝试重连(可能需要几秒) → 重连失败 → 判定故障 → 故障转移
总时间: ping_timeout + 重连时间
使用场景 #
推荐保持 false 的场景 #
- 稳定网络: 数据中心内部网络
- 快速故障检测: 需要快速发现并处理节点故障
- 高可用优先: 集群可用性比避免误判更重要
可以启用 true 的场景 #
- 不稳定网络: 跨地域、跨公网连接
- 频繁网络波动: 网络经常短暂中断但会自动恢复
- 避免频繁故障转移: 减少因网络抖动导致的集群重新配置
注意事项 #
已弃用: 此配置已被标记为弃用,建议使用默认行为。
故障检测延迟: 启用重连会增加故障检测的时间,影响故障转移速度。
误判风险: 禁用重连可能导致短暂的网络波动被误判为节点故障。
与 ping_retries 的关系: 即使启用重连,仍然会执行 ping 重试机制。
主节点检测: 此配置同时影响节点故障检测和主节点故障检测。
集群稳定性: 频繁的故障转移会影响集群稳定性,需要权衡。
监控建议: 监控网络质量和节点故障检测事件,根据实际情况调整。





