
# 变更节点规格
当Elasticsearch集群的数据面业务变化，需要动态调整集群的节点规格和节点存储类型时，可以参考本文进行变更操作。
表1变更规格场景介绍 
| 变更规格类型           | 适用场景                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | 变更流程                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|
| 变更节点规格           | 一般将小规格升级为大规格，常用于如下场景： - 当新增索引或分片分配的处理时间过长，或管理集群各个节点的协调、调度不足时，可以升级Master节点的"节点规格"保证集群的正常使用。  - 当数据节点任务分发量、结果汇聚量过大时，可以升级Client节点的"节点规格"。  - 当数据的写入与查询突然变得缓慢时，可以升级数据节点的"节点规格"提高数据节点的查询与写入效率。  - 当存在冷数据查询缓慢时，可以升级冷数据节点的"节点规格"，提高数据查询的效率。  - 当集群节点的CPU或JVM指标达到瓶颈时，可以升级"节点规格"，提高集群性能。   也支持将大规格降低为小规格，但此变更会降低集群的处理性能，进而影响业务能力，请谨慎使用。 | 1. 选择一个节点下线。  2. 调整下线节点的节点规格。  3. 重启该节点，并恢复数据。  4. 确认节点恢复后，依次变更其余节点，直至全部节点变更完成。   变更过程采用的是one-by-one的方式，会确保始终有足够节点维持服务可用性，不会中断业务。                                                                       |
| 变更节点存储类型（更改磁盘类型） | 当集群因磁盘类型选择不当导致IO瓶颈，造成查询和写入性能受限时，可通过变更节点存储类型来提升性能。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 1. 选择一个节点，将节点中的数据迁移到其余节点。  2. 使用目标存储类型重建节点。  3. 待节点重新加入到集群后，系统自动触发分片重平衡机制，逐步将部分数据分片迁移至该节点。  4. 确认节点状态正常，再依次升级其余节点，直至全部节点变更完成。   变更过程采用的是one-by-one的方式，不会中断业务。  |
   
