Docker 时 Zookeeper 集群模式出错?
Error on Zookeeper cluster mode with Docker?
我正在尝试在不同的主机上使用 docker 部署一个 zookeeper 集群。我使用下一个 docker-compose,其中我 运行 host1 中的 zoo1 host2 中的 zoo2 和 host3 中的 zoo3。
version: '2'
services:
zoo1:
image: 31z4/zookeeper
restart: always
ports:
- 2181:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=host1-IP:2888:3888 server.2=host2-IP:2888:3888 server.3=host3-IP:2888:3888
zoo2:
image: 31z4/zookeeper
restart: always
ports:
- 2182:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=host1-IP:2888:3888 server.2=host2-IP:2888:3888 server.3=host3-IP:2888:3888
zoo3:
image: 31z4/zookeeper
restart: always
ports:
- 2183:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=host1-IP:2888:3888 server.2=host2-IP:2888:3888 server.3=host3-IP:2888:3888
代码添加自:https://github.com/31z4/zookeeper-docker
我也尝试使用下一个 docker-compose,并将 zoo1、zoo2 和 zoo3 添加到 /etc/hosts 文件中:
version: '2'
services:
zoo1:
image: 31z4/zookeeper
restart: always
ports:
- 2181:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: 31z4/zookeeper
restart: always
ports:
- 2182:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zooo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: 31z4/zookeeper
restart: always
ports:
- 2183:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
但它不起作用,如果我检查状态:
./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Error contacting service. It is probably not running.
暴露端口的左边部分是主机的本地端口,只能使用一次。此外,容器互连不需要暴露端口,因为它们在同一个网络中。
所以删除左边的部分2888:2888
,保留为:2888
,然后docker会在主机中找到一个空闲端口(使用docker ps
找到出来)。或者如果不需要暴露端口,直接删除 ports
指令。
version: '2'
services:
zoo1:
image: 31z4/zookeeper
restart: always
ports:
- 2181
- 2888
- 3888
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: 31z4/zookeeper
restart: always
ports:
- 2181
- 2888
- 3888
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: 31z4/zookeeper
restart: always
ports:
- 2181
- 2888
- 3888
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
我正在尝试在不同的主机上使用 docker 部署一个 zookeeper 集群。我使用下一个 docker-compose,其中我 运行 host1 中的 zoo1 host2 中的 zoo2 和 host3 中的 zoo3。
version: '2'
services:
zoo1:
image: 31z4/zookeeper
restart: always
ports:
- 2181:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=host1-IP:2888:3888 server.2=host2-IP:2888:3888 server.3=host3-IP:2888:3888
zoo2:
image: 31z4/zookeeper
restart: always
ports:
- 2182:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=host1-IP:2888:3888 server.2=host2-IP:2888:3888 server.3=host3-IP:2888:3888
zoo3:
image: 31z4/zookeeper
restart: always
ports:
- 2183:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=host1-IP:2888:3888 server.2=host2-IP:2888:3888 server.3=host3-IP:2888:3888
代码添加自:https://github.com/31z4/zookeeper-docker
我也尝试使用下一个 docker-compose,并将 zoo1、zoo2 和 zoo3 添加到 /etc/hosts 文件中:
version: '2'
services:
zoo1:
image: 31z4/zookeeper
restart: always
ports:
- 2181:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: 31z4/zookeeper
restart: always
ports:
- 2182:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zooo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: 31z4/zookeeper
restart: always
ports:
- 2183:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
但它不起作用,如果我检查状态:
./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Error contacting service. It is probably not running.
暴露端口的左边部分是主机的本地端口,只能使用一次。此外,容器互连不需要暴露端口,因为它们在同一个网络中。
所以删除左边的部分2888:2888
,保留为:2888
,然后docker会在主机中找到一个空闲端口(使用docker ps
找到出来)。或者如果不需要暴露端口,直接删除 ports
指令。
version: '2'
services:
zoo1:
image: 31z4/zookeeper
restart: always
ports:
- 2181
- 2888
- 3888
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: 31z4/zookeeper
restart: always
ports:
- 2181
- 2888
- 3888
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: 31z4/zookeeper
restart: always
ports:
- 2181
- 2888
- 3888
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888