下面给你一份Linux 下 ZooKeeper 配置与启动的简明实战指南,适用于 ZooKeeper 3.x(如 3.7 / 3.8 / 3.9),单机 & 集群都覆盖。
ZooKeeper 依赖 Java:
java -version
若未安装(以 CentOS 为例):
yum install -y java-1.8.0-openjdk
推荐 JDK 8 或 11。
cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.2/apache-zookeeper-3.8.2-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.2-bin.tar.gz
mv apache-zookeeper-3.8.2-bin zookeeper
mkdir -p /data/zookeeper
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
最小配置示例:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
/opt/zookeeper/bin/zkServer.sh start
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
看到:
WatchedEvent state:SyncConnected
说明成功。
假设 3 台机器:
192.168.1.10
192.168.1.11
192.168.1.12
zoo.cfgtickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.1.10:2888:3888
server.2=192.168.1.11:2888:3888
server.3=192.168.1.12:2888:3888
每台机器:
# 192.168.1.10
echo 1 > /data/zookeeper/myid
# 192.168.1.11
echo 2 > /data/zookeeper/myid
# 192.168.1.12
echo 3 > /data/zookeeper/myid
/opt/zookeeper/bin/zkServer.sh start
/opt/zookeeper/bin/zkServer.sh status
输出示例:
Mode: leader
Mode: follower
| 参数 | 说明 |
|---|---|
| tickTime | 基础时间单位(ms) |
| initLimit | follower 初始化连接超时 |
| syncLimit | 同步超时 |
| dataDir | 数据目录 |
| clientPort | 客户端端口 |
| maxClientCnxns | 单 IP 最大连接数 |
示例:
maxClientCnxns=60
vi /etc/systemd/system/zookeeper.service
[Unit]
Description=ZooKeeper
After=network.target
[Service]
Type=forking
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
User=root
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable zookeeper
systemctl start zookeeper
查看日志:
/opt/zookeeper/bin/zookeeper.out
netstat -tunlp | grep 2181
firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --reload
如果你需要:
可以直接告诉我你的使用场景。