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,命令如下:

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

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

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

命令说明:

  • --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、验证

使用windows工具zoolnspector

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

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

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

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

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

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

Last updated