在升级前需考虑下面三件事:
elasticsearch滚动升级过程,不会造成服务中断。elasticsearch提供两种升级类型:全集群重启和滚动升级。
elasticsearch版本所支持的升级类型如下表:
Upgrade From | Upgrade To | Supported Upgrade Type |
---|---|---|
0.90.x |
1.x, 2.x |
Full cluster restart |
< 0.90.7 |
0.90.x |
Full cluster restart |
>= 0.90.7 |
0.90.x |
Rolling upgrade |
1.0.0 - 1.3.1 |
1.x |
Rolling upgrade (if indices.recovery.compress set to false ) |
>= 1.3.2 |
1.x |
Rolling upgrade |
1.x |
2.x |
Full cluster restart |
重要的事情再强调一遍,在执行升级之前,务必先备份数据,这将给你留条后路,如果升级后出现问题还允许你回滚到之前的版本,否则死无葬身之地。
再啰嗦一句,如果没有备份的数据,将不可能回滚到旧版本。
elasticsearch1.0 和更高的版本备份请参考前文《elasticsearch 快照和恢复》。elasticsearch0.90.x和更早版本备份请参考官方文档,这里不说了。
滚动升级一个一个的升级集群中的节点,待该节点升级稳定后,接着下一个节点,如此反复,直到整个集群中的所有节点都升级完为止。
步骤如下:
当升级elasticsearch主要版本时,需要全集群重启升级。如从0.x到1.x,从1.x到2.x。滚动升级不支持主版本。
步骤如下:
要将线上的elasticsearch 1.7.2 版本升级到 2.0.0版本。
elasticsearch提供了一个插件migration,来检测当前版本是否能升级到新版本。插件如果安装下文再说。如图所示:
可以检测到哪些索引有改变,需要注意。
第一步,将数据写入进程停止,如logstash、Filebeat、packetbeat、topbeat等
第二步,暂停分片分配
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | PUT / _cluster / settings { “persistent” : { “cluster.routing.allocation.enable” : “none” } } 输出内容: { “acknowledged” : true , “persistent” : { “cluster” : { “routing” : { “allocation” : { “enable” : “none” } } } } , “transient” : { } } |
第三步,做个快照备份
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 注册: PUT / _snapshot / backup { “type” : “fs” , “settings” : { “location” : “/trustauth.cn/bak/20151125” , “compress” : true } } 输出: { “acknowledged” : true } 创建快照: put / _snapshot / backup / snapshot_20151125 ? wait_for_completion = true 查看状态: GET / _snapshot / backup / snapshot_20151125 / _status { “snapshots” : [ { “snapshot” : “snapshot_20151125” , “repository” : “backup” , “state” : “STARTED” , “shards_stats” : { “initializing” : 556 , “started” : 2 , “finalizing” : 0 , “done” : 24 , “failed” : 0 , “total” : 582 } , “stats” : { “number_of_files” : 783 , “processed_files” : 762 , “total_size_in_bytes” : 794280101 , “processed_size_in_bytes” : 739330035 , “start_time_in_millis” : 0 , “time_in_millis” : 0 } , “indices” : { . . . . . . . . . “4” : { “stage” : “INIT” , “stats” : { “number_of_files” : 0 , “processed_files” : 0 , “total_size_in_bytes” : 0 , “processed_size_in_bytes” : 0 , “start_time_in_millis” : 0 , “time_in_millis” : 0 } , “node” : “F-PLO3hCShKI7mNuodmghQ” } } } } } ] } |
第四步,待上一步快照完成后停止各节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | GET / _snapshot / backup / snapshot_20151125 / _status { “snapshots” : [ { “snapshot” : “snapshot_20151125” , “repository” : “backup” , “state” : “SUCCESS” , . . . . . . . . 状态是 SUCCESS,说明快照完成了。 或者 GET / _snapshot / backup / _status { “snapshots” : [ ] } 说明目前没有正在执行的快照 |
停止elasticsearch进程。
第五步,下载安装新版本
第六步,待各节点都加入到集群后,重新开启分片分配
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 重新启动分配 PUT / _cluster / settings { “persistent” : { “cluster.routing.allocation.enable” : “all” } } 查看恢复状态: GET / _cat / recovery ? v index shard time type stage source_host target_host repository snapshot files files_percent bytes bytes_percent total_files total_bytes translog translog_percent total_translog filebeat – 2015.11.24 0 3161 snapshot done n / a trustauth.cn backup snapshot _20151125 16 100.0 % 7901095 100.0 % 16 7901095 0 100.0 % 0 filebeat – 2015.11.24 1 5874 snapshot done n / a trustauth.cn backup snapshot _20151125 34 100.0 % 8118852 100.0 % 34 8118852 0 100.0 % 0 filebeat – 2015.11.24 2 8155 snapshot done n / a trustauth.cn backup snapshot _20151125 37 100.0 % 8118949 100.0 % 37 8118949 0 100.0 % 0 filebeat – 2015.11.24 3 5747 snapshot done n / a trustauth.cn backup snapshot _20151125 31 100.0 % 7852163 100.0 % 31 7852163 0 100.0 % 0 filebeat – 2015.11.24 4 3537 snapshot done n / a trustauth.cn backup snapshot _20151125 13 100.0 % 7785124 100.0 % 13 7785124 0 100.0 % 0 filebeat – 2015.11.23 0 4654 snapshot done n / a trustauth.cn backup snapshot _20151125 34 100.0 % 7800272 100.0 % 34 7800272 0 100.0 % 0 filebeat – 2015.11.23 1 3637 snapshot done n / a trustauth.cn backup snapshot _20151125 16 100.0 % 7681675 100.0 % 16 7681675 0 100.0 % 0 |
第七步,开启第一步停掉的写入进程
文章转载来自:trustauth.cn