首页 > 代码库 > elk升级文档

elk升级文档

1.kibana等都统一版本了,5.4版本的kibana要5.4版本的elasticsearch
2.现有架构:
logstash
logstash读取日志--------》内网redis做队列------------------》写入elasticsearch集群--------》kibana读取集群数据
3.升级版本要求:
Upgrade From Upgrade To Supported Upgrade Type
1.x 5.x Reindex to upgrade
2.x 2.y Rolling upgrade (where y > x)
2.x 5.x Full cluster restart
5.0.0 pre GA 5.x Full cluster restart
5.x 5.y Rolling upgrade (where y > x)
不同主版本之间需要全部关停升级,同一个主版本可以短时间不同小版本es之间运行,高版本的es不会像低版本的同步shards
4.升级注意事项
/etc/sysctl.conf
vm.max_map_count = 262144
 
/etc/security/limits.conf
* soft nofile 655350
* hard nofile 655360
还有应用到的参数,很多改变了,需要提前修改
 
升级步骤:
1.配置项变更
2.禁用自动分片 disabled shard allocation
curl -XPUT ‘localhost:9200/_cluster/settings?pretty‘ -H ‘Content-Type: application/json‘ -d‘
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}
 
3.将内存数据同步到磁盘
curl -XPOST ‘localhost:9200/_flush/synced?pretty‘
A synced flush request is a “best effort” operation. It will fail if there are any pending indexing operations, but it is safe to reissue the request multiple times if necessary.
 
4.关闭节点,执行升级
升级详细步骤:
tips:这里是源码包升级
(1)解压到安装目录,不要覆盖原程序目录
(2)从老程序复制config下面的文件到新程序中
  • Either copy the files in the  directory from your old installation to your new installation, or set the environment variable  to the location of the  file and use the  option on the command line to point to an external config directory.
(3)复制老程序/data目录下的数据到新目录到新的数据目录或者改改路径到老目录
  • Either copy the files in the  directory from your old installation to your new installation, or configure the location of the data directory in the  file, with the  setting.
(4)更新所有插件
Elasticsearch plugins must be upgraded when upgrading a node. Use the  script to install the correct version of any plugins that you need.
5.启用节点,开始自动分片(会先变为yellow状态,最后变绿),查看是否加入集群
Start the now upgraded node and confirm that it joins the cluster by checking the log file or by checking the output of this request:
curl -XGET ‘localhost:9200/_cat/nodes?pretty‘
 
6.重新开始分片Reenable shard allocation
Once the node has joined the cluster, reenable shard allocation to start using the node:
curl -XPUT ‘localhost:9200/_cluster/settings?pretty‘ -H ‘Content-Type: application/json‘ -d‘
{
"transient": {
"cluster.routing.allocation.enable": "all"
}
}
7.等集群恢复 Wait for the node to recover
ou should wait for the cluster to finish shard allocation before upgrading the next node. You can check on progress with the  request。
查看集群状态是否正确:
curl -XGET ‘localhost:9200/_cat/health?pretty‘
 
论点:
问题1
目前只有在1.x里创建的索引升5.x才需要重建数据。如果是2.x -> 5.x无需重建数据,可以比较平滑的升级。 如果不幸就是用的1.x,那么分场景。 数据规模大的场景通常是日志型应用,一般按天创建索引,那么可以先升级到2.x,然后等一段时间,直到1.x里创建的索引退化到没有用可以删除以后,再升级到5.x。 其他用作垂直搜索的场景,只能重新索引数据了,但是这种场景里数据规模一般不是太大,重新索引耗时不会太多。
 
升级本身做好准备的话很快,停机做集群full restart,1小时不到集群就可以恢复到yellow状态,重新投入使用,恢复到green状态则可能需要数小时。
snapshot and restore官方有提供一个升级兼容性检测工具: https://github.com/elastic/elasticsearch-migration/。 这个工具可以发现不兼容的集群配置项,这些配置项需要在部署5.x的时候按照建议做相应的修改。另外如果集群里有1.x创建的索引,这个工具也会指出来,并且可以直接在界面上点点按钮做reindex。
 
not_analyzed字段升级后依然是string / not_analyzed,并不会自动改成keyword,但是5.x可以兼容这个字段类型,数据写入没问题。
 
迁移帮助工具(elasticsearch-migration)
 
 
参考文档:
https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html#upgrade-node
 
 

elk升级文档