暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

elasticsearch集群正确关闭、重启方式

原创 zayki 2023-12-06
759

问题原因:

在elasticsearch集群中,当集群发现某个节点关闭时,将延迟一分钟后(默认)再开始将该节点上的分片复制到集群中的其他节点,这可能涉及很多I / O。由于该节点不久将要重新启动,因此该I / O是不必要的。您可以通过在关闭节点之前禁用副本分配来避免。

正确关闭方式:

第一步:

禁止分片自动分布

curl -X PUT “localhost:9200/_cluster/settings?pretty” -H ‘Content-Type: application/json’ -d’
{
“persistent”: {
“cluster.routing.allocation.enable”: “primaries”
}
}

第二步:

执行同步刷新

curl -X POST “localhost:9200/_flush/synced?pretty”
注意:

执行同步刷新时,请检查响应以确保没有失败。尽管请求本身仍返回200 OK状态,但在响应正文中列出了由于挂起索引操作而失败的同步刷新操作。如果失败,请重新发出请求。

第三步:

关闭所有节点

如果您使用以下命令运行Elasticsearch systemd:
sudo systemctl stop elasticsearch.service

如果您正在使用SysV运行Elasticsearch init:
sudo -i service elasticsearch stop

如果您将Elasticsearch作为守护程序运行:
kill $(cat pid.txt)
关闭结束后可以执行你任何的更改

正确重启方式:

第一步:

执行完操作后逐个启动节点

cd $ES_HOME
./bin/elasticsearch -d -p $ES_HOME/pid.txt

第二步:

等所有节点启动完成后,可以通过执行如下请求查看集群状态:

curl -X GET “localhost:9200/_cat/health?pretty”
curl -X GET “localhost:9200/_cat/nodes?pretty”
状态分别有:red,yellow,green。

当节点加入集群时,它开始恢复本地存储的所有主分片。该_cat/healthAPI最初将报告status中red,表明并非所有的初级碎片已被分配。一旦节点恢复了其本地分片,集群status就会切换到 yellow,表示所有主分片都已恢复,但并非所有副本分片都已分配。这是可以预期的,因为您尚未重新启用分配。将副本的分配延迟到所有节点都yellow可用之后,主服务器便可以将副本分配给已经具有本地分片副本的节点。

第三步:

启用分片自动分布

当所有节点都已加入集群并恢复了其主要分片后,可通过恢复cluster.routing.allocation.enable为其默认值来重新启用分配:

curl -X PUT “localhost:9200/_cluster/settings?pretty” -H ‘Content-Type: application/json’ -d’
{
“persistent”: {
“cluster.routing.allocation.enable”: null
}
}

重新启用分配后,集群便开始将副本分片分配给数据节点。此时,恢复索引和搜索是安全的,但是如果您可以等待直到成功分配了所有主分片和副本分片并且所有节点的状态为,集群就会恢复得更快green。

您可以使用_cat/health和 _cat/recoveryAPI 监视进度

curl -X GET “localhost:9200/_cat/health?pretty”
curl -X GET “localhost:9200/_cat/recovery?pretty”
————————————————
版权声明:本文为CSDN博主「zzqit」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zzqaaasss/article/details/104191044

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论