一、下载ZooKeeper
下载地址:https://zookeeper.apache.org/releases.html
这里我下载最新的3.6.2版本
二、部署
ZooKeeper有三种部署方式单机模式、伪集群模式、集群模式
为了保证节点挂掉时能正常的选举出Leader需要部署2n+1个节点
我使用两台虚拟机做测试,其中一台部署两个节点,另一台部署一个节点
2.1 将下载好的文件包放到/opt/apps/zookeeper文件夹中并解压缩,有教程说要配置环境变量方便命令操作,此处我不进行配置
2.2 为每个节点分配myid,该文件需要创建在zookeeper的dataDir目录下
echo "1" > /opt/apps/zookeeper/apache-zookeeper-3.6.2-bin/myid
改用docker部署
docker部署zookeeper 参照教程:https://www.cnblogs.com/LUA123/p/11428113.html
2.1 宿主机创建数据文件目录与配置文件目录
192.168.6.231 宿主机
节点1 :/opt/docker/zookeeper/1/conf
/opt/docker/zookeeper/1/data
节点2 :/opt/docker/zookeeper/2/conf
/opt/docker/zookeeper/2/data
192.168.6.232 宿主机
节点3 :/opt/docker/zookeeper/3/conf
/opt/docker/zookeeper/3/data
2.2 在conf文件夹中创建配置文件
配置文件名:zoo.cfg
节点1:
clientPort=2181
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=192.168.6.231:2888:3888
server.2=192.168.6.231:2889:3889
server.3=192.168.6.232:2888:3888
节点2:
clientPort=2182
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=192.168.6.231:2888:3888
server.2=192.168.6.231:2889:3889
server.3=192.168.6.232:2888:3888
节点3:
clientPort=2181
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=192.168.6.231:2888:3888
server.2=192.168.6.231:2889:3889
server.3=192.168.6.232:2888:3888
2.3 在data文件夹中创建id文件
echo 1 > /opt/docker/zookeeper/1/data/myid
echo 2 > /opt/docker/zookeeper/2/data/myid
echo 3 > /opt/docker/zookeeper/3/data/myid
2.4 下载docker镜像
一台服务器报错了:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
用以下两条命令重启了下好了
systemctl daemon-reload
systemctl restart docker.service
获取镜像 docker pull zookeeper
创建容器
docker run --network host -v /opt/docker/zookeeper/1/data:/data -v /opt/docker/zookeeper/1/conf:/conf --name zookeeper-2181 -d zookeeper
docker run --network host -v /opt/docker/zookeeper/2/data:/data -v /opt/docker/zookeeper/2/conf:/conf --name zookeeper-2182 -d zookeeper
docker run --network host -v /opt/docker/zookeeper/3/data:/data -v /opt/docker/zookeeper/3/conf:/conf --name zookeeper-2181 -d zookeeper
防火墙开放端口
firewall-cmd --permanent --add-port=2181/tcp --permanent
firewall-cmd --permanent --add-port=2182/tcp --permanent
firewall-cmd --permanent --add-port=2888/tcp --permanent
firewall-cmd --permanent --add-port=3888/tcp --permanent
firewall-cmd --permanent --add-port=2889/tcp --permanent
firewall-cmd --permanent --add-port=3889/tcp --permanent
重启防火墙
firewall-cmd --reload
查看端口监听,一切正常
使用zkui监控服务 发现四字命令不在白名单
修改zoo.cnf 添加允许四字命令配置
4lw.commands.whitelist=*