📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

discovery.zen.fd.ping_interval 配置项用于控制故障检测机制中ping 请求的发送间隔时间

节点会按照此间隔定期向主节点或其他节点发送 ping 请求,以检测它们是否仍然存活。

配置项属性 #

  • 配置路径: discovery.zen.fd.ping_interval
  • 数据类型: TimeValue(时间值)
  • 默认值: 1s(1秒)
  • 是否可选: 是
  • 弃用状态: ⚠️ 已弃用

配置项详解 #

工作机制 #

故障检测流程

节点A ─────────────────────→ 节点B
    │                            │
    │  Ping 1 ──────────────────→│
    │  ←─────────────────────────┤ Pong 1
    │                            │
    │  等待 ping_interval (1s)    │
    │                            │
    │  Ping 2 ──────────────────→│
    │  ←─────────────────────────┤ Pong 2
    │                            │
    │  等待 ping_interval (1s)    │
    │                            │
    ↓                            ↓
  持续监控                      持续响应

两种检测模式 #

1. 主节点故障检测(MasterFaultDetection) #

非 master 节点定期向 master 节点发送 ping:

数据节点1 ──→ Master 节点
数据节点2 ──→ Master 节点
数据节点3 ──→ Master 节点
    ↓
    每 ping_interval (1s) 发送一次 ping
    ↓
    检测 Master 是否存活

2. 节点故障检测(NodesFaultDetection) #

节点之间相互 ping 以检测存活状态:

节点A ←─── Ping ───→ 节点B
节点A ←─── Pong ─── 节点B
    ↓
    每 ping_interval (1s) 交换一次
    ↓
    检测对方是否存活

配置建议 #

⚠️ 重要提示 #

此配置项已被标记为弃用,建议保持默认值或使用新的发现机制。

生产环境(默认) #

discovery.zen.fd.ping_interval: 1s

建议: 保持默认值 1s。这是经过验证的标准配置。

高延迟网络 #

discovery.zen.fd.ping_interval: 2s

建议: 增加到 2s-3s。网络延迟高时可以减少 ping 频率。

跨地域部署 #

discovery.zen.fd.ping_interval: 3s

建议: 增加到 3s-5s。跨地域部署时网络延迟更高。

快速故障检测 #

discovery.zen.fd.ping_interval: 500ms

建议: 减少到 500ms。当需要更快检测节点故障时使用。

代码示例 #

easysearch.yml 配置(已弃用) #

discovery:
  zen:
    fd:
      ping_interval: 1s  # 默认值

完整的故障检测配置 #

discovery:
  zen:
    fd:
      ping_interval: 1s      # ping 间隔
      ping_timeout: 30s      # ping 超时
      ping_retries: 3        # ping 重试次数

高延迟网络配置 #

discovery:
  zen:
    fd:
      ping_interval: 2s      # 增加间隔
      ping_timeout: 60s      # 增加超时
      ping_retries: 5        # 增加重试

相关配置 #

配置项作用默认值
discovery.zen.fd.ping_intervalping 发送间隔1s
discovery.zen.fd.ping_timeout单次 ping 超时30s
discovery.zen.fd.ping_retriesping 重试次数3

故障检测时间计算 #

故障检测总时间 = (ping_timeout + ping_interval) × ping_retries

默认配置:
= (30s + 1s) × 3 = 93 秒

配置 ping_interval = 2s, ping_timeout = 30s, ping_retries = 3:
= (30s + 2s) × 3 = 96 秒

配置 ping_interval = 500ms, ping_timeout = 10s, ping_retries = 3:
= (10s + 0.5s) × 3 = 31.5 秒

性能影响分析 #

ping_interval 设置优点缺点
较短(500ms)快速发现故障增加网络和CPU开销
中等(1s)平衡检测速度和开销标准设置
较长(3-5s)减少网络开销故障检测较慢

资源消耗 #

集群规模: 10 个节点

ping_interval = 1s:
每秒发送 ping 数 ≈ 10 × 9 = 90 个

ping_interval = 3s:
每秒发送 ping 数 ≈ 10 × 9 / 3 = 30 个

ping_interval 越大,网络开销越小

使用场景 #

推荐保持默认的场景 #

  • 标准数据中心部署: 网络稳定、延迟低
  • 中小型集群: 节点数量少于 50
  • 稳定环境: 不需要极快的故障检测

推荐调整的场景 #

  • 跨地域部署: 增加间隔到 3-5 秒
  • 高延迟网络: 增加间隔以减少超时
  • 快速故障恢复: 减少间隔以更快发现问题

注意事项 #

  1. 已弃用: 此配置已被标记为弃用,建议关注新的发现机制。

  2. 与 ping_timeout 的关系: 间隔应远小于超时时间,避免重叠。

  3. 集群规模影响: 大集群中频繁 ping 会产生较多网络流量。

  4. 调试日志: 启用调试日志可以看到 ping 的详细信息:

    [master] uses ping_interval [1s], ping_timeout [30s], ping_retries [3]
    
  5. 监控建议: 监控节点故障检测事件频率,根据实际情况调整。

  6. 动态更新: 此配置支持动态更新,无需重启节点。

  7. 与 minimum_master_nodes 配合: 确保此配置与集群规模相匹配。