参考:https://www.jianshu.com/p/a71dbcfaf098
这里通过Docker Compose的方式安装伪集群模式:
拉取镜像
docker pull zookeeper
注意:拉取最新的zookeeper镜像,可能会有点儿问题,下面能看到,可以换成3.4.13版本。但这里还是先用最新版看下问题
创建docker-compose.yml配置文件
[root@localhost zookeeper]# vi docker-compose.yml
version: '3.1'
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper
restart: always
hostname: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
后台启动
[root@localhost zookeeper]# docker-compose up -d
Creating zookeeper_zoo3_1 ... done
Creating zookeeper_zoo1_1 ... done
Creating zookeeper_zoo2_1 ... done
[root@localhost zookeeper]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3c91e3c588f9 zookeeper "/docker-entrypoint.…" 6 seconds ago Up 4 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp zookeeper_zoo1_1
0af7b9af48c0 zookeeper "/docker-entrypoint.…" 6 seconds ago Up 4 seconds 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2182->2181/tcp zookeeper_zoo2_1
4d004366f884 zookeeper "/docker-entrypoint.…" 6 seconds ago Up 4 seconds 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2183->2181/tcp zookeeper_zoo3_1
进入容器查看主从关系
[root@localhost zookeeper]# docker exec -it 3c91e3c588f9 /bin/bash
root@zoo1:/apache-zookeeper-3.5.6-bin# ls
LICENSE.txt NOTICE.txt README.md README_packaging.txt bin conf docs lib
root@zoo1:/apache-zookeeper-3.5.6-bin# cd bin
root@zoo1:/apache-zookeeper-3.5.6-bin/bin# ls
README.txt zkCleanup.sh zkCli.cmd zkCli.sh zkEnv.cmd zkEnv.sh zkServer-initialize.sh zkServer.cmd zkServer.sh zkTxnLogToolkit.cmd zkTxnLogToolkit.sh
root@zoo1:/apache-zookeeper-3.5.6-bin/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port not found in static config file. Looking in dynamic config file.
grep: : No such file or directory
Client port not found. Terminating.
这里就报出了问题,然后将镜像换成3.4.13版本
version: '3.1'
services:
zoo1:
image: zookeeper:3.4.13
restart: always
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper:3.4.13
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper:3.4.13
restart: always
hostname: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
[root@localhost zookeeper]# docker-compose up -d
Creating zookeeper_zoo1_1 ... done
Creating zookeeper_zoo3_1 ... done
Creating zookeeper_zoo2_1 ... done
[root@localhost zookeeper]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
28072c3a055e zookeeper:3.4.13 "/docker-entrypoint.…" 30 seconds ago Up 29 seconds 2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp zookeeper_zoo1_1
9645c55b9ce7 zookeeper:3.4.13 "/docker-entrypoint.…" 30 seconds ago Up 29 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2183->2181/tcp zookeeper_zoo3_1
b81f6fc68d5a zookeeper:3.4.13 "/docker-entrypoint.…" 30 seconds ago Up 29 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2182->2181/tcp zookeeper_zoo2_1
[root@localhost zookeeper]# docker exec -it 28072c3a055e /bin/bash
bash-4.4# ls
LICENSE.txt bin dist-maven lib zookeeper-3.4.13.jar.asc
NOTICE.txt build.xml docs recipes zookeeper-3.4.13.jar.md5
README.md conf ivy.xml src zookeeper-3.4.13.jar.sha1
README_packaging.txt contrib ivysettings.xml zookeeper-3.4.13.jar
bash-4.4# cd bin
bash-4.4# ls
README.txt zkCli.cmd zkEnv.cmd zkServer.cmd zkTxnLogToolkit.cmd
zkCleanup.sh zkCli.sh zkEnv.sh zkServer.sh zkTxnLogToolkit.sh
bash-4.4# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower
发现启动没有问题,说明安装成功