因为工作的原因,需要把elk从5.6升级到6.2虽然有滚动升级的存在,但是还是踩了很多的坑,其中最主要的原因就是对于elk的不了解导致的,所以建议所有在做elk升级的人,先去熟悉elk。具体流程如下:
首先是elastic search这个是升级中最关键的因为只有它是有状态的,涉及到存储,操作不好机毁人亡。
准备工作:
elastic search官网有正对具体情况给出的升级方案,可以按照那个流程去走
https://www.elastic.co/products/upgrade_guide
注意这里的6.0相关改变一定要看,一定要看。6.0的改变还是很多的,不去全盘了解,一定会踩坑。本人踩了一个。6.0之后es结构改变,不再支持单个索引下多个type的情况,当然它可以读,但是你写就写不进去了。看看自己的模板中是否有建立多个type的情况。接下来准备
elasticsearch 6.2.3
x-pax破解(这里有个不错的
破解教程,不要找什么破解版了,自己动手丰衣足食,也就是return掉他的一些判断而已)
kibana中有个升级助手可以用那个做一些操作
使用升级助手:
确定升级到6.0之前需要解决的问题。
升级内部Kibana索引。
升级内部X-Pack指数。
因为升级不能停止线上的es,所以采用滚动升级
具体升级步骤
1.禁用分片,防止不同分片多个版本
curl -XPUT 'localhost:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}
'
分片停止后开始进行按照包的替换,我采用建立一个elastic 的链接文件,然后不同版本的es链接到这个链接文件上,启动脚本进入这个链接文件启动es,不熟悉linux的可以理解为快捷方式。这里需要注意一下,es的配置,以及配置文件指定的data位置,这两个处理好了基本更新就可以大胆更新。
安装前复制之前的配置,config文件夹下面,关键的配置有两个:一个jvm.options,jvm的配置参数,一个elasticsearch.yml,es的相关配置。其中data文件也就是es的数据在elasticsearch.yml中会配置。
2.复制安装包到路径下
tar -zxvf kibana.tar.gz安装文件
安装x-pack,无网安装方式:
./bin/elasticsearch-plugin install file:///opt/x-pack-6.2.3.zip
替换破解包到/plugins/x-pack/x-pack-core下
重启es,启用新的版本的es:
其他节点重复之前的操作
3.分片启动:
curl -XPUT 'localhost:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}
'
'
第一次登陆:
curl -XPUT -u elastic 'http://192.168.1.116:9200/_xpack/license' -H "Content-Type: application/json" -d @license.json
初始用户名密码
elastic = changeme
ps:单个es升级之后记录日志便会出现问题,新版本的日志老版本会不认识
es 升级后kibana和logstash的升级就比较简单,因为他们是无状态的,他们中的x-pack不用进行破解