侧边栏壁纸
博主头像
背锅小王子博主等级

我从事运维工作有十年之久,主要从事云原生相关的工作,对k8s、devops、servicemesh、可观察性等较为熟悉!

  • 累计撰写 59 篇文章
  • 累计创建 64 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录
ELK

如何升级EFKK日志收集平台

背锅小王子
2022-11-26 / 0 评论 / 0 点赞 / 214 阅读 / 1,737 字
温馨提示:
本文最后更新于 2022-11-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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集群升级完毕!

0

评论区