2017-06-05 134 views
2

我想在不同的主机上使用docker部署zookeeper集群。我使用下一个docker-compose,在host2的host1 zoo2和host3的zoo3中运行zoo1。使用Docker的Zookeeper集群模式出错?

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

我只是下一个尝试泊坞窗,撰写过了,加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. 
+0

目前还不清楚是什么问题。请参阅[问]和[mcve]了解什么是一个很好的问题。 –

+0

@HoriaComan由于是刚刚编辑 –

回答

1

暴露po的左侧部分rt是主机的本地端口,只能使用一次。此外,您不必暴露港口集装箱互连,因为它们是同一个网络。

因此,删除左边的部分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 
+1

真的感谢,但我只是在不同的主机上使用因此多数民众赞成端口是免费的,最后却跑了几分钟后工作。 –

+0

随时欢迎! – Robert