2015-11-24 60 views
0

我想在版本3.5.1中設置3節點zookeeper集羣。爲了將它部署到kubernetes中,我必須使zookeeper節點本身爲0.0.0.0,因此它可以正確啓動。配置如下:無法在kubernetes中部署Zookeeper 3.5.1

ZK1: zoo.cfg

standaloneEnabled=false 
    dynamicConfigFile=/opt/zookeeper/conf/zoo.cfg.dynamic 

zoo.cfg.dynamic

server.1=0.0.0.0:2888:3888:participant;2181 
    server.2=10.62.56.192:2889:3889:participant;2182 
    server.3=10.62.56.192:2890:3890:participant;2183 

ZK2: zoo.cfg

standaloneEnabled=false 
    dynamicConfigFile=/opt/zookeeper/conf/zoo.cfg.dynamic 

zoo.cfg.dynamic

server.1=10.62.56.192:2888:3888:participant;2181 
    server.2=0.0.0.0:2889:3889:participant;2182 
    server.3=10.62.56.192:2890:3890:participant;2183 

ZK3: zoo.cfg

standaloneEnabled=false 
    dynamicConfigFile=/opt/zookeeper/conf/zoo.cfg.dynamic 

zoo.cfg.dynamic

server.1=10.62.56.192:2888:3888:participant;2181 
    server.2=10.62.56.192:2889:3889:participant;2182 
    server.3=0.0.0.0:2890:3890:participant;2183 

結果是唯一的ZK1可以啓動, zk2和zk3無法啓動。該錯誤是

org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: client address for this server (id = 2) in static config file is 0.0.0.0/0.0.0.0:2181 is different from client address found in dynamic file: /0.0.0.0:2182 
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.setupClientPort(QuorumPeerConfig.java:608) 
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.setupQuorumPeerConfig(QuorumPeerConfig.java:506) 
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:157) 
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:110) 
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79) 

無效的配置,在退出異常

的一點是,我們必須自己將節點配置爲0.0.0.0。

回答

0

嘗試:https://hub.docker.com/r/elevy/zookeeper/其基於https://github.com/eliaslevy/docker-zookeeper

即使用每個ZK盒1級的服務。每個服務都有自己的「主機名」,可以通過每個zk pod內的DNS解析。名字是zookeeper-1,zookeeper-2和zookeeper-3。

所以,與其配置線條狀

server.1=0.0.0.0:2888:3888:participant;2181 
server.2=10.62.56.192:2889:3889:participant;2182 
server.3=10.62.56.192:2890:3890:participant;2183 

你必須配置線,如:

server.1=zookeeper-1:2888:3888 
server.2=zookeeper-2:2888:3888 
server.3=zookeeper-3:2888:3888 

注意,因爲每莢有自己的IP,你並不需要使用範圍的端口,如2888,2889,2890。您可以爲每個端口使用2888/3888。

+0

我試過這種方式,但錯誤是Pod的端口2888不能綁定到服務的主機名。這就是我使用0.0.0.0的原因。 –

+0

錯誤是**無法綁定到/172.254.2.198:2888 java.net.BindException:無法分配請求的地址** –