美文网首页elasticsearch
【es】如何安全快速地滚动重启es5.x集群?

【es】如何安全快速地滚动重启es5.x集群?

作者: Bogon | 来源:发表于2022-10-15 23:40 被阅读0次

Elasticsearch 集群,有时候可能需要修改配置,增加硬盘,扩展内存等操作,需要对节点进行维护升级。
业务不能停,如果直接kill掉节点,可能导致数据丢失,而且集群会认为该节点挂掉了,就开始转移数据,当重启之后,它又会恢复数据,如果你当前的数据量已经很大了,这是很耗费机器和网络资源的。

正常情况下,Elasticsearch 希望你的数据被完全的复制和均衡的分布。
如果你手动关闭了一个节点,集群会立刻发现节点的丢失并开始再平衡。
如果节点的维护是短期工作的话,这一点就很烦人了,因为大型分片的再平衡需要花费相当的时间.

一个集群节点重启前要先临时禁用自动分配,设置cluster.routing.allocation.enable为none,否则节点停止后当前节点的分片会自动分配到其他节点上,本节点启动后需要等其他节点RECOVERING后才会RELOCATING,也就是分片在其他节点恢复后又转移回来,浪费大量时间。

  1. 如果业务能停,尽量索引数据,不能就算了
  1. 临时禁用分片自动分配(先暂停集群的shard自动均衡)
curl -XPUT http://xx.xx.xx.x:9200/_cluster/settings  -d '{
    "transient" : {
        "cluster.routing.allocation.enable" : "none"
    }
}'

注:xx.xx.xx.xx 为集群master ip

返回结果:

{
    "acknowledged": true,
    "persistent": {},
    "transient": {
        "cluster": {
            "routing": {
                "allocation": {
                    "enable": "none"
                }
            }
        }
    }
}

启用或禁用特定种类的分片的分配:

all - (默认值)允许为所有类型的分片分配分片。
primaries - 仅允许分配主分片的分片。
new_primaries - 仅允许为新索引的主分片分配分片。
none - 任何索引都不允许任何类型的分片。
#检查集群自动均衡是否关闭
curl -XGET "http://xx.xx.xx.xx:9200/_cluster/settings?pretty"
  1. 执行同步刷新
curl  -XPOST   http://xx.xx.xx.x:9200/_flush/synced

执行flush命令之后,所有系统cache中的数据会被同步到磁盘上并且会删除旧的translog然后生成新的translog,默认情况下es的shard会每隔30分钟自动执行一次flush命令,或者当translog变大超过一定的阈值后。
当我们要重启节点或者关闭索引时,最好提前执行一下flush命令作为优化,因为es恢复索引或者重新打开索引时,它必须要先把translog里面的所有操作给恢复,所以也就是说translog越小,recovery恢复操作就越快。

  1. 逐个重启 集群中的节点

3.1 关闭es进程

curl -XPOST http://127.0.0.1:9200/_cluster/nodes/_local/_shutdown

如果不调接口shutdown,可以直接 kill ${pid}

3.2 启动es进程

sh  /path/to/elasticsearch/bin/elasticsearch  -d

重复3.1 3.2 步,更新,重启其他节点,先操作所有master角色节点,再操作其它节点

等es启动后,登录head插件,查看该节点有无加入集群,等其加入集群后,再执行第3步

  1. 等整个集群启动状态变为 yellow后,重新开启shard 自动均衡功能
$  curl  http://127.0.0.1:9200/_cat/nodes?pretty
$  curl  http://127.0.0.1:9200/_cluster/health?pretty
curl -XPUT http://xx.xx.xx.x:9200/_cluster/settings  -d '{
    "transient" : {
        "cluster.routing.allocation.enable" : "all"
    }
}'
image.png
  1. 启动之前停止的索引业务

参考

全集群重启和滚动重启
https://caoke.gitbook.io/elastic-book/she-zhi-elasticsearch/7-quan-ji-qun-zhong-qi-he-gun-dong-zhong-qi

ES集群一个正确的重启流程
https://blog.csdn.net/qq_43005694/article/details/120064724

Elasticsearch 滚动重启
https://www.elastic.co/guide/cn/elasticsearch/guide/current/_rolling_restarts.html

Elasticsearch 集群indices 分片状态INITIALIZING
https://blog.51cto.com/michaelkang/2061220

彻底解决 es 的 unassigned shards 症状
https://www.cnblogs.com/lvzhenjiang/p/14196973.html

Reasons for unassigned shard
https://www.cnblogs.com/lwhctv/p/9946740.html

ES实战-分片分配失败解决方案
https://www.jianshu.com/p/ffe4761dc79a

Shard allocation 过程中的延迟机制
https://www.cnblogs.com/lvzhenjiang/p/14196973.html

解决elasticsearch分片unassigned的3个方法
https://blog.csdn.net/dlm_bk/article/details/102840031

ES集群中出现UNASSIGNED分片时的解决思路
https://huaweicloud.csdn.net/6335750cd3efff3090b57842.html

ES集群重启注意事项
https://blog.csdn.net/deng942861/article/details/120799919

ES unassigned initializing问题处理
https://www.iteye.com/blog/tcxiang-2195852

相关文章

网友评论

    本文标题:【es】如何安全快速地滚动重启es5.x集群?

    本文链接:https://www.haomeiwen.com/subject/qspkzrtx.html