配置项作用 #
discovery.zen.fd.ping_retries 配置项用于控制故障检测机制中 ping 失败后的重试次数。
只有当连续 ping 失败次数达到此配置值时,节点才会被判定为故障。
配置项属性 #
- 配置路径:
discovery.zen.fd.ping_retries - 数据类型:
integer - 默认值:
3 - 是否可选: 是
- 弃用状态: ⚠️ 已弃用
配置项详解 #
工作机制 #
故障检测重试流程
节点A ─────────────────────→ 节点B
│
│ Ping 1 ──────────────────→ (超时/失败)
│ retryCount = 1
│
│ Ping 2 ──────────────────→ (超时/失败)
│ retryCount = 2
│
│ Ping 3 ──────────────────→ (超时/失败)
│ retryCount = 3
│
│ retryCount >= ping_retries (3)
│
↓
判定节点B故障
↓
触发故障转移
重试逻辑 #
int retryCount = 0;
while (retryCount < pingRetryCount) {
// 尝试 ping 节点
try {
sendPing(node);
if (成功) {
重置 retryCount = 0;
break;
}
} catch (Exception e) {
retryCount++;
// 继续下一次重试
}
}
if (retryCount >= pingRetryCount) {
// 超过最大重试次数,确认节点故障
notifyNodeFailure(node, "failed to ping, tried [" + pingRetryCount + "] times");
}
容错设计 #
网络抖动场景
Ping 1 ──→ 失败 (网络抖动)
Ping 2 ──→ 成功 (网络恢复)
↓
retryCount 重置为 0
↓
节点正常,不触发故障转移
配置建议 #
⚠️ 重要提示 #
此配置项已被标记为弃用,建议保持默认值。
生产环境(默认) #
discovery.zen.fd.ping_retries: 3
建议: 保持默认值 3。这提供了合理的容错能力,避免短暂网络问题导致误判。
网络不稳定环境 #
discovery.zen.fd.ping_retries: 5
建议: 增加到 5-10。当网络经常出现短暂波动时使用。
快速故障检测 #
discovery.zen.fd.ping_retries: 2
建议: 减少到 1-2。当需要快速发现节点故障且网络稳定时使用。
代码示例 #
easysearch.yml 配置(已弃用) #
discovery:
zen:
fd:
ping_retries: 3 # 默认值
完整的故障检测配置 #
discovery:
zen:
fd:
ping_interval: 1s # ping 间隔
ping_timeout: 30s # ping 超时
ping_retries: 3 # ping 重试次数
网络不稳定环境配置 #
discovery:
zen:
fd:
ping_interval: 2s
ping_timeout: 45s
ping_retries: 8 # 增加重试次数
快速故障检测配置 #
discovery:
zen:
fd:
ping_interval: 500ms
ping_timeout: 10s
ping_retries: 2 # 减少重试次数
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
discovery.zen.fd.ping_interval | ping 发送间隔 | 1s |
discovery.zen.fd.ping_timeout | 单次 ping 超时 | 30s |
discovery.zen.fd.ping_retries | ping 重试次数 | 3 |
故障检测时间计算 #
故障检测总时间计算公式:
方式 1: ping_timeout × ping_retries
方式 2: (ping_timeout + ping_interval) × ping_retries
默认配置:
方式 1: 30s × 3 = 90 秒
方式 2: (30s + 1s) × 3 = 93 秒
网络不稳定配置 (ping_retries = 8):
方式 1: 30s × 8 = 240 秒 (4分钟)
方式 2: (30s + 2s) × 8 = 256 秒
快速检测配置 (ping_retries = 2):
方式 1: 10s × 2 = 20 秒
方式 2: (10s + 0.5s) × 2 = 21 秒
容错能力分析 #
| ping_retries 设置 | 容错能力 | 故障检测时间 | 适用场景 |
|---|---|---|---|
| 较小(1-2) | 低,易误判 | 快 | 稳定网络、快速检测 |
| 中等(3-5) | 中等 | 中等 | 标准生产环境 |
| 较大(8-10) | 高,容忍波动 | 慢 | 不稳定网络 |
误判风险 #
ping_retries = 1 (过于敏感):
网络抖动
↓
Ping 1 失败
↓
立即判定故障 ❌
↓
可能误判
ping_retries = 3 (标准):
网络抖动
↓
Ping 1 失败 → Ping 2 成功
↓
恢复正常 ✅
↓
正确处理
使用场景 #
推荐保持默认的场景 #
- 标准数据中心: 网络稳定
- 平衡容错和检测速度: 需要折中方案
- 生产环境: 经过验证的默认值
推荐增加的场景 #
- 跨地域部署: 网络延迟高且不稳定
- 公网连接: 网络质量不可控
- 频繁波动: 网络经常短暂中断
推荐减少的场景 #
- 本地网络: 极其稳定的局域网
- 快速故障恢复: 需要快速发现并处理故障
- 高可用优先: 可用性比避免误判更重要
注意事项 #
已弃用: 此配置已被标记为弃用,建议关注新的发现机制。
与其他配置配合: 需要与
ping_interval和ping_timeout配合使用。故障检测时间: 增加重试次数会延长故障检测时间。
网络质量: 根据实际网络质量调整重试次数。
调试日志: 超过重试次数后会记录详细日志:
failed to ping, tried [3] times动态更新: 此配置支持动态更新,无需重启节点。
监控建议: 监控节点故障检测事件,避免频繁误判或漏判。





