2017-06-05 36 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

相關問題