centos7 docker 安装 zookeeper 3.4.13 集群

假设三台主机的ip分别为:

  • 主机一:192.168.0.168
  • 主机二:192.168.0.169
  • 主机三:192.168.0.170

三台主机的安装步骤相似,以主机一为例:

1. 查找zookeeper镜像:

docker search zookeeper

4. 下载官方zookeeper镜像:

docker pull docker.io/zookeeper:3.4.13

5. 下载完后可检查镜像:

docker images

6. 在三台主机上建立挂载目录和zookeeper配置文件:

mkdir -p /usr/local/zookeeper/conf
mkdir -p /usr/local/zookeeper/data cd /usr/local/zookeeper/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=192.168.0.168:2888:3888
server.1=192.168.0.169:2888:3888
server.2=192.168.0.170:2888:3888
复制代码

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

cd /usr/local/zookeeper/data
touch myid
echo 0 > myid

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

cd /usr/local/zookeeper/data
touch myid
echo 1 > myid

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

cd /usr/local/zookeeper/data
touch myid
echo 2 > myid

7. 三台主机依次启动容器:

docker run --privileged=true --network host -v /usr/local/zookeeper/data:/data -v /usr/local/zookeeper/conf:/conf --name zookeeper2181 -d docker.io/zookeeper:3.4.13

命令说明:

  • --network host: 使用主机上的网络配置,如果不用这种模式,而用默认的bridge模式,会导致容器跨主机间通信失败
  • -v /usr/local/zookeeper/data:/data:主机的数据目录挂载到容器/data下
  • -v /usr/local/zookeeper/conf:/conf: 主机的配置目录挂载到容器的/conf下,容器内的zkServer.sh默认会读取/conf/zoo.cfg下的配置

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

8. 检查容器的启动情况:

docker exec -it zookeeper2181 /bin/bash

进入容器内部后,其工作目录为:/zookeeper-3.4.13(版本依据镜像而定),执行zookeeper检查:

复制代码

[root@hserver2 data]# docker exec -it zookeeper2181 /bin/bash
bash-4.4# pwd
/zookeeper-3.4.13
bash-4.4# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: leader
bash-4.4#

复制代码

可以看到这个容器目前为leader状态,至此集群已启动完成。

9. 若启动失败了,通过如下命令观察zookeeper的启动日志:

docker logs zookeeper2181

内容示例如下:

[root@hserver2 data]# docker logs zookeeper2181
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.server.quorum.QuorumPeerConfig).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

原文地址:https://www.cnblogs.com/xiaohanlin/p/10124674.html