在任何系统或软件中,当我们升级到更新版本时,我们需要按照几个步骤来维护应用程序设置,配置,数据和其他内容.这些步骤是使应用程序在新系统中稳定或维护数据完整性(防止数据损坏)所必需的.
以下是升级Elasticsearch : 的步骤;
从 https://www.elastic.co/
在UAT,E2E,SIT或DEV环境中测试非生产环境中的升级版本.
如果没有数据备份,则无法回滚到以前的Elasticsearch版本.在升级到更高版本之前,建议使用数据备份.
我们可以使用完全集群重启或滚动升级进行升级.滚动升级适用于新版本(适用于2.x和更高版本).当您使用滚动升级方法进行迁移时,没有服务中断.
旧版本 | 新版本 | 升级方法 |
---|---|---|
0.90.x | 2.x | 完全集群重启 |
1.x | 2.x | 完全群集重启 |
2.x | 2.y | 滚动升级(y> x ) |
迁移前进行数据备份,并按照说明操作执行备份过程.快照和还原模块可用于进行备份.此模块可用于拍摄索引或完整集群的快照,并可存储在远程存储库中.
快照和还原模块
在开始备份过程之前,需要在Elasticsearch中注册快照存储库.
PUT /_snapshot/backup1{ "type": "fs", "settings": { ... repository settings ... }}
注意 : 上面的文本是对 http://localhost:9200/_snapshot/backup1 的HTTP PUT请求(可以有远程服务器的IP地址而不是localhost).其余的文本是请求正文.您可以使用Windows中的fiddler2和其他Web工具轻松完成此操作.
我们使用共享文件系统(类型:fs)进行备份;它需要在每个主节点和数据节点中注册.我们只需要添加具有备份存储库路径的path.repo变量作为值.
在我们添加存储库路径之后,我们需要重新启动节点然后才能执行注册通过执行以下命令 :
PUT http://localhost:9200/_snapshot/backup1{ "type": "fs", "settings": { "location": "/mount/backups/backup1", "compress": true }}
完全群集重启
此升级过程包括以下步骤 :
步骤1 : 禁用分片分配过程并关闭节点.
PUT http://localhost:9200/_cluster/settings{ "persistent": { "cluster.routing.allocation.enable": "none" }}
如果将0.90.x升级到1.x,请使用以下请求 :
PUT http://localhost:9200/_cluster/settings{ "persistent": { "cluster.routing.allocation.disable_allocation": false, "cluster.routing.allocation.enable": "none" }}
第2步 : 对Elasticsearch进行同步刷新 :
POST http://localhost:9200/_flush/synced
第3步 : 在所有节点上,终止所有弹性服务.
步骤4 : 在每个节点上执行以下操作 :
在Debian或Red Hat节点中 : rmp或dpkg可用于通过安装新软件包来升级节点.不要覆盖配置文件.
在Windows(zip文件)或UNIX(tar文件)中 : 在不覆盖config目录的情况下解压缩新版本.您可以从旧安装中复制文件,也可以更改path.conf或path.data.
步骤5 : 从群集中的主节点(node.master设置为true且node.data设置为false的节点)开始再次启动节点.等待一段时间建立一个集群.您可以通过监视日志或使用以下请求 : 来检查;
GET _cat/health or http://localhost:9200/_cat/healthGET _cat/nodes or http://localhost:9200/_cat/health
第6步 : 使用 GET _cat/health 请求监视集群形成的进度并等待响应中的黄色,响应将是这样的 :
1451295971 17:46:11 elasticsearch yellow 1 1 5 5 0 0 5 0 - 50.0%
步骤7 : 通过使用以下请求 : 来启用在步骤1中禁用的分片分配过程;
PUT http://localhost:9200/_cluster/settings{ "persistent": { "cluster.routing.allocation.enable": "all" }}
如果要将0.90.x升级到1.x,请使用以下请求 :
PUT http://localhost:9200/_cluster/settings{ "persistent": { "cluster.routing.allocation.disable_allocation": true, "cluster.routing.allocation.enable": "all" }}
滚动升级
与完全群集重启相同,但步骤3除外.此处,您停止一个节点并进行升级.升级后,重新启动节点并为所有节点重复这些节点.启用分片分配过程后,可以通过以下请求监视 :
GET http://localhost:9200/_cat/recovery