2015-11-24 61 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:无法分配请求的地址** –