Elasticsearch集群在“不停服务情况下”的滚动重启方案

作者:石文
时间:2018-06-12


摘要

Elasticsearch官方提供的重启方案支持在停止ES服务的情况下进行,对于在不停服务的情况下,ES重启过程中各类ES配置对集群的影响并没有明确的给出。本文通过对数个ES集群在不停止服务情况下进行滚定重启,提出了“不停服务情况下”支持的ES滚动重启的方案,并对在ES滚动重启各角色,各类配置API,对业务有何影响进行总结。

ES官方滚动重启方案

ES官方提供的重启方案(通过官方文档总结)

1. 禁用分片重新分配
2. 先停止索引----- 关闭client节点
3. 执行同步刷新 注: 一定要先停止索引,不然会执行出现错误,出现fail的索引
4. 关闭一个master组的非master节点
5. 重启关闭的节点
6. 检查节点是否已加入集群,检查集群状态是否为green
7. 重复4-6步骤,直到所有的master节点重启完毕
8. 关闭一个data组的节点
9. 重启关闭的节点
10. 检查节点是否已加入集群,检查集群状态是否为green
11. 重复8-10步骤,直到所有的data节点重启完毕
12. 重启client节点
13. 启用分片分配

在“不停服务情况下”的滚动重启方案

#准备工作:
##提前打开如下信息,有些API是需要观察的各项指标(出现问题则停止重启),其余是配合检查的API:
###查看集群UNASSIGEN shards 原因
curl http://0.0.0.0:9200/_cluster/allocation/explain?pretty
###集群配置
curl http://0.0.0.0:9200/_cluster/settings?pretty
###pending-tasks
curl http://0.0.0.0:9200/_cluster/pending_tasks?pretty
###集群健康
curl http://0.0.0.0:9200/_cluster/health?pretty
#重启client-node组节点
#start
##步骤1:关闭其中一个client节点
##步骤2:重启节点
##步骤3:检查节点是否加入集群
##步骤4:重复步骤2-3重启其他节点
#end
#重启mater-node节点
##步骤1:明确master节点IP
##步骤2:关闭master-node组的一个非master节点
##步骤3:重启节点
##步骤4:检查节点是否加入集群(确保已经加入集群)
##步骤5:重复步骤2-4,重启另外的master-node组的一个非master节点
##步骤6:关闭master节点
##步骤7:重启master节点
###在master节点选举过程中,集群功能不可用(包括了:索引功能、search功能,API功能堵塞等),集群并不会立即选举出master节点(默认进行选举的时间为3s, 由于网络的问题,往往将master选举的时间延长)
##步骤8:检查集群装填,检查节点是否加入集群。
###当master选举出来,集群功能将全部正常。
#end
#重启data-node节点
#start
##步骤1:禁用分片分配
curl -X PUT http://0.0.0.0:9200/_cluster/settings?pretty -d '{"transient": {"cluster.routing.allocation.enable": "new_primaries"}}'
###禁用分片分配期间,集群新建索引将无法分配副本分片,允许新建索引主分片的分配
##步骤2:执行同步刷新
curl -XPOST "http://0.0.0.0:9200/_flush/synced?pretty"
###对于在此刻不在更新的索引,此操作将通过synced值来确认主副分片是否数据一致(加快了分片加入集群的时间);对于在此刻索引发生变化的分片,此操作对节点加入集群的索引恢复没有作用
##步骤3:关闭一个data-node节点
##步骤4:重启节点
##步骤5:检查节点是否加入集群
##步骤6:启用分片分配
curl -X PUT http://0.0.0.0:9200/_cluster/settings?pretty -d '{"transient": {"cluster.routing.allocation.enable": "all"}}'
##步骤7:检查集群状态是否为green
###在启用了分片分配后,UNASSIGEN shards会瞬间减少(不会瞬间减少为0,因为在大的ES集群中,每个节点都会有在更新的索引分片);之后会出现一些initializing shards,这部分分片会需要等待一段时间才会减少为0(分片同步过程中)
###步骤8:重复步骤3-7,重启其他节点
###步骤9:节点全部重启完毕后,检查集群配置,确保没有禁用分片分配
#end

参考资料:
ES官方重启教程 https://www.elastic.co/guide/en/elasticsearch/reference/1.4/cluster-nodes-shutdown.html#_rolling_restart_of_nodes_full_cluster_restart

发布了67 篇原创文章 · 获赞 0 · 访问量 1792

猜你喜欢

转载自blog.csdn.net/zhinengyunwei/article/details/104041987
今日推荐