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

配置项作用 #

discovery.zen.bwc_ping_timeout 配置项用于控制集群在滚动升级过程中向后兼容 ping 请求的超时时间。

此配置主要用于混合版本集群(同时包含旧版本和新版本节点)的升级过渡阶段。

配置项属性 #

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

配置项详解 #

工作机制 #

滚动升级场景

旧版本节点 ────── 新版本节点
    │                  │
    │                  │
    │  ←── BWC Ping ─── │
    │                  │
    │  等待 bwc_ping_timeout
    │                  │
    │                  │
    ↓                  ↓
节点加入集群        节点加入集群

向后兼容模式 #

  1. 混合集群优先级: 在混合版本集群中,优先选举旧版本节点作为主节点
  2. 升级时机: 当最后一个旧节点关闭且新节点数量足够时,完成升级
  3. BWC Ping: 新版本节点向旧版本节点发送 ping 请求以确认升级状态

超时设置 #

// 节点激活后等待时间
bwcPingTimeout = discovery.zen.bwc_ping_timeout

// 在此时间后尝试加入主节点或执行引导升级

配置建议 #

⚠️ 重要提示 #

此配置项已被标记为弃用,主要用于版本升级的过渡阶段。

滚动升级场景 #

discovery.zen.bwc_ping_timeout: 1s

建议: 如果必须进行滚动升级,可以设置为 1s-3s,确保有足够时间完成版本握手。

默认配置 #

# 不配置,使用默认值 1ms
# 大多数情况下不需要配置此参数

代码示例 #

easysearch.yml 配置(已弃用) #

discovery:
  zen:
    bwc_ping_timeout: 1s  # 不推荐配置

配合不安全滚动升级 #

discovery:
  zen:
    bwc_ping_timeout: 1s
    unsafe_rolling_upgrades_enabled: true

相关配置 #

配置项状态作用
discovery.zen.bwc_ping_timeout⚠️ 已弃用BWC ping 超时
discovery.zen.ping_timeout✅ 有效常规 ping 超时
discovery.zen.unsafe_rolling_upgrades_enabled⚠️ 已弃用启用不安全滚动升级

使用场景 #

原本的使用场景 #

此配置原用于以下场景:

  • 滚动升级: 从旧版本逐步升级到新版本
  • 混合集群: 短期内同时运行不同版本的节点
  • 版本握手: 新旧版本节点之间的兼容性确认

不再需要的场景 #

现代升级方式:

1. 蓝绿部署
    ├── 新集群完全独立
    └── 通过数据同步完成迁移

2. 全停升级
    ├── 停止所有节点
    └── 统一升级后重启

3. 滚动重启(同版本)
    ├── 逐个重启节点
    └── 版本保持一致

注意事项 #

  1. 已弃用: 此配置已被标记为弃用,未来版本可能移除。

  2. 极短默认值: 默认值为 1ms,几乎立即触发,表示现代部署不需要此机制。

  3. 升级方式: 建议使用蓝绿部署或其他现代升级方式,而不是依赖 BWC 机制。

  4. 版本一致性: 生产环境建议保持集群版本一致,避免混合版本运行。

  5. 测试验证: 如果必须使用滚动升级,应在测试环境中充分验证。

  6. 回退值: 如果未设置,会使用 discovery.zen.ping_timeout 的值(默认 3 秒)。

  7. 监控建议: 升级过程中密切监控集群状态和节点健康。