在Ubuntu上配置Zookeeper的高可用性通常涉及以下几个关键步骤:
sudo apt update
sudo apt install openjdk-8-jdk
java -version # 验证Java是否安装成功
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
tar -xzvf apache-zookeeper-3.7.0-bin.tar.gz -C /opt
创建数据目录和日志目录:
sudo mkdir -p /opt/zookeeper/data
sudo mkdir -p /opt/zookeeper/logs
复制配置文件模板并编辑:
sudo cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
sudo nano /opt/zookeeper/conf/zoo.cfg
编辑zoo.cfg
文件,添加以下内容:
tickTime=2000
dataDir=/opt/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1 localhost:2888:3888
server.2 localhost:2889:3888
server.3 localhost:2900:3888
将server.1
, server.2
, server.3
替换为你的Zookeeper实例的主机名或IP地址。
配置myid文件:在每个Zookeeper实例的数据目录下创建一个myid
文件,内容为该实例的ID(与server.X
中的X
一致)。
echo "1" | sudo tee /opt/zookeeper/data/myid # 在server1上
echo "2" | sudo tee /opt/zookeeper/data/myid # 在server2上
echo "3" | sudo tee /opt/zookeeper/data/myid # 在server3上
cd /opt/zookeeper
sudo /opt/zookeeper/bin/zkServer.sh start
sudo /opt/zookeeper/bin/zkServer.sh status
你应该看到每个节点的状态为leader
或follower
。sudo ufw allow 2181/tcp
sudo ufw allow 2888/tcp
sudo ufw allow 3888/tcp
sudo ufw reload
echo stat | nc localhost 2181
/opt/zookeeper/logs
目录下。sudo nano /etc/systemd/system/zookeeper.service
在文件中添加以下内容:[Unit]
Description=Apache Zookeeper
After=network.target
[Service]
Type=forking
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
ExecReload=/opt/zookeeper/bin/zkServer.sh restart
User=root
Restart=on-failure
[Install]
WantedBy=multi-user.target
重新加载systemd并启用服务:sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
通过以上步骤,你可以在Ubuntu上配置一个高可用的Zookeeper集群。确保在实际部署前进行充分的测试和验证。