Zookeeper 部署分为单体和集群两种,本文为单体部署。
本文安装的 Linux 发行版是 RHEL 9,可能其他发行版会略有不同。
创建专属帐号:
sudo groupadd zookeeper
sudo useradd -g zookeeper -m -s /sbin/nologin zookeeper
下载安装包:
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
解压:
sudo tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz -C /usr/local/
sudo mv /usr/local/apache-zookeeper-3.8.4-bin /usr/local/zookeeper
设置目录权限:
sudo chown -R zookeeper:zookeeper /usr/local/zookeeper
创建数据与日志目录:
cd /usr/local/zookeeper/
sudo mkdir {data,logs}
sudo chown -R zookeeper:zookeeper data
sudo chown -R zookeeper:zookeeper logs
创建配置文件:
cd conf
sudo cp zoo_sample.cfg zoo.cfg
sudo vim zoo.cfg
修改配置:
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
运行:
sudo -u zookeeper ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
如果运行出错,显示找不到 JAVA_HOME,可以参考文章。
查看状态:
sudo -u zookeeper ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone
查看是否正常监听端口:
netstat -tuln | grep 2181
防火墙放行对应端口给局域网:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" port port="2181" protocol="tcp" accept'
重新加载防火墙策略:
sudo firewall-cmd --reload
sudo firewall-cmd --list-rich-rules
配置 Systemd 服务
创建服务文件:
sudo vim /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache ZooKeeper
After=network.target
[Service]
Environment="JAVA_HOME=/usr/lib/jvm/jdk22"
Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
User=zookeeper
Group=zookeeper
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
PIDFile=/run/zookeeper/zookeeper.pid
Restart=on-failure
RestartSec=5s
RemainAfterExit=no
[Install]
WantedBy=multi-user.target
创建 PID 目录并授权:
sudo mkdir -p /run/zookeeper
sudo chown zookeeper:zookeeper /run/zookeeper
sudo chmod 755 /run/zookeeper
修改启动脚本/usr/local/zookeeper/bin/zkServer.sh
,在启动命令后添加 PID 文件生成:
echo $! > /run/zookeeper/zookeeper.pid
重新加载服务列表:
sudo systemctl daemon-reload
停止当前应用:
sudo -u zookeeper ./zkServer.sh stop
启动服务:
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
sudo systemctl status zookeeper
文章评论