前一文费了老大劲闲扯了半天快照与恢复,就是为了本文升级做准备的。在升级前需考虑下面三件事:
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等
第二步,暂停分片分配
PUT /_cluster/settings{ "persistent": { "cluster.routing.allocation.enable": "none" }}输出内容:{ "acknowledged": true, "persistent": { "cluster": { "routing": { "allocation": { "enable": "none" } } } }, "transient": {}}
第三步,做个快照备份
注册:PUT /_snapshot/backup { "type": "fs", "settings": { "location": "/ttlsa.com/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" } } } } } ]}
第四步,待上一步快照完成后停止各节点
GET /_snapshot/backup/snapshot_20151125/_status{ "snapshots": [ { "snapshot": "snapshot_20151125", "repository": "backup", "state": "SUCCESS",........状态是SUCCESS,说明快照完成了。或者GET /_snapshot/backup/_status{ "snapshots": []}说明目前没有正在执行的快照
停止elasticsearch进程。
第五步,下载安装新版本
第六步,待各节点都加入到集群后,重新开启分片分配
重新启动分配PUT /_cluster/settings{ "persistent": { "cluster.routing.allocation.enable": "all" }}查看恢复状态:GET /_cat/recovery?vindex 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 localhost 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 localhost 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 localhost 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 localhost 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 localhost 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 localhost 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 localhost backup snapshot_20151125 16 100.0% 7681675 100.0% 16 7681675 0 100.0% 0
第七步,开启第一步停掉的写入进程
数据备份的意义就在于,当受到网络攻击、病毒入侵、电源故障或者操作失误等事故的发生后,可以完整、快速、简捷、可靠地恢复原有系统,在一定的范围内保障系统的正常运行。一些对备份数据重视程度较低的企业,一旦服务器数据出现突然丢失或者损坏,往往会悔莫及。在数据备份方面,...
服务器安全服务器数据
据 bleepingcomputer 消息,上周五,基于Java日志平台的 "Log4Shell "漏洞公开利用程序被发布。Log4j是一个开发框架,允许开发人员在他们的Java应用程序中添加错误及事件日志。该漏洞允许威胁者创建特殊的 JNDI 字符串,当 L...
漏洞服务器安全Log4Shell勒索软件
根据《ELK 产品支持的平台和软件》选定你所要安装的版本。这里将安装elasticsearch最新版本2.0.0。1. jdkelasticsearch只支持Oracle java 和 OpenJDK。在这里不再重复了,参见《ELK 部署指南》详细的不能再详细...
服务器运维ELkelasticsearchjavajdk