#### 计费影响
如果是按需计费的集群，在变更确认页面可以查看变更后的价格。变更完成后，集群将按照更新后的价格计费。计费规则请参见[云搜索服务价格计算器](https://www.huaweicloud.com/pricing/calculator.html#/search)。
如果是包周期的集群，在升配时，变更确认页面会触发新的订单，可以查看价格信息；在降配时，变更确认页面会触发退款信息，可以查看价格信息。
#### 约束限制
- 使用本地盘的节点不支持变更节点规格和节点存储类型。
- 不支持同时变更节点规格和节点存储类型。
- 仅数据节点和冷数据节点支持变更节点存储类型。
- 变更节点存储类型的过程涉及数据迁移，单个节点的数据迁移的超时阈值为48小时，超时将导致变更失败。当集群数据量大时，建议手动调整数据迁移速率，避免在业务高峰期操作。
- 无Master节点的集群：当数据节点数和冷数据节点数之和大于或等于3时（即" 数据节点数 + 冷数据节点数 ≥ 3"）才支持变更节点规格或变更节点存储类型。
- 有Master节点的集群：当数据节点数大于或等于2时（即" 数据节点数 ≥ 2"）才支持变更节点存储类型。
- 变更节点存储类型时，会有一个节点无法提供服务，为保证业务连续性，请确认数据节点数和冷数据节点数之和大于索引副本数的最大值加1，即"数据节点数 + 冷数据节点数 \> 索引副本数的最大值+1"。如果是单AZ或双AZ集群，还要确认每个AZ中同类型节点数大于或等于2。
- 变更节点规格会直接下线节点，为保证业务连续性请确保所有索引都有副本。
- 请确认下线一个节点之后的磁盘使用率小于80%。
 
#### 变更影响
在变更集群规格前，您需要了解以下关键影响和操作建议，以便合理规划变更，最小化业务影响。
- 性能影响（仅变更节点存储类型受影响） 变更节点存储类型不会中断业务，但是该过程的数据迁移会消耗IO性能，且变更过程中单节点下线可能影响集群性能。
  建议在业务低峰期提高数据迁移速率以缩短任务耗时，并在业务高峰期**前** 降低迁移速率以减轻对集群性能的影响。数据迁移速率由"indices.recovery.max_bytes_per_sec"参数决定，该参数值默认是"CPU核数 × 8MB"（如4核CPU默认32MB）。可根据业务需求调整。
  ```
  PUT /_cluster/settings  
  {  
    "transient": {  
      "indices.recovery.max_bytes_per_sec": "128MB"  
    }  
  }
  ```
  
- 请求处理影响 下线单个节点通常不会中断业务，但在节点下线过程中，发送到该节点的请求可能会失败。为了降低影响可以采用如下措施：
  - 通过终端节点服务或独享型负载均衡器访问集群，确保请求自动路由到可用节点。
  
  - 在客户端实现指数退避重试机制（建议配置3次重试）。
  
  - 在业务低峰期进行规格变更。
   
- 索引副本影响 如果集群中的索引没有设置副本，节点下线期间该分片数据将不可用，相关业务可能会中断。建议在变更前为所有重要索引添加副本。
  
- Kibana和Cerebro组件影响 变更节点存储类型时，系统会重建Kibana和Cerebro，在此期间服务将暂时不可用。变更节点规格时，如果Kibana和Cerebro运行于被下线的节点上会导致访问失败，此时刷新页面或重新登录，系统会自动重新调度到可用节点。
  
- 变更过程特性 规格变更任务一旦启动就无法中止，直到任务成功或失败才会结束。任务失败通常只影响单个节点，在有副本的情况下业务不受影响，但需要及时修复失败节点。
  
当需要紧急进行规格变更时，您也可以提交[工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/serviceTickets)联系技术支持进行变更评估和检查。
#### 变更规格时长
- 变更节点规格的时长估算公式如下： **变更时长（分钟）= 10（分钟）x 节点总个数 + 数据恢复时长（分钟）**
  其中：
  - 10分钟为初始化等非数据恢复操作的基准耗时，是经验值。
  
  - 节点总个数是集群的数据节点、Master节点、Client节点和冷数据节点数量之和。
   
  **数据恢复时长（分钟）= 数据总量（MB）÷ \[ 数据节点的CPU核数 × 8（MB/s）× 60（秒）\]**
  其中：
  - 8MB/s表示每个CPU核每秒可处理8MB数据，是经验值。
  
  - 以上公式为理想状态下的理论估算值，实际恢复速率受集群负载影响。
    

- 变更节点存储类型的时长估算公式如下： **变更时长（分钟）= 15（分钟）x 节点总个数 + 数据迁移时长（分钟）**
  其中：
  - 15分钟为初始化等非数据迁移操作的基准耗时，是经验值。
  
  - 节点总个数是集群的数据节点、Master节点、Client节点和冷数据节点数量之和。
   
  **数据迁移时长（分钟）= 数据总量（MB）÷ \[ 数据节点的CPU核数 × 8（MB/s）× 60（秒）\]**
  其中：
  - 8MB/s表示每个CPU核每秒可处理8MB数据，是经验值。
  
  - 以上公式为理想状态下的理论估算值，实际迁移速率受集群负载影响。
    
 
#### 前提条件
- 确认集群处于"可用"状态，且无正在进行的任务。
- 确认CSS服务有足够的配额支持变更，在形态变更页面可以查看当前可用资源。
  图1查看可用资源   
  ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000002495832617.png "点击放大") 
