【问题标题】:Failed to deploy Zookeeper 3.5.1 in kubernetesKubernetes 部署 Zookeeper 3.5.1 失败
【发布时间】:2015-12-02 03:22:52
【问题描述】:

我想设置 3.5.1 版本的 3 节点 Zookeeper 集群。为了将它部署到kubernetes中,我必须将zookeeper节点本身设置为0.0.0.0,这样才能正确启动它。配置如下:

zk1: 动物园.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: 动物园.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: 动物园.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。

【问题讨论】:

    标签: apache-zookeeper kubernetes


    【解决方案1】:

    尝试:https://hub.docker.com/r/elevy/zookeeper/,它基于https://github.com/eliaslevy/docker-zookeeper

    即每个 zk pod 使用 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
    

    请注意,由于每个 Pod 都有自己的 IP,因此您不需要使用一系列端口,例如 2888、2889、2890。您可以为每个端口使用 2888/3888。

    【讨论】:

    • 我试过这种方式,但错误是Pod的2888端口无法绑定到服务的主机名。这就是我使用 0.0.0.0 的原因。
    • 错误是无法绑定到/172.254.2.198:2888 java.net.BindException:无法分配请求的地址
    猜你喜欢
    • 2020-01-10
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 2018-12-14
    • 1970-01-01
    • 2018-08-21
    相关资源
    最近更新 更多