zookeeper集群

三台主机:

  • 主机一:172.16.3.52

  • 主机一:172.16.3.63

  • 主机一:172.16.3.64

1、下载镜像

docker pull zookeeper:3.4.12

2、在主机上建立挂载目录和zookeeper配置文件

mkdir -p /home/data/zookeeper_data/conf \
mkdir -p /home/data/zookeeper_data/data \
cd /home/data/zookeeper_data/conf
touch zoo.cfg
vi zoo.cfg

三台主机上的zoo.cfg配置信息如下:

clientPort=2181
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.0=172.16.3.52:2888:3888
server.1=172.16.3.63:2888:3888
server.2=172.16.3.64:2888:3888

3、在主机一上为自己分配server id,命令如下:

cd /home/data/zookeeper_data/data
echo "0" > myid

在主机二上为自己分配server id,命令如下:

cd /home/data/zookeeper_data/data
echo "1" > myid

在主机二上为自己分配server id,命令如下:

cd /home/data/zookeeper_data/data
echo "2" > myid

4、三台主机依次启动容器:

docker run  --restart=always --network host -v /home/data/zookeeper_data/data:/data -v /home/data/zookeeper_data/conf:/conf --name zookeeper -d zookeeper:3.4.12

命令说明:

  • --network host: 使用主机上的网络配置,如果不用这种模式,而用默认的bridge模式,会导致容器跨主机间通信失败

  • -v /data/zookeeper_data/data:/data:主机的数据目录挂载到容器/data下

  • -v /data/zookeeper_data/conf:/conf: 主机的配置目录挂载到容器的/conf下,容器内的zkServer.sh默认会读取/conf/zoo.cfg下的配置

都启动完成后,每台主机的2181/2888/3888端口都会开放出来了

5、验证

docker exec -it 容器id /bin/bash
docker logs 容器id/容器名称

使用windows工具zoolnspector

6、排错 前面两台发现没有问题,后面有台机器报错。 权限不足,发现用户不一样:

[root@bogon conf]# id
#不能启动的主机用户
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
#正常的主机用户
uid=0(root) gid=0(root) 组=0(root)

根据后面的信息我查到是因为selinux的原因。

[root@bogon conf]# docker logs -f 19f5e6824a57
chown: /data: Permission denied
chown: /data: Permission denied

这是因为开启了SELinux,解决办法: ①直接将SELinux的工作模式设置成 disabled,这样就不会出现策略拦截问题了,但是这样的话我们的系统就没有SELinux安全防护了

②通过 restorecon 或者 chcon 命令来修复我们的文件上下文信息

命令 restorecon 可以用来恢复文件默认的上下文:

restorecon -R -v /home/data/zookeeper_data/ 

//-R 表示递归,如果是目录,则该目录下的所有子目录、文件都会得到修复   命令 chcon 可以改变文件的上下文信息,通常我们使用一个参照文件来进行修改:

chcon --reference=/var/www/html/index.html /var/www/html/test.html
restorecon -v zoo.cfg

Last updated