--- title: "按总节点数量恢复配置" date: 2026-03-17 lastmod: 2026-03-17 description: "gateway.recover_after_nodes 配置项用于控制集群恢复所需的最少节点总数(已弃用)。" tags: ["Gateway", "集群恢复", "节点数量", "已弃用"] summary: "配置项作用 # gateway.recover_after_nodes 配置项用于指定集群恢复状态所需要的最少节点总数(包括主节点和数据节点)。 当集群启动时,只有在达到指定数量的节点后,才会开始恢复集群状态。 配置项属性 # 配置路径: gateway.recover_after_nodes 数据类型: integer 默认值: -1(表示禁用此条件) 最小值: -1 是否可选: 是 弃用状态: ⚠️ 已弃用 配置项详解 # 工作机制 # 集群启动过程 │ ↓ 读取配置 recover_after_nodes = 5 │ ↓ 检测当前节点总数(主节点 + 数据节点) │ ├──────── 当前数量 < 配置数量 │ │ │ ↓ │ 不开始恢复,继续等待 │ │ │ ↓ │ [调试日志] 节点数量不足 │ │ │ ↓ │ 等待更多节点加入... │ └──────── 当前数量 ≥ 配置数量 │ ↓ 开始恢复集群状态 决策逻辑 # // 简化的代码逻辑 if (recoverAfterNodes !" --- ## 配置项作用 `gateway.recover_after_nodes` 配置项用于指定集群恢复状态所需要的**最少节点总数**(包括主节点和数据节点)。 当集群启动时,只有在达到指定数量的节点后,才会开始恢复集群状态。 ## 配置项属性 - **配置路径**: `gateway.recover_after_nodes` - **数据类型**: `integer` - **默认值**: `-1`(表示禁用此条件) - **最小值**: `-1` - **是否可选**: 是 - **弃用状态**: ⚠️ **已弃用** ## 配置项详解 ## 工作机制 ``` 集群启动过程 │ ↓ 读取配置 recover_after_nodes = 5 │ ↓ 检测当前节点总数(主节点 + 数据节点) │ ├──────── 当前数量 < 配置数量 │ │ │ ↓ │ 不开始恢复,继续等待 │ │ │ ↓ │ [调试日志] 节点数量不足 │ │ │ ↓ │ 等待更多节点加入... │ └──────── 当前数量 ≥ 配置数量 │ ↓ 开始恢复集群状态 ``` ## 决策逻辑 ```java // 简化的代码逻辑 if (recoverAfterNodes != -1) { int totalNodes = nodes.getMasterAndDataNodes().size(); if (totalNodes < recoverAfterNodes) { // 不开始恢复 logger.debug("not recovering from gateway, nodes_size (data+master) [{}] < recover_after_nodes [{}]", totalNodes, recoverAfterNodes); return; } } // 开始恢复 ``` ## 配置建议 ## ⚠️ 重要提示 此配置项**已被标记为弃用**,建议使用以下更精确的替代方案: 1. **控制数据节点数量**: 使用 `gateway.recover_after_data_nodes` 2. **控制主节点数量**: 使用 `gateway.recover_after_master_nodes` ## 使用替代配置(推荐) ```yaml # 推荐使用以下配置替代 gateway: # 分别控制数据节点和主节点数量 recover_after_data_nodes: 3 recover_after_master_nodes: 2 ``` ## 代码示例 ## easysearch.yml 配置(已弃用) ```yaml # 不推荐使用此配置 gateway: recover_after_nodes: 5 # 期望 5 个节点才开始恢复 ``` ## 推荐的替代配置 ```yaml gateway: # 分别控制数据节点和主节点 recover_after_data_nodes: 3 recover_after_master_nodes: 2 # 配合超时使用 recover_after_time: 5m ``` ## 完整的恢复配置 ```yaml cluster: discovery: zen: minimum_master_nodes: 2 gateway: # 使用更精确的配置 recover_after_data_nodes: 3 recover_after_master_nodes: 2 recover_after_time: 10m ``` ## 相关配置 | 配置项 | 状态 | 作用 | |--------|------|------| | `gateway.recover_after_nodes` | ⚠️ 已弃用 | 恢复所需的总节点数量 | | `gateway.recover_after_data_nodes` | ✅ 推荐 | 恢复所需的数据节点数量 | | `gateway.recover_after_master_nodes` | ⚠️ 已弃用 | 恢复所需的主节点数量 | | `gateway.recover_after_time` | ✅ 推荐 | 恢复等待的超时时间 | ## 为什么弃用 ``` 旧配置(过于简单): recover_after_nodes: 5 ↓ 只控制总节点数,无法区分节点类型 新配置(更精确): recover_after_data_nodes: 3 recover_after_master_nodes: 2 ↓ 可以精确控制不同类型节点的数量 ``` ## 使用场景 ## 原本的使用场景(已弃用) 此配置原适用于以下场景: - **小型集群**: 节点类型区分不明确的小型部署 - **简单控制**: 只需要简单控制总节点数 - **逐步启动**: 确保大部分节点上线后再恢复 ## 推荐的替代方案 | 需求 | 推荐配置 | |------|----------| | 确保数据可用性 | `gateway.recover_after_data_nodes` | | 确保主节点冗余 | `gateway.recover_after_master_nodes` 或 `discovery.zen.minimum_master_nodes` | | 超时强制恢复 | `gateway.recover_after_time` | ## 配置对比 ## 旧配置方式(已弃用) ```yaml gateway: recover_after_nodes: 5 # 问题:无法区分是 3 数据 + 2 主节点,还是 4 数据 + 1 主节点 ``` ## 新配置方式(推荐) ```yaml gateway: recover_after_data_nodes: 3 # 确保至少 3 个数据节点 recover_after_master_nodes: 2 # 确保至少 2 个主节点 # 更精确的控制 ``` ## 注意事项 1. **已弃用**: 此配置已被弃用,建议使用更精确的替代配置。 2. **包含所有节点**: 此配置计算的是主节点和数据节点的总数。 3. **默认禁用**: 默认值为 `-1`,表示此条件被禁用。 4. **不够精确**: 无法区分数据节点和主节点的具体数量要求。 5. **动态更新**: 此配置不支持动态更新。 6. **迁移建议**: 如果使用此配置,建议迁移到: - `gateway.recover_after_data_nodes` - `gateway.recover_after_master_nodes` - `discovery.zen.minimum_master_nodes` 7. **配合使用**: 可以与 `recover_after_time` 配合使用,实现超时强制恢复。