迁移ES节点的可用区

在Elasticsearch(简称ES)集群升配的过程中,遇到可用区规格库存不足的情况时,您可以将该可用区下的节点迁移到其他资源充足的可用区,然后在新的可用区进行集群升配。本文介绍如何迁移节点的可用区。

背景信息

  • 可用区:物理机房和可用区基本可以理解为一对一的关系,个别情况是一对多的关系,例如AM5机房包含了cn-hangzhou-d和cn-hangzhou-finance-d两个可用区,从ES管控角度来讲裁撤机房即裁撤可用区。

  • 迁移可用区:ES产品提供了标准化的产品能力来实现可用区的集群迁移,阿里云ES提供的集群迁移产品功能基于蓝绿能力,可以实现平滑变更,过程全无损。

前提条件

  • 确保集群处于健康状态。

    可通过GET _cat/health?v命令查看集群健康状态。

  • 在Kibana控制台执行以下命令,检查集群中是否存在状态为close的索引。如果存在,需要将对应索引的状态暂时设置为open,否则变更不成功。

    • 查看索引状态

      GET /_cat/indices?v

      查看索引状态

    • 将close状态的索引暂时设置为open状态

      POST /<index_name>/_open

      <index_name>需要替换为状态为close的索引名称。

  • 确保当前账号下存在资源充足的可用区。

    建议优先选择字母顺序靠后的新可用区(例如对于cn-hangzhou-ecn-hangzhou-h可用区,优先选择cn-hangzhou-h),这类可用区资源一般较充足。因为可用区迁移功能在迁移当前规格节点到其他可用区后,需手动升配集群,并不会在迁移过程中升配集群。

注意事项

  • 一次仅支持迁移单个可用区,如果需要迁移多个可用区,需要分批次做迁移。

  • 可用区迁移会触发集群滚动重启,迁移时长与集群规模、数据量及负载情况等相关,建议在业务低峰期做迁移。

  • 如果集群索引存在副本分片且集群负载处于正常水平(CPU使用率在60%左右,堆内存使用率在50%左右,load_1m低于CPU核数),一般情况下,可用区迁移过程中,集群可持续对外提供服务。

  • 如果集群负载过高且索引没有副本,同时业务中存在大量的写入或查询等场景,在可用区迁移过程中,业务可能会出现偶发的访问超时现象。建议在可用区迁移前,在客户端访问机制中配置重试机制,以减小对业务的影响。

操作步骤

  1. 登录阿里云Elasticsearch控制台
  2. 在左侧导航栏,单击Elasticsearch实例
  3. 进入目标实例。
    1. 在顶部菜单栏处,选择资源组和地域。
    2. Elasticsearch实例中单击目标实例ID。
  4. 在实例的基本信息页面下方的节点可视化区域,将鼠标移动到需要迁移的可用区上,单击迁移

    image

  5. 可用区节点迁移对话框中,选择目标可用区虚拟交换机

    参数

    说明

    目标可用区

    选择节点需要迁移到的新的可用区。

    • 选择的目标可用区可能没有库存或显示暂不支持该可用区,换一个可用区即可。

    • 为尽可能实现节点部署的高可用性,不能选择已经部署了该ES集群节点的其他可用区。

    虚拟交换机

    对于单可用区的ES实例,需要选择新的虚拟交换机进行可用区迁移,一般选择默认提供的交换机。

    说明

    双可用区、三可用区实例或金融云实例,无须指定新的虚拟交换机

    重要

    迁移可用区会触发集群重启,重启过程中集群可持续提供服务,但可能会导致服务不稳定,建议在业务低峰期操作。

  6. 选中数据迁移服务协议,单击确认

    确认后,集群会重启。重启成功后,即可完成迁移任务。

    重要
    • 可用区迁移过程中,需要先在新的目标可用区购买新的master节点,会临时出现2个可用区共存的现象。

    • 迁移成功后,ES集群节点将迁移到新可用区下。但控制台基本信息和升降配页面可能会因为信息更新不及时依旧显示旧可用区,此显示不影响在新可用区下使用ES集群。您可在控制台的节点可视化区域,查看集群节点所在的真实可用区。

    • 迁移后集群中的节点IP地址会发生变化。如果您在集群配置中指定了节点的IP地址,需要在迁移后更新。