在 Linux 上启动 ZooKeeper 通常有几种方式,取决于你是 单机模式 还是 集群模式,以及是否使用自带脚本。
java -version
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz
cd apache-zookeeper-3.8.0-bin
zoo.cfgcp conf/zoo_sample.cfg conf/zoo.cfg
bin/zkServer.sh start
启动成功会看到类似:
ZooKeeper JMX enabled by default
Using config: /xxx/zookeeper/conf/zoo.cfg
Starting zookeeper ... STARTED
bin/zkServer.sh status
bin/zkServer.sh stop
bin/zkServer.sh start-foreground
适合排查启动失败问题。
sudo vim /etc/systemd/system/zookeeper.service
内容示例:
[Unit]
Description=Apache ZooKeeper
After=network.target
[Service]
Type=forking
User=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start zookeeper
sudo systemctl enable zookeeper
zoo.cfg 中配置:
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
在每个节点创建:
echo "1" > /data/myid # node1
echo "2" > /data/myid # node2
echo "3" > /data/myid # node3
然后每个节点执行:
bin/zkServer.sh start
✅ 端口被占用
2181✅ myid 配置错误(集群)
myid 必须和 server.x 对应✅ 数据目录不存在
dataDir=/data/zookeeper
如果你告诉我:
我可以给你更精确的启动方式。