Elasticsearch集群升级指引 (2)

集群整体重启指的是升级前将集群所有节点均下宕,集群停止对外服务,待所有节点完成升级后,整体启动集群,恢复对外服务。例如:5.6之前的版本升级到6.x需要重启集群实施升级。

https://www.elastic.co/guide/en/elasticsearch/reference/current/restart-upgrade.html

集群重启升级步骤和滚动方式相似,主要步骤如下:

第1步 禁用副本分片(shards)分配

下宕升级节点前需要,提前禁止副本分片的分配。(参考滚动升级)

第2步 停止不必要的索引并执行同步刷新

参考滚动升级。

第3步 停止机器学习作业

参考滚动升级

第4部 下宕所有节点并安装主版本和插件

对集群所有节点实施下宕,开始文件系统版本升级。

第5步 启动节点并等待集群状态为yellow

启动所有节点,并用下面的API检查所有节点是否加入集群。

GET _cat/nodes 第6步 重启分片分配

节点加入集群后,设置启用分片分配开始使用该节点。

PUT _cluster/settings { "persistent": { "cluster.routing.allocation.enable": null } }

在升级下一个节点前,等待集群分片完成。可以通过下面的API检查集群状态:

GET _cat/health?v

等待集群的状态由yellow变为green。说明集群完成所有主分片和副分片的分配。

第7步 重启机器学习任务

参考滚动升级

2.3 reindex

Elasticsearch中相邻版本的index具有兼容性,但是跨度较大的版本不再向下兼容。在上文(1.2 索引兼容性)中已做介绍。而在ElasticSearch中,索引的field设置是不能被修改的,如果要修改一个field,那么应该重新按照新的mapping,建立一个index,然后将数据批量查询出来,重新用bulk api写入新index中。

批量查询的时候,建议采用scroll api,并且采用多线程并发的方式来reindex数据,每次scroll就查询指定日期的一段数据,交给一个线程即可。

第1步 搭建新版本集群

申请服务器资源,搭建全新版本的ElasticSearch集群。将对外服务全部指向新集群。

第2步 将老集群中数据reindex到新集群

在老集群上使用reindex API将老集群中index历史数据逐步迁移至新集群。

如果集群数据量较大,迁移过程是一个很缓慢的过程。

API案例(下面是简单的配置):

POST _reindex { "source": { "remote": { "host": "http://otherhost:9200", "username": "user", "password": "pass" }, "index": "source", "query": { "match": { "test": "data" } } }, "dest": { "index": "dest" } } //host为远程集群(新集群)的地址。 //username和password针对安全集群的密钥验证。 //"index": "source"为旧集群中index名,dest的所对应的是新集群目标index名。

迁移完成后,可以对旧集群中数据实施清理。清理完成后根据情况需要,旧节点可以离线升级文件系统,最后作为全新的节点加入新集群。

如果旧集群中历史数据不重要,可以删除数据后,搭建全新的集群。

2.4 分步升级

对于跨度较大的版本升级,如果不采用新建集群再实施reindex方式,那么就需要分步升级。例如A、B、C依次为三个版本,版本级别A<B<C,其中index数据B兼容A,C兼容B,但是C不兼容A。这种情况需要分步升级:

A升级到B,使用滚动升级或者集群整体重启方式。

对于B版本的集群,将A版本的所有数据reindex到B版本。这个过程较为耗时。

等到集群中所有历史index(新建的index自然是B版本)均为B版本后,升级集群版本到C版本。

如果index数据是时间序列类的数据,可以不实施reindex,等到历史数据生命周期结束后(集群中不在有A版本的index数据),再从B版本升级到C版本。

总结

(1)一般Elasticsearch大版本之间跨度升级需要重启整体集群。

(2)部分ElasticSearch大版本间index并不兼容,需要对数据重索引(reindex)。

(3)大版本中的小版本升级,通常只需要滚动重启方式即可。

参考材料

1、Elasticsearch官网 链接:https://www.elastic.co/cn/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywjxg.html