Docker安装zookeeper集群

1,700 阅读2分钟

1.下载镜像

这里选择需要下载的版本 hub.docker.com/_/zookeeper

docker pull zookeeper:3.7.0

2.创建挂载目录

创建node1节点数据目录

mkdir -p /usr/local/docker/zookeeper/node1/data 
mkdir -p /usr/local/docker/zookeeper/node1/logs 
mkdir -p /usr/local/docker/zookeeper/node1/conf

创建node1节点的配置文件zoo.cfg

vim /usr/local/docker/zookeeper/node1/conf/zoo.cfg
#心跳时间2秒 
tickTime=2000
#Follower跟随者服务器与Leader领导者服务器之间初始化连接时能容忍的最多心跳数10*tickTime 
initLimit=10
#集群中Leader与Follower之间的最大响应时间单位5*tickTime 
syncLimit=5
#存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志 
dataDir=/data
dataLogDir=/logs
#zookeeper端口 
clientPort=2181
#server.1代表一台服务器的编号,第一个端口代表Leader选举的端口,第二个端口为Zookeeper服务器之间的通信接口 
server.1=zookeeper_1:2881:3881
server.2=zookeeper_2:2882:3882
server.3=zookeeper_3:2883:3883

创建 myid 文件 写入节点的id 写入1

cat >> /usr/local/docker/zookeeper/node1/data/myid << eof
1
eof

创建node2节点数据目录

mkdir -p /usr/local/docker/zookeeper/node2/data 
mkdir -p /usr/local/docker/zookeeper/node2/logs 
mkdir -p /usr/local/docker/zookeeper/node2/conf

创建node2节点的配置文件zoo.cfg

vim /usr/local/docker/zookeeper/node2/conf/zoo.cfg
#心跳时间2秒 
tickTime=2000
#Follower跟随者服务器与Leader领导者服务器之间初始化连接时能容忍的最多心跳数10*tickTime 
initLimit=10
#集群中Leader与Follower之间的最大响应时间单位5*tickTime 
syncLimit=5
#存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志 
dataDir=/data
dataLogDir=/logs
#zookeeper端口 
clientPort=2181
#server.1代表一台服务器的编号,第一个端口代表Leader选举的端口,第二个端口为Zookeeper服务器之间的通信接口 
server.1=zookeeper_1:2881:3881
server.2=zookeeper_2:2882:3882
server.3=zookeeper_3:2883:3883

创建 myid 文件 写入节点的id 写入2

cat >> /usr/local/docker/zookeeper/node2/data/myid << eof
2
eof

创建node3节点数据目录

mkdir -p /usr/local/docker/zookeeper/node3/data 
mkdir -p /usr/local/docker/zookeeper/node3/logs 
mkdir -p /usr/local/docker/zookeeper/node3/conf

创建node3节点的配置文件zoo.cfg

vim /usr/local/docker/zookeeper/node3/conf/zoo.cfg
#心跳时间2秒 
tickTime=2000
#Follower跟随者服务器与Leader领导者服务器之间初始化连接时能容忍的最多心跳数10*tickTime 
initLimit=10
#集群中Leader与Follower之间的最大响应时间单位5*tickTime 
syncLimit=5
#存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志 
dataDir=/data
dataLogDir=/logs
#zookeeper端口 
clientPort=2181
#server.1代表一台服务器的编号,第一个端口代表Leader选举的端口,第二个端口为Zookeeper服务器之间的通信接口 
server.1=zookeeper_1:2881:3881
server.2=zookeeper_2:2882:3882
server.3=zookeeper_3:2883:3883

创建 myid 文件 写入节点的id 写入3

cat >> /usr/local/docker/zookeeper/node3/data/myid << eof
3
eof

3.运行

docker network create zkcluster 

运行zookeeper_1节点

docker run --net zkcluster \
--link zookeeper_1:zookeeper_1 \
--link zookeeper_2:zookeeper_2 \
--link zookeeper_3:zookeeper_3 \
-p 2181:2181 \
-p 2881:2888 \
-p 3881:3888 \
-v /usr/local/docker/zookeeper/node1/data:/data \
-v /usr/local/docker/zookeeper/node1/logs:/logs \
-v /usr/local/docker/zookeeper/node1/conf/zoo.cfg:/conf/zoo.cfg \
--name zookeeper_1 -d zookeeper:3.7.0

运行zookeeper_2节点

docker run --net zkcluster \
--link zookeeper_1:zookeeper_1 \
--link zookeeper_2:zookeeper_2 \
--link zookeeper_3:zookeeper_3 \
-p 2182:2181 \
-p 2882:2888 \
-p 3882:3888 \
-v /usr/local/docker/zookeeper/node2/data:/data \
-v /usr/local/docker/zookeeper/node2/logs:/logs \
-v /usr/local/docker/zookeeper/node2/conf/zoo.cfg:/conf/zoo.cfg \
--name zookeeper_2 -d zookeeper:3.7.0

运行zookeeper_3节点

docker run --net zkcluster \
--link zookeeper_1:zookeeper_1 \
--link zookeeper_2:zookeeper_2 \
--link zookeeper_3:zookeeper_3 \
-p 2183:2181 \
-p 2883:2888 \
-p 3883:3888 \
-v /usr/local/docker/zookeeper/node3/data:/data \
-v /usr/local/docker/zookeeper/node3/logs:/logs \
-v /usr/local/docker/zookeeper/node3/conf/zoo.cfg:/conf/zoo.cfg \
--name zookeeper_3 -d zookeeper:3.7.0