记一次ES生产集群数据节点扩容的操作过程

您所在的位置:网站首页 重启Intouch的daserver会影响现有数据吗 记一次ES生产集群数据节点扩容的操作过程

记一次ES生产集群数据节点扩容的操作过程

2024-07-11 22:02| 来源: 网络整理| 查看: 265

一、前言--客户需求

客户自建ES集群,集群版本是6.8.1,由于生产需要将集群的3个节点进行升级配置。但是不能影响现有业务。

二、升级方案

正常情况下,Elasticsearch 希望用户的数据被完全的复制和均衡的分布。如果用户手动关闭了一个节点,集群会立刻发现节点丢失并开始集群分片的再平衡,就会出现节点间分片的均衡,这对于生产集群来说无疑是影响读写业务以及耗费集群资源的。由于本次节点升配时间不长,采用节点滚动升级的方式,升级一个节点完毕,等集群green再升级另外的第二个节点,以降低对业务的最大影响。因此,我们决定采用如下的方式进行集群的节点升级,步骤如下:

建议用户停止索引新的数据,这可以帮助提高集群的恢复速度。阻止 Elasticsearch 再次平衡缺失的分片,因为大型分片的再平衡需要花费相当的时间,影响集群变更。代码语言:javascript复制PUT /_cluster/settings { "transient" : { "cluster.routing.allocation.enable" : "none" //取消分片权衡 } }

3. 关闭要升级的单个节点,步骤:停掉ES进程,然后关机,进行配置升级。

4. 执行节点维护/升级。

5. 重启节点,然后确认它加入到集群了。

6. 用如下命令重启分片分配:

代码语言:javascript复制PUT /_cluster/settings { "transient" : { "cluster.routing.allocation.enable" : "all" //恢复分片权衡 } } or PUT _cluster/settings { "persistent": { "cluster.routing.allocation.enable": null } }

这个时候集群状态为“YELLOW”,大约数分钟后,集群Green.

7. 重复第 2 到 6 步操作剩余节点升级。每次节点操作完毕,集群都会有几分钟的Yellow。

8. 恢复业务索引写入。

9. 随后,按照客户的要求,将相关的业务索引,指定到升级配置的节点。使用如下:

代码语言:javascript复制PUT index_name/_settings { "index.routing.allocation.include._ip": "10.124.105.5,10.124.105.6,10.124.105.7" } //include 表示OR的意思三、总结

本次我们采用上面的方式给用户进行生产集群的节点升级。整个操作过程大概耗时在40分钟左右,调整了ES集群的节点配置,配置文件的变更等操作,顺利完成了客户的集群变更的保驾护航操作。滚动重启的方式适合于Elasticsearch 版本升级,或者服务器自身的一些维护操作(比如操作系统升级或者硬件相关)。希望大家可以借鉴一下。

当然,我们也考虑将节点exclude的方式进行滚动升级,比如如下API,但是这个API会在将节点下线前,将上面的分片全部挪到其它节点。时间比较长,故不予考虑。

代码语言:javascript复制PUT _cluster/settings { "transient" : { "cluster.routing.allocation.exclude._ip" : "10.0.0.1" } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3