动物园管理员服务器错误:我的 id 4 不在对等列表中



我正在尝试在分布式模式下安装 zookeeper 和 HBase,但是当我启动动物园管理员仲裁的最后一个节点时,我得到的例外是:

2013-09-05 12:02:09,230 - ERROR [main:QuorumPeer@171] - Setting LearnerType to   PARTICIPANT but 4 not in QuorumPeers. 
2013-09-05 12:02:09,246 - INFO  [main:QuorumPeer@444] - acceptedEpoch not found!  Creating with a reasonable default of 0. This should only happen when you are upgrading   your installation
2013-09-05 12:02:09,250 - ERROR [main:QuorumPeerMain@89] - Unexpected exception, exiting abnormally
java.lang.RuntimeException: My id 4 not in the peer list
at  org.apache.zookeeper.server.quorum.QuorumPeer.startLeaderElection(QuorumPeer.java:479)
at org.apache.zookeeper.server.quorum.QuorumPeer.start(QuorumPeer.java:411)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:151)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:111)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)

我将 zookeeper 仲裁设置为 3 - 包含来自 hadoop 的主节点 + 2 个数据节点。动物园.cfg列出所有这些机器。他们将 myid 设置为 1 表示主节点,3 设置为第一数据模式,4 表示第二个数据节点。主节点和第一个数据节点运行良好。

似乎是

由于 myid 和 zoo 的内容不一致引起的.cfg - 当我统一服务器时。 在 myid 文件中,它开始没有问题。

如果您在安装Kafka时遇到此问题,请转到zookeeper.properties文件并检查myid的值是什么,即

server.<<myid>> = hostname:2181

并且myid的值必须在 Zoookeer datadir中存在的myid文件中,就我而言,这是:

/tmp/zookeeper/myid

您似乎在配置中使用了不一致的 ID。如果您使用 docker-compose 来运行和部署 zookeeper 集群,配置应如下所示:

version: '<version>'
services:
  zookeeper:
    image: zookeeper:<zookeeper_version>
    hostname: <zookeeper-name>
    container_name: <zookeeper-container-name>
    ports:
      - "8080:8080"
      - "2181:2181"
      - "3888:3888"
      - "2888:2888"
    environment:
      ZOO_MY_ID: <the-id>
      ZOO_SERVERS: server.<the-id>=0.0.0.0:2888:3888;2181 server.<other-ids>=<other-ips>:2888:3888;2181  
      ZOO_LOG4J_PROP: "INFO,ROLLINGFILE"
      ZOO_4LW_COMMANDS_WHITELIST:  "*"
    volumes:
      - ./data/zookeeper_data:/data
      - ./data/zookeeper_data_log:/datalog
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

在上面的示例中,<the-id>必须相同(在ZOO_SERVERSZOO_MY_ID环境变量中)。

最新更新