CentOS系统Zookeeper版本升级指南(以手动升级为例)
升级前必须备份Zookeeper的数据目录和配置文件,防止操作失误导致数据丢失。执行以下命令:
# 停止Zookeeper服务
systemctl stop zookeeper
# 备份数据目录(默认路径/var/lib/zookeeper)
cp -r /var/lib/zookeeper /var/lib/zookeeper-backup
# 备份配置文件(默认路径/etc/zookeeper/conf/zoo.cfg)
cp /etc/zookeeper/conf/zoo.cfg /etc/zookeeper/conf/zoo.cfg-backup
访问Apache ZooKeeper官方Releases页面(https://zookeeper.apache.org/releases.html),选择目标版本(如3.7.0),下载对应Linux版本的二进制包(apache-zookeeper-X.Y.Z-bin.tar.gz)。使用wget命令下载示例:
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
Zookeeper 3.5及以上版本要求JDK 8或更高版本,3.6及以上版本支持JDK 11+。升级前通过java -version确认JDK版本是否符合要求,避免兼容性问题。
将下载的二进制包解压到/opt目录(常用软件安装路径),并重命名文件夹以便管理:
# 解压到/opt目录
tar -xzf apache-zookeeper-3.7.0-bin.tar.gz -C /opt
# 重命名文件夹
mv /opt/apache-zookeeper-3.7.0-bin /opt/zookeeper
若原Zookeeper通过符号链接指向旧版本,需更新链接以指向新版本,避免修改系统配置:
# 删除旧符号链接(若有)
rm -f /var/lib/zookeeper /etc/zookeeper/conf
# 创建新符号链接
ln -s /opt/zookeeper/data /var/lib/zookeeper
ln -s /opt/zookeeper/conf /etc/zookeeper/conf
将旧版本的数据目录和配置文件复制到新版本对应路径,保留原有数据:
# 复制数据目录(确保新版本使用旧数据)
cp -r /var/lib/zookeeper-backup/* /opt/zookeeper/data/
# 复制配置文件(保留旧配置,仅修改必要项)
cp /etc/zookeeper/conf/zoo.cfg-backup /opt/zookeeper/conf/zoo.cfg
检查新版本conf/zoo.cfg中的新增配置项(如autopurge.snapRetainCount、autopurge.purgeInterval等),根据需求调整。例如,3.7.0版本默认开启自动清理,可保留默认配置或根据集群规模修改:
# 编辑配置文件
vi /opt/zookeeper/conf/zoo.cfg
停止旧版本服务,启动新版本并设置开机自启:
# 停止旧服务
systemctl stop zookeeper
# 启动新服务
systemctl start zookeeper
# 设置开机自启
systemctl enable zookeeper
通过以下命令确认服务状态和版本信息:
# 检查服务状态
systemctl status zookeeper
# 使用zkCli.sh连接并查看版本
/opt/zookeeper/bin/zkCli.sh -server localhost:2181 version
若输出显示新版本号(如3.7.0)且服务状态为active (running),则升级成功。
若Zookeeper部署为集群模式(3或5节点),需采用滚动升级策略(每次升级一个节点),确保集群多数节点(Quorum)始终可用,避免服务中断。步骤如下:
zkServer.sh status查看状态)。zkCli.sh连接集群,执行ls /等命令验证数据一致性和服务可用性。zkCli.sh dump命令导出数据(可选但推荐),便于升级失败时恢复。/opt/apache-zookeeper-old-bin、/var/lib/zookeeper-backup),释放磁盘空间。