更新时间:2025-08-22 GMT+08:00
分享

缩容Elasticsearch集群

当Elasticsearch集群具备充足资源处理当前负载、业务处于流量低谷期或数据量减少时,可通过减少节点数量实现集群缩容以节省资源。

表1 缩容场景介绍

缩容类型

适用场景

变更流程

缩容随机节点

基于节点类型随机下线节点,减少集群的节点数量,节省资源。

  1. 将待下线节点的分片(Shard)迁移至其他节点。
  2. 数据迁移完成后,下线节点并修改集群配置。

缩容过程采用滚动式维护机制,不会中断现有业务。

缩容指定节点

通过选择下线具体哪个节点减少集群的节点数量,节省资源。

前提条件

  • 集群处于“可用”状态,且无正在进行的任务。
  • 变更前,建议备份所有关键数据,以免造成数据丢失。

计费影响

如果是按需计费的集群,在缩容确认页面可以查看变更后的价格。变更完成后,集群将按照更新后的价格计费,计费规则请参见云搜服务价格计算器

如果是包周期的集群,在缩容确认页面会触发退款信息,可以查看价格信息。

约束限制

  • 缩容过程会涉及数据迁移,单个节点的数据迁移的超时阈值为48小时,超时将导致缩容失败。当集群数据量大时,建议手动调整数据迁移速率,避免在业务高峰期操作。
  • 无Master节点的集群:当数据节点数和冷数据节点数之和大于或等于3时(即“ 数据节点数 + 冷数据节点数 ≥ 3”)才支持缩容。单次缩容的数据节点数和冷数据节点数之和要小于缩容前数据节点数和冷数据节点数之和的一半,即“ 单次缩容的(数据节点数 + 冷数据节点数)< 缩容前的(数据节点数 + 冷数据节点数)÷ 2”。缩容后的数据节点数和冷数据节点数之和要大于索引副本数的最大值,即“ 缩容后的(数据节点数 + 冷数据节点数)> 索引副本数的最大值”
  • 有Master节点的集群:当数据节点数大于或等于2时(即“ 数据节点数 ≥ 2”)才支持缩容。单次缩容的Master节点数要小于缩容前的Master节点数的一半,即“ 单次缩容的Master节点数 < 缩容前的Master节点数 ÷ 2”
  • 缩容后,磁盘使用率必须小于80%。
  • 缩容后,每个AZ至少保留1个同类型节点,在跨AZ集群中,各AZ之间,同类型节点的数量差不得超过1。
  • 缩容集群的节点数量时,不同节点类型的取值范围请参见表2
    表2 节点数量的取值说明

    节点类型

    取值范围

    数据节点

    • 集群没有Master节点时:1~32
    • 集群有Master节点时:1~200

    Master节点

    3、5、7、9(必须是3~9之间的奇数)

    Client节点

    1~32

    冷数据节点

    1~32

变更影响

在缩容前,您需要了解以下关键影响和操作建议,以便合理规划变更,最小化业务影响。

  • 性能影响

    缩容过程会将待下线节点的分片数据迁移至剩余节点,此过程会消耗IO性能,建议在业务低峰期执行。

    建议在业务低峰期提高数据迁移速率以缩短任务耗时,并在业务高峰期降低迁移速率以减轻对集群性能的影响。数据迁移速率由“indices.recovery.max_bytes_per_sec”参数决定,该参数值默认是“CPU核数 x 32MB”(如4核CPU默认128MB)。该参数取值范围为40MB至1000MB,可根据业务需求调整。
    PUT /_cluster/settings  
    {  
      "transient": {  
        "indices.recovery.max_bytes_per_sec": "1000MB"  
      }  
    }
  • 集群负载变化

    缩容后,剩余节点需承载原下线节点的数据分片和业务请求,可能导致CPU、内存、磁盘I/O压力增大,影响查询/写入性能。如果分片分配不均,可能加剧热点节点问题。建议缩容前评估剩余节点的资源和分片容量是否足以支撑当前业务量。

  • 变更过程特性

    缩容任务一旦启动就无法中止,直到任务成功或失败才会结束。

缩容时长

集群缩容的时长估算公式如下:

缩容时长(分钟)= 5(分钟)x 缩容的节点个数 + 数据迁移时长(分钟)

其中:5分钟为初始化等非数据迁移操作的基准耗时,是经验值。

数据迁移时长(分钟)= 待缩容节点的数据总量(MB)÷ [ 数据节点的CPU核数 x 32(MB/s)x 60(秒)]

其中:

  • 32MB/s表示每个CPU核每秒可处理32MB数据,是经验值。
  • 以上公式为理想状态下的理论估算值,实际迁移速率受集群负载影响。

缩容随机节点

  1. 登录云搜索服务管理控制台
  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 集群缩容
  6. 单击“下一步”
  7. 确认变更信息后,单击“提交申请”
  8. 单击“返回集群列表”跳转到集群列表页面。集群的“任务状态”列中显示为“缩容中”,表示集群正在缩容。当集群状态变为“可用”,则表示缩容成功。

缩容指定节点

  1. 登录云搜索服务管理控制台
  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集群还支持变更节点规格和云硬盘类型节约资源,操作指导请参见变更Elasticsearch集群节点规格
  • 当集群不满足缩容条件时,建议新建集群,使用备份恢复功能迁移数据,再删除原集群,实现集群节点数量的减少。

相关文档