--- title: "向后兼容Ping超时配置" date: 2026-03-11 lastmod: 2026-03-11 description: "discovery.zen.bwc_ping_timeout 配置项用于控制集群滚动升级时的向后兼容ping超时时间(已弃用)。" tags: ["集群发现", "版本升级", "向后兼容", "已弃用"] summary: "配置项作用 # discovery.zen.bwc_ping_timeout 配置项用于控制集群在滚动升级过程中向后兼容 ping 请求的超时时间。 此配置主要用于混合版本集群(同时包含旧版本和新版本节点)的升级过渡阶段。 配置项属性 # 配置路径: discovery.zen.bwc_ping_timeout 数据类型: TimeValue(时间值) 默认值: 1ms(1毫秒) 最小值: 1ms 是否可选: 是 弃用状态: ⚠️ 已弃用 配置项详解 # 工作机制 # 滚动升级场景 旧版本节点 ────── 新版本节点 │ │ │ │ │ ←── BWC Ping ─── │ │ │ │ 等待 bwc_ping_timeout │ │ │ │ ↓ ↓ 节点加入集群 节点加入集群 向后兼容模式 # 混合集群优先级: 在混合版本集群中,优先选举旧版本节点作为主节点 升级时机: 当最后一个旧节点关闭且新节点数量足够时,完成升级 BWC Ping: 新版本节点向旧版本节点发送 ping 请求以确认升级状态 超时设置 # // 节点激活后等待时间 bwcPingTimeout = discovery." --- ## 配置项作用 `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 请求以确认升级状态 ## 超时设置 ```java // 节点激活后等待时间 bwcPingTimeout = discovery.zen.bwc_ping_timeout // 在此时间后尝试加入主节点或执行引导升级 ``` ## 配置建议 ## ⚠️ 重要提示 此配置项**已被标记为弃用**,主要用于版本升级的过渡阶段。 ## 滚动升级场景 ```yaml discovery.zen.bwc_ping_timeout: 1s ``` **建议**: 如果必须进行滚动升级,可以设置为 `1s-3s`,确保有足够时间完成版本握手。 ## 默认配置 ```yaml # 不配置,使用默认值 1ms # 大多数情况下不需要配置此参数 ``` ## 代码示例 ## easysearch.yml 配置(已弃用) ```yaml discovery: zen: bwc_ping_timeout: 1s # 不推荐配置 ``` ## 配合不安全滚动升级 ```yaml 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. **监控建议**: 升级过程中密切监控集群状态和节点健康。