- 在变更节点存储类型前，建议备份所有关键数据，以免造成数据丢失。操作指导请参见[创建快照备份数据](https://support.huaweicloud.com/usermanual-css/css_01_0267.html)。
 
#### 变更规格
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏，选择"集群管理 \> Elasticsearch"。
3. 确认业务数据是否都有副本，确保变更规格过程中不会中断业务。
   1. 在集群列表，选择目标集群，单击操作列的"Kibana"，登录Kibana。
   
   2. 在Kibana左侧导航栏选择"Dev Tools"，进入操作页面。
   
   3. 在Kibana中执行命令GET _cat/indices?v。
      - 当返回的"rep"值大于"0"时，则表示有副本，请继续执行下一步。
      
      - 当返回的"rep"值等于"0"时，则表示没有副本，建议先参考[创建快照备份数据](https://support.huaweicloud.com/usermanual-css/css_01_0267.html)手动为集群创建快照再执行下一步。
       
    
4. 在集群列表，选择目标集群，单击操作列的"更多\>形态变更"进入形态变更页面。
5. 选择"更改集群规格"页签。
6. 在更改集群规格页面，设置变更规格的参数。
   表2变更规格 
   | 参数    | 说明                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | 变更类型  | 选择"变更规格"。                                                                                                                                                                                                                                                                                                                                                                                        |
   | 变更的资源 | 显示本次变更规格的资源变化量。                                                                                                                                                                                                                                                                                                                                                                                  |
   | 变更的角色 | 配置变更角色。 1. 在"节点类型"列选择本次要变更的节点类型，只能选择一种类型。  2. 在"节点规格"列选择新规格，或"节点存储"列选择新存储类型。   节点规格和节点存储类型，不支持同时变更。 |
      
   图2变更规格   
   ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000002038526621.png "点击放大") 
7. 单击"下一步"。
8. 确认变更信息后，单击"提交申请"。
9. 在弹窗中确认检测项，单击"确认"启动集群规格变更。
   - 当变更节点规格时，需要确认是否勾选"进行索引副本及节点数量校验"和"进行集群状态检测"。
   
   - 当变更节点存储类型时，需要确认是否勾选"进行集群负载检测"。
   
   
   表3检测项说明 
   | 检测项         | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | 索引副本及节点数量校验 | - 索引副本校验用于确保索引能够正常运行。如果跳过校验，规格变更操作将不再强制要求每个索引都保留副本，可能导致服务中断或性能下降，建议谨慎操作。  - 节点数量校验用于验证集群是否具备足够的节点支撑服务。如果跳过校验，规格变更操作可能引发集群不可用或服务中断，建议在充分评估风险后谨慎操作。   校验规则： - 当没有Master节点的集群更改节点规格时，如果选择进行索引副本及节点数量校验，则要求所有索引至少有1个副本，且数据节点数和冷数据节点数之和大于或等于3。  - 当有Master节点的集群更改节点规格时，如果选择进行索引副本及节点数量校验，则要求所有索引至少有1个副本。                                                                   |
   | 集群状态检测      | 默认进行集群状态检测，以提升变更成功率。变更节点规格采用滚动变更方式，在变更过程中，系统会依次变更每个节点并重启，检测集群状态确保每个节点进程启动成功后，再继续后续操作，以保障变更成功率和数据安全。 在紧急情况下（如集群负载过高导致业务故障且无法正常下发变更请求），如需依赖更多资源恢复，可选择取消集群状态检测。跳过检测后，变更过程中可能会因集群状态异常导致故障或业务中断，需谨慎评估风险后操作。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | 集群负载检测      | 更改节点存储类型过程中节点数据的迁移以及节点下线再上线的动作，会占用集群资源，使集群负载升高。集群负载检测能够识别集群当前可能存在的负载风险，能降低因为集群负载过高而导致的集群更改节点存储类型失败。 "集群负载检测"检测项包含： - 最大search队列排队数小于1000（nodes.thread_pool.search.queue \< 1000）  - 最大write队列排队数小于200（nodes.thread_pool.write.queue \< 200）  - 最大cpu使用率小于90%（nodes.process.cpu.percent \< 90）  - 最大load相对核数占比小于80%（ nodes.os.cpu.load_average / cpu核数 \< 80%）   |
      
   ![](https://support.huaweicloud.com/usermanual-css/public_sys-resources/note_3.0-zh-cn.png)
   如果提交失败，提示需要升级集群，则表示当前集群版本过旧，不支持变更节点存储类型，请先升级集群到最新的镜像版本再变更。升级指导请参见[集群版本升级](https://support.huaweicloud.com/usermanual-css/css_01_0186.html)。
   
10. 单击"返回集群列表"跳转到集群列表页面。集群的"任务状态"列中显示为"规格修改"，表示集群正在更改规格。当集群状态变为"可用"，则表示规格变更成功。
 
