ES集群安重启节点

来源:互联网 发布:域名服务器dns中存放 编辑:程序博客网 时间:2024/05/19 17:52

Elastcisearch集群,会遇到修改配置:增加硬盘,扩展内存,ES客户端升级等操作,需要对节点重启,但是由于业务不能停止,如果直接关闭单个节点,此时ES集群认为此节点挂掉,es的shard自动均衡会转移数据。此时如果节点恢复,会导致数据再分配,会消耗大量的I/O网络资源。而且会导致集群状态red,大量unsigned_shards,引起ES集群状态red。
所以我们的思路是:
1.先关闭ES集群的shard自动分配
2.关闭节点修改节点配置
3.启动节点后再开启集群shard自动分配

具体操作如下:
1.停止集群自动分配

curl -XGET 'http://192.168.17.201:9200/_cluster/settings' -d '{"transient" : {"cluster.routing.allocation.enable" : "none"}}'

2.shoudown 集群节点,修改es配置,启动节点,并且确认节点已加到集群中。
检查集群节点数,判断节点是否加入集群

curl -XGET 'http://192.168.17.201:9200/_cluster/health?pretty=true'  

3.重复步骤2,对其余节点配置修改。.节点配置全部修改完后,开启集群自动分配

curl -XGET 'http://192.168.17.201:9200/_cluster/settings' -d '{"transient" : {"cluster.routing.allocation.enable" : "all"}}'

此时查看集群状态会发现,集群状态是red,而且unsigned_shards会自动减少,说明集群shards自动分配开启成功,全部分配完成后,ES集群状态会变为 Green
查看集群状态

curl -XGET 'http://192.168.17.201:9200/_cluster/health?pretty=true'  

ES集群节点配置修改/升级 安全重启完成.


附:转载集群节点离开 和节点返回ES集群的状态
节点离开
在elasticsearch集群中,假设NodeA因为种种原因退出集群,在NodeA上的Shard分片情况(ShardA是主分片,ShardB是某一分片副本)

在存活节点上找到ShardA的副本,将该副本升格为主分片
由于ShardB这一分片副本丢失,所以会重新创建相应的分片副本
在存活的节点中对于分片进行再平衡
这样做的目的是保证每个分片都有足够的副本,可以避免数据丢失。需要注意的是,步骤二和步骤三牵涉到大量的网络I/O操作。
节点返回
如果离开的节点重新加入集群,elasticsearch为了对数据分片(shard)进行再平衡,会为重新加入的NodeA再次分配数据分片(Shard), 这会再次导致大量的网络I/O操作。

原创粉丝点击