1、环境介绍
说明:因为老版本的EFKK集群存在许多的漏洞,所以打算对EFKK集群进行升级
软件 | 旧版本 | 新版本 |
---|---|---|
es | 7.5.1 | 7.17.7 |
kibana | 7.5.1 | 7.17.7 |
logstash | 6.6.2 | 7.17.7 |
filebeat | 6.6.2 | 7.17.7 |
kafka | 2.2.1 | 3.3.1 |
zk | 3.6.2 | 3.6.2 |
2、升级规划
EFKK集群升级部署如下
- 升级es集群
- 升级logstash
- 升级kibana
- 升级filebeat
- 升级kakfa
3、下载软件包
说明:因为我们的老EFKK集群使用的是源码包安装的,所以新集群也使用源码包安装
# es
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.7-linux-x86_64.tar.gz
# logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.7-linux-x86_64.tar.gz
# kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.7-linux-x86_64.tar.gz
# filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.7-linux-x86_64.tar.gz
# kafka
wget --no-check-certificate https://dlcdn.apache.org/kafka/3.3.1/kafka_2.13-3.3.1.tgz
# zk
wget https://downloads.apache.org/zookeeper/stable/apache-zookeeper-3.6.3-bin.tar.gz
4、升级es集群
注意:一定要先升级非主节点,最后再升级主节点,切记,否则可能导致集群不可用
es集群升级方式有两种:
- 滚动更新,升级过程中不会影响到业务
- 停服更新,会影响到业务的使用
大家可以根据实际情况选择更新的方式,我这里选择使用滚动更新的方式
es版本升级说明
es版本升级必须依次从5.6升级到6.8,再升级到7.17
所以你的es版本低于6.8,则必须先升级6.8,再升级到7.17
因为我的版本是7.5.1,所以可以直接升级到7.17.7
具体的版本兼容性参考官方
https://www.elastic.co/cn/support/matrix#matrix_compatibility
解压软件包
tar xf elasticsearch-7.17.7-linux-x86_64.tar.gz -C /opt
cd /opt/elasticsearch-7.17.7
复制旧版本的配置文件到新版本中
cp -r /opt/elasticsearch-7.5.1/config/{jvm.options,elasticsearch.yml} config/
elasticsearch.yml的配置如下:
cluster.name: elk
node.name: node-1
path.data: /opt/elasticsearch-7.5.1/data
path.logs: /opt/elasticsearch-7.5.1/logs
network.host: 192.168.96.10
http.port: 9200
discovery.seed_hosts: ["192.168.96.10", "192.168.96.20", "192.168.96.30"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
action.destructive_requires_name: true
es数据迁移
复制旧版本的data目录下的数据到新版本的data目录中,或者直接修改elasticsearch.yml中的path.data和path.logs的路径到旧版本对应的目录中
我这里是直接修改配置文件中的data和logs路径到老版本对应的路径中
修改新版本es的目录权限为es,这个根据你的实际情况修改
chown -R es.es /opt/elasticsearch-7.17.7/
查看es集群的节点信息,带有*号的是主节点
GET _cat/nodes
禁用集群的自动分片
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
将内存数据刷新到磁盘中
POST _flush/synced
开始做升级,先升级非主节点,关闭es服务
# 查询es服务
ps -ef | grep elasticsearch
# 关闭服务
kill $PID
# 启动新es服务
/opt/elasticsearch-7.17.7/bin/elasticsearch -d
# 查看服务状态,确认是否正常启动
ps -ef | grep elasticsearch
查看节点是否正常加入集群
GET _cat/nodes
开启集群自动分片
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": null
}
}
查看节点版本信息
GET /_cat/nodes?h=ip,name,version&v=true
查看集群状态信息
GET _cat/health?v=true
这里的集群状态会变成yellow,经过一段时间的自动分片,会变成green,这个时间取决于你的es集群的数据量大小,像我这里1T的数据,大概消耗了1个小时左右
等到集群的状态变成green后 ,就可以开始升级后面的节点了,部署和上面的一样,最好升级主节点即可
说明:如果你使用的是停服更新,升级的步骤是一样的,就是在停止服务的时候,将整个集群都停止,再用新服务启动即可
5、升级logstash
解压软件包
tar xf logstash-7.17.7-linux-x86_64.tar.gz -C /opt
cd /opt/logstash-7.17.7
复制旧版本的配置文件到新版本中
cp -r /opt/logstash-6.6.2/config/{logstash-es.json,kafka-es.conf} config/
升级logstash
# 查看logstash服务进程
ps -ef|grep logstash
# 停止logstash服务
kill $PID
# 启动新服务
./bin/logstash -f config/kafka-es.conf &
# 查看logstash服务是否启动成功
ps -ef|grep logstash
6、升级kibana
解压软件包
tar xf kibana-7.17.7-linux-x86_64.tar.gz -C /opt
cd /opt/kibana-7.17.7-linux-x86_64
复制旧版本的配置文件和数据到新版本中
cp -r /opt/kibana-7.5.1/config/kibana.yml config/
cp -r /opt/kibana-7.5.1/data/* data/
升级kibana
# 添加kibana用户,用来启动kibana服务
useradd kibana
# 修改新服务目录的权限
chown -R kibana.kibana /opt/kibana-7.17.7-linux-x86_64
# 查看kibana服务进程
ps -ef|grep kibana
# 停止kibana服务
kill $PID
# 启动新服务
su - kibana
/opt/kibana-7.17.7-linux-x86_64/bin/kibana &
# 查看kibana服务是否启动成功
ps -ef|grep kibana
6、升级filebeat
解压软件包
tar xf filebeat-7.17.7-linux-x86_64.tar.gz -C /opt
cd /opt/filebeat-7.17.7-linux-x86_64
复制旧版本的配置文件到新版本中
cp -r /opt/filebeat-6.6.2/filebeat.yml ./
配置文件报错处理
Exiting: 1 error: setting ‘filebeat.prospectors’ has been removed
修改:将filebeat.yml中 filebeat.prospectors 换成 filebeat.inputs 即可解决
升级filebeat
# 查看filebeat服务进程
ps -ef|grep filebeat
# 停止filebeat服务
kill $PID
# 启动新服务
./filebeat -c filebeat.yml &
# 查看filebeat服务是否启动成功
ps -ef|grep filebeat
7、升级kafka
说明:因为本次升级zookeeper版本没有变化,故不需要升级,只需升级kafka即可
解压软件包
tar xf kafka_2.13-3.3.1.tgz -C /opt
cd /opt/kafka_2.13-3.3.1/
复制旧版本的配置文件和数据到新版本中
cp -r /opt/kafka-2.2.1/config/server.properties config/
# 数据迁移
数据可以copy到新版本目录中,或者新版本中直接使用旧版本的数据目录
我这里直接使用旧版本的数据目录
升级kafka
# 查看kafka服务进程
ps -ef | grep kafka
# 停止kafka服务
./bin/kafka-server-stop.sh
# 启动kafka服务
./bin/kafka-server-start.sh config/server.properties -d
# 查看kafka服务
ps -ef | grep kafka
# 查询kafka中topic,验证服务是否正常
/opt/kafka_2.13-3.3.1/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
至此整个EFKK集群升级完毕!
评论区