1. 前期准备:备份与兼容性检查
升级前必须备份现有配置和数据,避免操作失误导致数据丢失。同时需确认新版本与当前环境的兼容性(如Java版本、Debian版本、应用程序依赖)。
sudo cp -r /var/lib/zookeeper /var/lib/zookeeper_backup
sudo cp /etc/zookeeper/conf/zoo.cfg /etc/zookeeper/conf/zoo.cfg_backup
java -version
验证);myid
文件格式等是否发生变化。2. 下载并解压新版本Zookeeper
访问Zookeeper官方网站(https://archive.apache.org/dist/zookeeper/
)下载目标版本的二进制包(如apache-zookeeper-3.8.0-bin.tar.gz
),解压至/opt
目录(推荐路径,便于管理):
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
sudo tar -xzf apache-zookeeper-3.8.0-bin.tar.gz -C /opt
解压后,/opt
目录下会生成apache-zookeeper-3.8.0-bin
文件夹,包含新版本的二进制文件和配置模板。
3. 停止当前Zookeeper服务
升级前必须停止正在运行的Zookeeper服务,防止数据损坏:
sudo systemctl stop zookeeper
通过sudo systemctl status zookeeper
确认服务已停止(显示"inactive (dead)")。
4. 替换旧版本文件并创建符号链接
/var/lib/zookeeper
(数据目录)和/etc/zookeeper
(配置目录)移动至备份路径:sudo mv /var/lib/zookeeper /var/lib/zookeeper_old
sudo mv /etc/zookeeper /etc/zookeeper_old
sudo ln -s /opt/apache-zookeeper-3.8.0-bin/data /var/lib/zookeeper # 数据目录
sudo ln -s /opt/apache-zookeeper-3.8.0-bin/conf /etc/zookeeper/conf # 配置目录
此步骤确保Zookeeper服务仍能通过原路径访问数据,无需修改服务配置。5. 更新配置文件
zoo.cfg
复制到配置目录,覆盖旧配置(保留旧配置中的自定义参数,如clientPort
、dataDir
):sudo cp /opt/apache-zookeeper-3.8.0-bin/conf/zoo.cfg /etc/zookeeper/conf/
zoo.cfg
文件,重点关注以下参数是否需要调整:
server.X
列表(集群节点IP和端口,需与各节点myid
文件中的ID一致);tickTime
、initLimit
、syncLimit
等集群参数(新版本可能调整默认值);autopurge.snapRetainCount
、autopurge.purgeInterval
等)。6. 启动新版本Zookeeper服务
启动服务并检查状态,确保无报错:
sudo systemctl start zookeeper
sudo systemctl status zookeeper
若状态显示"active (running)",则说明服务启动成功。
7. 验证升级结果
echo ruok | nc localhost 2181
命令,若返回imok
,则表示Zookeeper服务正常运行。zkCli.sh
连接服务器,执行stat
命令查看集群状态(如Leader/Follower角色、同步状态):/opt/apache-zookeeper-3.8.0-bin/bin/zkCli.sh -server localhost:2181
stat
若输出中包含"Mode: leader"或"Mode: follower",则说明集群状态正常。8. 清理旧版本文件
确认新版本运行稳定后,删除备份的旧版本目录和下载的压缩包,释放磁盘空间:
sudo rm -rf /var/lib/zookeeper_old
sudo rm -rf /etc/zookeeper_old
sudo rm apache-zookeeper-3.8.0-bin.tar.gz
若不再需要旧版本,也可删除/opt
目录下的旧版本文件夹(如apache-zookeeper-3.7.0-bin
)。
注意事项
myid
文件与新版本server.X
列表的一致性;/var/log/zookeeper/zookeeper.out
),观察是否有异常报错;