若Elasticsearch(简称ES)集群在升配时可用区规格库存不足,您可将该可用区下的节点迁移到其他资源充足的可用区,然后在新的可用区进行集群升配;若由于业务扩展,您的单可用区集群已无法满足高并发查询或大数据量写入需求,您可将集群的单可用区升级为多可用区,避免单点故障,增强集群高可用。本文介绍如何迁移及升级Elasticsearch的可用区。
背景信息
费用说明
无论是迁移可用区或升级可用区,均按照您实际使用的节点数量收费,具体费用请以实际账单为准。计费详情,请参见阿里云ES计费。
注意事项
迁移可用区
每次仅支持迁移单个可用区,如需迁移多个可用区,需分批次执行迁移操作。
可用区迁移会触发集群滚动重启,迁移时长与集群规模、数据量及负载情况等相关,建议在业务低峰期做迁移。
若集群索引存在副本分片且集群负载处于正常水平(CPU使用率在60%左右,堆内存使用率在50%左右,load_1m低于CPU核数),一般情况下,可用区迁移过程中,集群可持续对外提供服务。
若集群负载过高且索引没有副本,同时业务中存在大量的写入或查询等场景,在可用区迁移过程中,业务可能会出现偶发的访问超时现象。建议在可用区迁移前,在客户端访问机制中配置重试机制,以减小对业务的影响。
升级可用区
仅支持将单可用区升级为多可用区(即两个可用区或三个可用区),不支持多可用区升级(即两个可用区无法升级为三个可用区)。
为保障集群稳定性,升级时,系统会默认开启专有主节点。
升级过程中,集群现有的节点会进行重启,并且系统会自动调整数据节点的数量,确保数据在多个可用区中均匀分布。
数据节点计算公式:
数据节点的总数量 = 升级后单可用区的数据节点数量 * 可用区数
例如:某集群为单可用区,总共配置了6个数据节点,升级为3个可用区后,则该集群每个可用区的数据节点数量为
2
个。说明若单可用区的数据节点较少,升级为多可用区后,无法确保每个可用区至少分到一个数据节点,此时,系统会按需自动补充数据节点。例如,某单可用区集群总共只有2个数据节点,升级为3个可用区时,系统会自动补充一个数据节点(即总共3个数据节点),确保每个可用区都分配到一个数据节点。
前提条件
迁移可用区
确保集群处于健康状态。
可通过
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),这类可用区资源一般较充足。迁移当前规格节点到其他可用区后,需手动升配集群,迁移过程中不会进行集群升配。
确保
cluster.routing.allocation.enable
配置项设置为all
(即允许ES自动分配分片),否则可能导致变更过程出现阻塞。可通过
GET _cluster/settings
命令查看相关配置。若cluster.routing.allocation.enable
的取值不为all
,可参考如下命令设置。PUT _cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } }
升级可用区
确保集群处于健康状态。
可通过
GET _cat/health?v
命令查看集群健康状态。确保客户端完成连接分布的优化,以避免出现长连接分布不均匀现象。
在ES集群中,若客户端的长连接集中在某个可用区节点(例如,可用区A),而其他可用区节点连接数极少,则可用区A的节点可能因连接过多而导致负载过高、资源耗尽,而其他节点处于闲置状态。您可通过设置连接有效时长、并发重启客户端、使用单独的协调节点等方案优化连接分布,详情请参见长连接不均匀。
确保
cluster.routing.allocation.enable
配置项设置为all
(即允许ES自动分配分片),否则可能导致变更过程出现阻塞。可通过
GET _cluster/settings
命令查看相关配置。若cluster.routing.allocation.enable
的取值不为all
,可参考如下命令设置。PUT _cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } }
迁移可用区
您可按照如下步骤,完成可用区的迁移:
迁移可用区会触发集群重启,重启过程中集群可持续提供服务,但可能会导致服务不稳定,建议在业务低峰期操作。
进入实例详情页。
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
在顶部菜单栏选择资源组和地域,单击目标实例ID,进入实例详情页。
在实例的基本信息页面下方的节点可视化区域,将鼠标移动至需要迁移的可用区上,单击迁移。
在可用区节点迁移对话框中,选择目标可用区和虚拟交换机。
参数
说明
目标可用区
选择节点需要迁移到的新的可用区。
选择的目标可用区可能没有库存或显示暂不支持该可用区,换一个可用区即可。
为尽可能实现节点部署的高可用性,不能选择已经部署了该ES集群节点的其他可用区。
虚拟交换机
对于单可用区的ES实例,需要选择新的虚拟交换机进行可用区迁移,一般选择默认提供的交换机。
说明双可用区、三可用区实例或金融云实例,无须指定新的虚拟交换机。
若没有可用的交换机,可参考创建和管理交换机新建。
勾选数据迁移服务协议,单击确认。
确认后,集群会重启。重启成功,即可完成迁移任务。
升级可用区
您可按照如下步骤,完成可用区的升级:
升级过程可能会出现负载不均衡问题,可参考集群负载不均问题的分析方法及解决方案处理。
进入Elasticsearch实例列表。
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
在顶部菜单栏处,选择资源组和地域。
单击目标实例操作列的升配。
在变配页面的可用区数量区域,按需选择升级为两个可用区或三个可用区(推荐),按照界面指引完成购买。
说明其他配置可保持默认,也可按需配置。系统将按照您实际使用的节点数量收费,具体费用请以实际账单为准。计费详情,请参见阿里云ES计费。
后续步骤
迁移或升级完成后,您可进入实例详情页,查看变更后的可用区详细信息。