在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-e和cn-hangzhou-h可用区,优先选择cn-hangzhou-h),这类可用区资源一般较充足。因为可用区迁移功能在迁移当前规格节点到其他可用区后,需手动升配集群,并不会在迁移过程中升配集群。
注意事项
一次仅支持迁移单个可用区,如果需要迁移多个可用区,需要分批次做迁移。
可用区迁移会触发集群滚动重启,迁移时长与集群规模、数据量及负载情况等相关,建议在业务低峰期做迁移。
如果集群索引存在副本分片且集群负载处于正常水平(CPU使用率在60%左右,堆内存使用率在50%左右,load_1m低于CPU核数),一般情况下,可用区迁移过程中,集群可持续对外提供服务。
如果集群负载过高且索引没有副本,同时业务中存在大量的写入或查询等场景,在可用区迁移过程中,业务可能会出现偶发的访问超时现象。建议在可用区迁移前,在客户端访问机制中配置重试机制,以减小对业务的影响。
操作步骤
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
- 进入目标实例。
- 在顶部菜单栏处,选择资源组和地域。
- 在Elasticsearch实例中单击目标实例ID。
在实例的基本信息页面下方的节点可视化区域,将鼠标移动到需要迁移的可用区上,单击迁移。
在可用区节点迁移对话框中,选择目标可用区和虚拟交换机。
参数
说明
目标可用区
选择节点需要迁移到的新的可用区。
选择的目标可用区可能没有库存或显示暂不支持该可用区,换一个可用区即可。
为尽可能实现节点部署的高可用性,不能选择已经部署了该ES集群节点的其他可用区。
虚拟交换机
对于单可用区的ES实例,需要选择新的虚拟交换机进行可用区迁移,一般选择默认提供的交换机。
说明双可用区、三可用区实例或金融云实例,无须指定新的虚拟交换机。
重要迁移可用区会触发集群重启,重启过程中集群可持续提供服务,但可能会导致服务不稳定,建议在业务低峰期操作。
选中数据迁移服务协议,单击确认。
确认后,集群会重启。重启成功后,即可完成迁移任务。