Docker的Zookeeper集群模式出错?
我正在尝试在不同主机上使用docker部署一个zookeeper集群。 我使用下一个docker-compose,在host2的host1 zoo2和host3的zoo3中运行zoo1。
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.
展示端口的左侧部分是主机的本地端口,只能使用一次。 另外,您不需要公开端口来进行容器互连,因为它们在同一个networking中。
因此,删除左边的部分2888:2888
,将其保留为: 2888
,然后docker将在主机中find一个空闲端口(使用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