
# 缩容
当Elasticsearch集群具备充足资源处理当前负载、业务处于流量低谷期或数据量减少时，可通过减少节点数量实现集群缩容以节省资源。
表1缩容场景介绍 
| 缩容类型   | 适用场景                         | 变更流程                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|
| 缩容随机节点 | 基于节点类型随机下线节点，减少集群的节点数量，节省资源。 | 1. 将待下线节点的分片（Shard）迁移至其他节点。  2. 数据迁移完成后，下线节点并修改集群配置。   缩容过程采用滚动式维护机制，不会中断现有业务。 |
| 缩容指定节点 | 通过选择下线具体哪个节点减少集群的节点数量，节省资源。  | 1. 将待下线节点的分片（Shard）迁移至其他节点。  2. 数据迁移完成后，下线节点并修改集群配置。   缩容过程采用滚动式维护机制，不会中断现有业务。 |
   
#### 计费影响
如果是按需计费的集群，在缩容确认页面可以查看变更后的价格。变更完成后，集群将按照更新后的价格计费。计费规则请参见[云搜索服务价格计算器](https://www.huaweicloud.com/pricing/calculator.html#/search)。
如果是包周期的集群，在缩容确认页面会触发退款信息，可以查看价格信息。
 #### 约束限制
- 缩容会触发数据迁移，单个节点的数据迁移超时阈值为48小时，超时会导致缩容失败。
- 当集群数据量大时，建议手动调整数据迁移速率，避免在业务高峰期操作。
- 缩容操作完成后，集群的磁盘使用率必须小于80%。
- 无Master节点的集群缩容规则：
  - 缩容条件：当" 数据节点数 + 冷数据节点数 ≥ 3"时，才支持缩容。
  
  - 单次缩容上限：单次缩容的数据节点和冷数据节点总数必须小于缩容前数据节点和冷数据节点总数的一半。 示例：缩容前集群有3个数据节点、3个Client节点和3个冷数据节点，则该集群单次最多缩容2个节点。因为（3+3）÷ 2=3，取小于3的整数即为2。
    
  
  - 数据可靠性：缩容完成后，剩余的数据节点和冷数据节点总数必须大于集群中所有索引的最大副本数。 示例：当集群索引的最大副本数为2，则缩容后的数据节点和冷数据节点总数≥3。
    
   
- 有Master节点的集群缩容规则：
  - 非Master节点（数据节点、Client节点或冷数据节点）的缩容条件：当节点数≥2时才支持缩容该类型的节点。
  
  - Master节点的单次缩容上限：单次缩容的节点数必须小于缩容前节点数的一半。 示例：缩容前集群有2个数据节点、5个Master节点，则该集群单次最多缩容2个Master节点。因为5÷2=2.5，取小于2的整数即为2。
    
   
- 多可用区集群的缩容规则：
  - 均衡分布：缩容完成后，同一类型的节点在不同可用区间的数量差值不超过1。
  
  - 高可用性对最小节点数量的要求：
    - **双可用区集群**：数据节点/冷数据节点数量≥4，确保每个可用区至少具备2个节点；Client节点数量≥2，确保每个可用区至少具备1个节点。
    
    - **三可用区集群**：所有节点类型的节点数量分别≥3，确保每个可用区至少具备1个节点。
     
  
  - 性能优化：建议确保数据节点或冷数据节点数量为可用区数量的整数倍，避免出现数据分布不均，影响集群的查询或写入性能。
   
- 缩容集群的节点数量时，不同节点类型的取值范围请参见[表2]。
   表2节点数量的取值说明 
  | 节点类型     | 取值范围                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  |:---|:---|
  | 数据节点     | - 集群没有Master节点时：1\~32  - 集群有Master节点时：1\~200（当数据节点与冷数据节点总数超过100时，建议选用16u及以上规格，避免CPU不足影响集群读写性能。）   |
  | Master节点 | 3、5、7、9（必须是3\~9之间的奇数）                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | Client节点 | 1\~64                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | 冷数据节点    | 1\~32                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
     
  
 
#### 变更影响
在缩容前，您需要了解以下关键影响和操作建议，以便合理规划变更，最小化业务影响。
- 性能影响 缩容过程会将待下线节点的分片数据迁移至剩余节点，此过程会消耗IO性能，建议在业务低峰期执行。
  建议在业务低峰期提高数据迁移速率以缩短任务耗时，并在业务高峰期**前** 降低迁移速率以减轻对集群性能的影响。数据迁移速率由"indices.recovery.max_bytes_per_sec"参数决定，该参数值默认是"CPU核数 × 8MB"（如4核CPU默认32MB）。可根据业务需求调整。
  ```
  PUT /_cluster/settings  
  {  
    "transient": {  
      "indices.recovery.max_bytes_per_sec": "128MB"  
    }  
  }
  ```
  
- 集群负载变化 缩容后，剩余节点需承载原下线节点的数据分片和业务请求，可能导致CPU、内存、磁盘I/O压力增大，影响查询/写入性能。如果分片分配不均，可能加剧热点节点问题。建议缩容前评估剩余节点的资源和分片容量是否足以支撑当前业务量。
  
- 变更过程特性 缩容任务一旦启动就无法中止，直到任务成功或失败才会结束。
  
 
#### 缩容时长
集群缩容的时长估算公式如下：
**缩容时长（分钟）= 5（分钟）× 缩容的节点个数 + 数据迁移时长（分钟）**
其中：5分钟为初始化等非数据迁移操作的基准耗时，是经验值。
**数据迁移时长（分钟）= 待缩容节点的数据总量（MB）÷ \[ 数据节点的CPU核数** **×** **8（MB/s）× 60（秒）\]**
其中：
- 8MB/s表示每个CPU核每秒可处理8MB数据，是经验值。
- 以上公式为理想状态下的理论估算值，实际迁移速率受集群负载影响。
 
#### 前提条件
- 集群处于"可用"状态，且无正在进行的任务。
- 变更前，建议备份所有关键数据，以免造成数据丢失。操作指导请参见[创建快照备份数据](https://support.huaweicloud.com/usermanual-css/css_01_0267.html)。
 
#### 缩容随机节点
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏，选择"集群管理 \> Elasticsearch"。
3. 在集群列表，选择目标集群，单击操作列的"更多 \> 形态变更"进入形态变更页面。
4. 选择"更改集群规格"页签。
5. 在更改集群规格页面，设置缩容参数。
   表3缩容随机节点 
   | 参数    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   |:---|:---|
   | 变更类型  | 选择"缩容"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 变更的资源 | 显示本次变更任务减少的资源。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | 配置委托  | 删除节点会释放网卡，需要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" ```    |
   | 变更的角色 | 在"节点数量"列减少节点数量。支持多种节点类型同时变更。 节点数量的取值范围请参见[约束限制]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      
   图1集群缩容   
   ![](https://support.huaweicloud.com/usermanual-css/figure/zh-cn_image_0000001938218708.png "点击放大") 
6. 单击"下一步"。
7. 确认变更信息后，单击"提交申请"。
8. 单击"返回集群列表"跳转到集群列表页面。集群的"任务状态"列中显示为"缩容中"，表示集群正在缩容。当集群状态变为"可用"，则表示缩容成功。
 
#### 缩容指定节点
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏，选择"集群管理 \> Elasticsearch"。
3. 在集群列表，选择目标集群，单击操作列的"更多 \> 形态变更"进入形态变更页面。
4. 选择"缩容指定节点"页签。
5. 在缩容指定节点页面，设置缩容参数。
   表4缩容指定节点 
   | 参数   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|
   | 配置委托 | 删除节点会释放网卡，需要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. 确认变更信息后，单击"提交申请"，在数据迁移弹窗中确认是否进行数据迁移（建议勾选"进行数据迁移"避免数据丢失），单击"确认"提交申请。 数据迁移过程中，系统会把待下线节点中的所有数据分片移动到剩余节点，待数据迁移完成后再进行节点下线操作。当待下线节点上的数据在剩余节点存在副本时，可跳过数据迁移，缩短集群变更时间，减少数据迁移带来的负载压力。
   
8. 单击"返回集群列表"跳转到集群列表页面。集群的"任务状态"列中显示为"缩容中"，表示集群正在缩容。当集群状态变为"可用"，则表示缩容成功。
 
#### 相关文档
- Elasticsearch集群还支持变更节点规格和云硬盘类型节约资源，操作指导请参见[变更节点规格](https://support.huaweicloud.com/usermanual-css/css_01_0245.html)。
- 当集群不满足缩容条件时，建议新建集群，使用备份恢复功能迁移数据，再删除原集群，实现集群节点数量的减少。
 
