更新时间:2025-06-17 GMT+08:00

替换Elasticsearch集群指定节点

当Elasticsearch集群中的节点发生故障时,可以执行“替换指定节点”任务修复故障节点。

替换指定节点的变更流程:
  1. 将待替换节点的数据迁移到其他可用节点。
  2. 按照原节点的ID、IP地址、规格、AZ等信息重建节点。
  3. 将节点重新加入集群,系统自动触发分片重平衡机制,逐步将部分数据分片迁移至该节点。

由于会迁移数据,因此整个变更过程不会中断业务。

前提条件

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

约束限制

  • 一次只能选择一个节点进行替换,节点替换过程会按照原节点的ID、IP地址、规格、AZ等信息重建节点。
  • 节点替换过程中不会保留手动操作。例如被替换的节点手动加过回程路由,那么节点替换完成后,需要重新添加回程路由。
  • 当替换的是数据节点或冷数据节点时,需要确认集群或节点是否满足以下条件。
    • 替换数据节点或冷数据节点的过程中,会先将被替换节点的数据迁移到其他数据节点,因此数据节点数和冷数据节点数之和要大于索引副本数的最大值加1,即“数据节点数 + 冷数据节点数 > 索引副本数的最大值 + 1”
    • 版本号在7.6.2以前的Elasticsearch集群,不能有close的索引,否则不支持替换数据节点或冷数据节点。
    • 被替换的数据节点或冷数据节点所在的AZ必须满足被替换的同类型节点数大于或等于2。
    • 当集群无Master节点时,数据节点数和冷数据节点数之和要大于或等于3,即“数据节点数 + 冷数据节点数 ≥ 3”
    • 当替换的是故障节点时,不管什么节点类型都不受以上约束。因为故障节点不包含在“_cat/nodes”中。

变更影响

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

  • 性能影响

    替换指定节点不会中断业务,但是数据迁移会消耗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"  
      }  
    }
  • 请求处理影响

    节点替换过程中,发送到该节点的请求可能会失败。为了降低影响可以采用如下措施:

    • 通过终端节点服务或独享型负载均衡器访问集群,确保请求自动路由到可用节点。
    • 在客户端实现指数退避重试机制(建议配置3次重试)。
    • 在业务低峰期进行规格变更。
  • 变更过程特性

    替换指定节点任务一旦启动就无法中止,直到任务成功或失败才会结束。任务失败通常只影响单个节点,在有副本的情况下业务不受影响,但需要及时修复失败节点。

替换指定节点时长

替换指定节点的时长估算公式如下:

变更时长(分钟)= 15(分钟)+ 数据迁移时长(分钟)

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

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

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

替换指定节点

  1. 登录云搜索服务管理控制台。
  2. 在左侧导航栏,选择“集群管理 > Elasticsearch”,进入集群列表。
  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. 单击“返回集群列表”跳转到集群管理页面。集群的“任务状态”列中显示为“节点替换中”,表示集群正在替换节点。当集群状态变为“可用”,则表示节点替换成功。