在Ubuntu上部署ZooKeeper服务涉及几个步骤,包括安装Java(因为ZooKeeper是用Java编写的)、下载ZooKeeper、配置ZooKeeper以及启动和验证服务。以下是详细的步骤:
ZooKeeper需要Java运行时环境。你可以使用以下命令安装OpenJDK:
sudo apt update
sudo apt install openjdk-11-jdk
验证Java安装:
java -version
从Apache ZooKeeper的官方网站下载最新版本的ZooKeeper。你可以使用wget
命令来下载:
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
下载完成后,解压文件到一个目录,例如/opt
:
sudo tar -xzvf apache-zookeeper-3.7.0-bin.tar.gz -C /opt
进入解压后的目录并重命名配置文件示例:
cd /opt/apache-zookeeper-3.7.0-bin/conf
cp zoo_sample.cfg zoo.cfg
编辑zoo.cfg
文件以进行基本配置:
nano zoo.cfg
在文件中添加或修改以下内容:
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
这里,tickTime
是ZooKeeper的基本时间单位(毫秒),dataDir
是存储数据的目录,clientPort
是客户端连接的端口,initLimit
和syncLimit
是Leader选举的超时时间,server.X
定义了集群中的服务器。
在dataDir
目录下创建一个名为myid
的文件,并在其中写入服务器的ID(与zoo.cfg
中的server.X
中的X
相同):
echo "1" | sudo tee /var/lib/zookeeper/myid
对于其他服务器,将1
替换为相应的ID(例如,2
或3
)。
在每个服务器上启动ZooKeeper服务:
/opt/apache-zookeeper-3.7.0-bin/bin/zkServer.sh start
检查ZooKeeper服务的状态:
/opt/apache-zookeeper-3.7.0-bin/bin/zkServer.sh status
你应该看到类似以下的输出,表示ZooKeeper服务正在运行:
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.7.0-bin/conf/zoo.cfg
Mode: Leader
确保防火墙允许ZooKeeper的端口(默认是2181和2888):
sudo ufw allow 2181
sudo ufw allow 2888
sudo ufw allow 3888
为了方便管理,可以将ZooKeeper配置为系统服务。创建一个新的服务文件:
sudo nano /etc/systemd/system/zookeeper.service
添加以下内容:
[Unit]
Description=Apache ZooKeeper Server
After=network.target
[Service]
Type=simple
User=nobody
ExecStart=/opt/apache-zookeeper-3.7.0-bin/bin/zkServer.sh start
ExecStop=/opt/apache-zookeeper-3.7.0-bin/bin/zkServer.sh stop
Restart=on-abort
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
验证服务状态:
sudo systemctl status zookeeper
通过以上步骤,你应该能够在Ubuntu上成功部署ZooKeeper服务。