在分布式系统中,ZooKeeper是一个关键的组件,用于协调和管理多个节点之间的状态。本文将详细介绍如何使用Docker安装和部署ZooKeeper,包括非集群部署和集群部署两种情况。
非集群部署
前期准备
在开始之前,请确保你已经安装了Docker,并且拥有sudo权限。
-
关闭防火墙和SELinux:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo setenforce 0
sed -i "s|SELINUX=enforcing|SELINUX=disabled|g" /etc/selinux/config
拉取镜像和创建目录
docker pull zookeeper:3.4
mkdir -p /data/zookeeper/{conf,data,logs}
添加配置
创建并编辑 /data/zookeeper/conf/zoo.cfg
文件,添加以下内容:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data
clientPort=2181
maxClientCnxns=0
autopurge.purgeInterval=1
dataLogDir=/datalog
启动ZooKeeper
运行以下命令启动ZooKeeper容器:
docker run -d --net=host --name zookeeper --restart=always \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
-v /data/zookeeper/conf:/conf \
-v /data/zookeeper/data/:/data \
-v /data/zookeeper/logs:/datalog \
zookeeper:3.4
集群部署
前期准备
同样地,在所有节点执行以下操作:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo setenforce 0
sed -i "s|SELINUX=enforcing|SELINUX=disabled|g" /etc/selinux/config
创建目录和添加配置
每个节点执行以下命令:
mkdir -p /data/zookeeper/{conf,data,logs}
编辑 /data/zookeeper/conf/zoo.cfg
文件,在每个节点上修改以下内容:
clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
server.1=10.8.16.83:2888:3888
server.2=10.8.16.84:2888:3888
server.3=10.8.17.32:2888:3888
创建标识文件
每个节点执行以下命令:
echo "1" >/data/zookeeper/data/myid
将数字 1 替换为节点的ID,分别在每个节点上执行。
启动ZooKeeper集群
在每个节点上执行以下命令启动ZooKeeper容器:
docker run -d --net=host --name zookeeper --restart=always \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
-v /data/zookeeper/conf:/conf \
-v /data/zookeeper/data/:/data \
-v /data/zookeeper/logs:/datalog \
zookeeper:3.4
验证和常用命令
验证ZooKeeper集群状态
在任意节点上运行以下命令验证ZooKeeper集群状态:
docker exec -it zookeeper /zookeeper-3.4.14/bin/zkServer.sh status
ZooKeeper常用命令
连接到ZooKeeper容器并执行以下命令进行操作:
docker exec -it zookeeper /zookeeper-3.4.14/bin/zkCli.sh -server localhost:2181
在交互式命令行下,可以执行以下常用命令:
ls /
:查看指定路径下的节点create /zk mydata
:创建一个节点get /zk
:显示指定路径下节点的信息set /zk "anotherData"
:设置节点的内容delete /zk
:删除一个节点
除此之外,还有一些四字母命令可以用于监控和管理ZooKeeper集群:
conf
:查看ZooKeeper服务的配置信息stat
:查看客户端与ZooKeeper连接的简要信息srvr
:查看ZooKeeper服务的详细信息cons
:查看客户端与ZooKeeper连接的详细信息mntr
:查看ZooKeeper服务的当前性能状况