当您的业务处于流量低峰期或集群中的数据量减少时,可通过阿里云Elasticsearch的数据节点缩容功能,减少集群中数据节点的数量。本文介绍如何缩容集群中的数据节点。
前提条件
登录Kibana控制台,执行以下命令,检查集群中是否存在状态为close的索引。如果存在,需要open或delete对应索引,否则变更不成功。- 查看索引状态
GET /_cat/indices?v
- open状态为close的索引
POST /<index_name>/_open
- delete状态为close的索引
警告 索引删除后不可恢复,请谨慎操作。
DELETE /<index_name>
注意事项
缩容集群数据节点操作会触发集群重启,为保证您的业务不受影响,请确认后操作。
缩容数据节点
迁移回滚
数据迁移是一个周期很长的过程,在此期间集群状态和数据的变更可能会导致迁移失败,具体可在任务列表中查看。当数据迁移失败或者迁移完成后,可通过以下步骤对迁移节点进行回滚:
常见问题
- 出现“该操作会导致当前集群资源(Disk/CPU/Memory)不足或shard分配异常”的报错,如何处理?
原因
- 集群资源不足
集群在缩容后,磁盘、内存、CPU等资源不足,不足以承担当前系统数据或者负载。
- shard分配异常
按照Lucene原理,对于任意一个数据节点中同一个索引的副本,Elasticsearch不会把2个或者2个以上的副本同时迁移到同一个数据节点中。这会导致缩容后集群中索引的副本数可能大于等于数据节点数,从而导致shard分配异常。
- 集群资源不足
- 出现“集群当前状态异常或有未完成任务”的报错,如何处理?
解决方案:使用
GET _cluster/health
查看集群健康状况,或者在智能运维中查看集群异常原因。 - 集群节点有数据,如何执行迁移任务?
解决方案:进行数据迁移操作,详情请参见缩容数据节点章节。
- 出现“保留节点数需大于2且大于当前节点数一半”的报错,如何处理?
原因:为保证集群的可靠性,保留的节点数必须大于2;为保证集群的稳定性,每次迁移或缩容的节点数不得超过当前数据节点数的一半。
解决方案:如果不满足以上要求,需要重新选择迁移或缩容的节点或者升配集群。
- 出现“当前ES集群配置不支持该操作”的报错,如何处理?
解决方案:使用
GET _cluster/settings
查看集群配置,查看是否存在不允许数据分配的配置。 - 使用
auto_expand_replicas
索引,导致数据迁移或者节点缩容失败,如何处理?原因:部分用户使用了X-Pack提供的权限管理功能,在早期版本中,该功能对应的.security索引默认会使用
"index.auto_expand_replicas" : "0-all"
配置,该配置会使得数据迁移或者节点缩容失败。解决方案:- 查看索引配置。
GET .security/_settings
返回如下结果。{ ".security-6" : { "settings" : { "index" : { "number_of_shards" : "1", "auto_expand_replicas" : "0-all", "provided_name" : ".security-6", "format" : "6", "creation_date" : "1555142250367", "priority" : "1000", "number_of_replicas" : "9", "uuid" : "9t2hotc7S5OpPuKEIJ****", "version" : { "created" : "6070099" } } } } }
- 选择其中一种方式修改配置。
- 方式一
PUT .security/_settings { "index" : { "auto_expand_replicas" : "0-1" } }
- 方式二
PUT .security/_settings { "index" : { "auto_expand_replicas" : "false", "number_of_replicas" : "1" } }
注意number_of_replicas
表示索引的副本个数,可以根据实际需求进行配置,但要保证至少有1个,且不大于可用的数据节点个数。
- 方式一
- 查看索引配置。
在文档使用中是否遇到以下问题
更多建议
匿名提交