如何在Ubuntu上更新Zookeeper
升级前必须备份Zookeeper的数据目录和配置文件,避免操作失误导致数据丢失。默认路径如下:
/var/lib/zookeeper/etc/zookeeper/conf使用以下命令完成备份:
sudo cp -R /var/lib/zookeeper /var/lib/zookeeper-backup
sudo cp -R /etc/zookeeper /etc/zookeeper-backup
通过systemctl命令安全停止正在运行的Zookeeper服务:
sudo systemctl stop zookeeper
若当前Zookeeper通过APT包管理器安装,建议先卸载旧版本以清理残留文件:
sudo apt-get remove --purge zookeeper zookeeperd
前往Apache ZooKeeper官方网站(https://zookeeper.apache.org/releases.html)下载目标版本的二进制包(如apache-zookeeper-3.8.0-bin.tar.gz),推荐使用wget命令:
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
将下载的二进制包解压至/opt目录(常用软件安装路径),并重命名文件夹以便管理:
sudo tar -xzf apache-zookeeper-3.8.0-bin.tar.gz -C /opt
sudo mv /opt/apache-zookeeper-3.8.0-bin /opt/zookeeper
data子目录(需确保新版本目录结构存在):sudo mkdir -p /opt/zookeeper/data
sudo mv /var/lib/zookeeper/* /opt/zookeeper/data/
conf目录下的zoo.cfg是否有新增配置项(如autopurge.snapRetainCount、autopurge.purgeInterval等),合并旧配置与新配置:sudo cp /etc/zookeeper/conf/zoo.cfg /opt/zookeeper/conf/
若需通过systemctl管理新版本服务,需创建或修改服务文件(如/etc/systemd/system/zookeeper.service),内容参考以下模板:
[Unit]
Description=Apache ZooKeeper Server
After=network.target
[Service]
Type=forking
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
Restart=on-failure
User=zookeeper
Group=zookeeper
[Install]
WantedBy=multi-user.target
然后重新加载systemd并启动服务:
sudo systemctl daemon-reload
sudo systemctl start zookeeper
sudo systemctl enable zookeeper  # 设置开机自启
sudo systemctl status zookeeper
正常输出应显示“active (running)”。echo stat命令向ZooKeeper发送状态请求,确认版本信息:echo stat | nc localhost 2181
输出中应包含新版本号(如Znode version: 3.8.0)。sudo systemctl stop zookeeper
sudo rm -rf /opt/zookeeper /var/lib/zookeeper /etc/zookeeper
sudo cp -R /opt/zookeeper-backup /opt/zookeeper
sudo cp -R /etc/zookeeper-backup /etc/zookeeper
sudo systemctl start zookeeper