
# 重建故障节点
当OpenSearch集群中的节点发生故障时，可以执行"替换指定节点"任务修复故障节点。
替换指定节点的变更流程：
1. 将待替换节点的数据迁移到其他可用节点。
2. 按照原节点的ID、IP地址、规格、AZ等信息重建节点。
3. 将节点重新加入集群，系统自动触发分片重平衡机制，逐步将部分数据分片迁移至该节点。
 
由于会迁移数据，因此整个变更过程不会中断业务。
#### 约束限制
- 一次只能选择一个节点进行替换，节点替换过程会按照原节点的ID、IP地址、规格、AZ等信息重建节点。
- 节点替换过程中不会保留手动操作。例如被替换的节点手动加过回程路由，那么节点替换完成后，需要重新添加回程路由。
- 当替换的是数据节点或冷数据节点时，需要确认集群或节点是否满足以下条件。
  - 替换数据节点或冷数据节点的过程中，会先将被替换节点的数据迁移到其他数据节点，因此数据节点数和冷数据节点数之和要大于索引副本数的最大值加1，即"数据节点数 + 冷数据节点数 \> 索引副本数的最大值 + 1"。
  
  - 被替换的数据节点或冷数据节点所在的AZ必须满足被替换的同类型节点数大于或等于2。
  
  - 当集群无Master节点时，数据节点数和冷数据节点数之和要大于或等于3，即"数据节点数 + 冷数据节点数 ≥ 3"。
  
  - 当替换的是故障节点时，不管什么节点类型都不受以上约束。因为故障节点不包含在"_cat/nodes"中。
   
 
#### 变更影响
在替换指定节点前，您需要了解以下关键影响和操作建议，以便合理规划变更，最小化业务影响。
- 性能影响 替换指定节点不会中断业务，但是数据迁移会消耗IO性能，且替换过程中单节点下线可能影响集群性能。
  建议在业务低峰期提高数据迁移速率以缩短任务耗时，并在业务高峰期**前** 降低迁移速率以减轻对集群性能的影响。数据迁移速率由"indices.recovery.max_bytes_per_sec"参数决定，该参数值默认是"CPU核数 × 8MB"（如4核CPU默认32MB）。可根据业务需求调整。
  ```
  PUT /_cluster/settings  
  {  
    "transient": {  
      "indices.recovery.max_bytes_per_sec": "128MB"  
    }  
  }
  ```
  
- 请求处理影响 节点替换过程中，发送到该节点的请求可能会失败。为了降低影响可以采用如下措施：
  - 通过终端节点服务或独享型负载均衡器访问集群，确保请求自动路由到可用节点。
  
  - 在客户端实现指数退避重试机制（建议配置3次重试）。
  
  - 在业务低峰期进行节点替换。
   
- 变更过程特性 替换指定节点任务一旦启动就无法中止，直到任务成功或失败才会结束。任务失败通常只影响单个节点，在有副本的情况下业务不受影响，但需要及时修复失败节点。
  
 
#### 替换指定节点时长
替换指定节点的时长估算公式如下：
**变更时长（分钟）= 15（分钟）+ 数据迁移时长（分钟）**
其中：15分钟为初始化等非数据迁移操作的基准耗时，是经验值。
**数据迁移时长（分钟）= 数据总量（MB）÷ \[ 数据节点的CPU核数 × 8（MB/s）× 60（秒）\]**
其中：
- 8MB/s表示每个CPU核每秒可处理8MB数据，是经验值。
- 以上公式为理想状态下的理论估算值，实际迁移速率受集群负载影响。
 
#### 前提条件
- 集群处于"可用"状态，且无正在进行的任务。
- 变更前，建议备份所有关键数据，以免造成数据丢失。操作指导请参见[创建快照备份数据](https://support.huaweicloud.com/usermanual-css/css_01_0298.html)。
 
#### 替换指定节点
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏，选择"集群管理 \> OpenSearch"。
3. 在集群列表，选择目标集群，单击操作列的"更多\>形态变更"进入形态变更页面。
4. 选择"替换指定节点"页签。
5. 在替换指定节点页面，设置参数。
   表1替换指定节点 
   | 参数   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|
   | 配置委托 | 替换节点时会重新绑定网卡，需要VPC的操作权限。选择IAM委托，授权当前账号访问和使用VPC的权限。 - 仅对接了IAM新平面时才显示该参数。  - 当首次配置委托时，可以单击"自动创建委托"新建委托"css_upgrade_agency"直接使用。  - 当已有自动创建的委托时，可以单击"委托一键授权"，自动删除委托中VPC Administrator系统角色和VPC FullAccess系统策略的权限，并自动新增如下自定义策略授权委托到最小化权限。 ``` "vpc:subnets:get", "vpc:ports:*" ```   - 执行"自动创建委托"和"委托一键授权"的用户需要如下最小权限。 ``` "iam:agencies:listAgencies", "iam:roles:listRoles", "iam:agencies:getAgency", "iam:agencies:createAgency", "iam:permissions:listRolesForAgency", "iam:permissions:grantRoleToAgency", "iam:permissions:listRolesForAgencyOnProject", "iam:permissions:revokeRoleFromAgency", "iam:roles:createRole" ```   - 使用委托的用户需要如下最小权限。 ``` "iam:agencies:listAgencies", "iam:agencies:getAgency", "iam:permissions:listRolesForAgencyOnProject", "iam:permissions:listRolesForAgency" ```    |
   | 节点类型 | 选择要替换的节点。展开要变更的节点类型，可以查看当前节点类型拥有的节点信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
      
   
6. 单击"提交申请"。在数据迁移弹窗中确认是否进行数据迁移（建议勾选"进行数据迁移"避免数据丢失），单击"确认"提交申请。 数据迁移过程中，系统会把待替换节点中的所有数据分片移动到剩余节点，待数据迁移完成后再进行节点替换操作。当待替换节点上的数据在剩余节点存在副本时，可跳过数据迁移，缩短集群变更时间，减少数据迁移带来的负载压力。
   
7. 单击"返回集群列表"跳转到集群列表页面。集群的"任务状态"列中显示为"节点替换中"，表示集群正在替换节点。当集群状态变为"可用"，则表示节点替换成功。
 
