落日余晖

Zookeeper 版本升级

Zookeeper 集群如果是 3 个节点以上的集群,那么可以采用不停业务滚动升级的方式进行版本升级,先对 follower 节点进行升级,最后对 leader 节点进行升级,可以使用以下命令查询当前节点状态。

~/app/apache-zookeeper-3.6.3-bin/bin/zkServer.sh status

将新版本的安装包上传到服务器进行解压到安装目录中。

tar -xzvf apache-zookeeper-3.8.4-bin.tar.gz -C ~/app

复制配置文件和相关依赖到新版本的安装目录中。

cp ~/app/apache-zookeeper-3.6.3-bin/lib/{kafka-clients-3.2.0.jar,lz4-java-1.8.0.jar} ~/app/apache-zookeeper-3.8.4-bin/lib
cp ~/app/apache-zookeeper-3.6.3-bin/conf/{zk_server_jaas.conf,zoo.cfg,java.env} ~/app/apache-zookeeper-3.8.4-bin/conf

修改 ~/app/apache-zookeeper-3.8.4-bin/conf/zoo.cfg 配置文件中的 Zookeeper 数据保存目录。

sed -i 's/3.6.3/3.8.4/g' ~/app/apache-zookeeper-3.8.4-bin/conf/zoo.cfg

根据 zoo.cfg 配置文件中的 dataDir 配置项决定数据目录路径,例如文档中的集群数据目录为安装目录下的 data 目录,修改完成后,创建数据目录,并将 myid 文件复制到数据目录下。

mkdir ~/app/apache-zookeeper-3.8.4-bin/data
cp ~/app/apache-zookeeper-3.6.3-bin/data/myid ~/app/apache-zookeeper-3.8.4-bin/data

停止旧版本实例的运行。

~/app/apache-zookeeper-3.6.3-bin/bin/zkServer.sh stop

启动新版本实例的运行。

~/app/apache-zookeeper-3.8.4-bin/bin/zkServer.sh start

检查实例运行状态。

~/app/apache-zookeeper-3.8.4-bin/bin/zkServer.sh status

按照上面步骤依次完成 follower 节点以及 leader 节点的升级后,检查 Kafka 之类依赖 Zookeeper 的组件是否正常。

kafka-topics.sh \\
	--command-config /data/aspire/kafka/kafka_2.13-3.2.0/config/sasl_command_config.properties \\
	--bootstrap-server 10.17.8.97:9092,10.17.8.98:9092,10.17.8.99:9092 \\
	--list

如果 Kafka 集群没有启用 SASL 验证,那么可以去除上面命令中的 --command-config 行。