sudo权限;Zookeeper依赖Java环境,需先安装OpenJDK(推荐11及以上版本):
sudo apt update
sudo apt install -y openjdk-11-jdk
验证Java安装是否成功:
java -version
输出应包含Java版本信息(如openjdk 11.0.xx),否则需检查安装过程。
从Apache官方镜像下载最新稳定版Zookeeper(如3.7.0),并解压至/opt目录(系统软件常用路径):
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
sudo tar -xzvf apache-zookeeper-3.7.0-bin.tar.gz -C /opt
为简化后续命令,可创建符号链接:
sudo ln -s /opt/apache-zookeeper-3.7.0-bin /opt/zookeeper
zoo.cfg(核心配置文件):cd /opt/zookeeper/conf
sudo cp zoo_sample.cfg zoo.cfg
zoo.cfg,修改关键参数(以单机模式为例):sudo nano zoo.cfg
修改以下内容(重点关注dataDir和clientPort):tickTime=2000 # Zookeeper基本时间单位(毫秒)
dataDir=/opt/zookeeper/data # 数据存储目录(需自定义)
clientPort=2181 # 客户端连接端口(默认2181)
initLimit=5 # Leader选举超时时间(单位:tickTime)
syncLimit=2 # Leader与Follower同步超时时间(单位:tickTime)
保存并退出(Ctrl+O→Enter→Ctrl+X)。根据zoo.cfg中的dataDir路径,创建数据存储目录及日志目录(可选):
sudo mkdir -p /opt/zookeeper/data
sudo chown -R $USER:$USER /opt/zookeeper # 修改目录所有者(避免权限问题)
为方便全局使用Zookeeper命令,将Zookeeper路径添加至系统环境变量:
echo 'export ZOOKEEPER_HOME=/opt/zookeeper' >> ~/.bashrc
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> ~/.bashrc
source ~/.bashrc # 使配置立即生效
进入Zookeeper的bin目录,执行启动脚本:
cd /opt/zookeeper/bin
./zkServer.sh start
若需后台运行,可添加&参数:
./zkServer.sh start &
jps # 应输出"QuorumPeerMain"(Zookeeper主进程)
./zkServer.sh status
正常输出应包含Mode: standalone(单机模式)或Mode: leader/follower(集群模式)。使用Zookeeper自带的命令行客户端连接服务端:
./zkCli.sh -server localhost:2181
连接成功后,输入ls /命令,应输出[zookeeper](根节点),表示连接正常。
若需Zookeeper随系统启动,可配置systemd服务:
sudo nano /etc/systemd/system/zookeeper.service
添加以下内容(根据实际路径调整):
[Unit]
Description=Apache ZooKeeper Server
After=network.target
[Service]
Type=simple
User=$USER
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
Restart=on-abort
[Install]
WantedBy=multi-user.target
保存后,执行以下命令启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
验证开机自启动状态:
sudo systemctl status zookeeper
zoo.cfg中添加集群节点信息(server.X=host:2888:3888),并在每个节点的dataDir下创建myid文件(内容为节点ID,如1、2);2181(客户端连接)、2888(Leader选举)、3888(数据同步)端口;nohup或systemd实现后台运行,并配置日志轮转。