【问题标题】:What should I do when a zookeeper node is back to normal?zookeeper节点恢复正常后怎么办?
【发布时间】:2020-01-29 07:05:14
【问题描述】:

我有一个包含 3 个节点的 zookeeper 集群:zk01、zk02 和 zk03。为了做维护工作,我关闭了 zk01 并用一个新节点替换它,它仍然称为 zk01。但是,当我运行“echo stat | nc zk01 2181”时,我收到了错误消息“这个 ZooKeeper 实例当前没有服务请求”。所以我对 zk02 和 zk03 尝试了这个命令:

root@zk01.gf-tokyo ~ # echo stat | nc zk02 2181
Zookeeper version: 3.3.5-cdh3u6--1, built on 03/20/2013 20:28 GMT
Clients:
 /10.18.5.187:36772[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/1/67
Received: 23938
Sent: 23937
Outstanding: 0
Zxid: 0x3000f68e2
Mode: follower
Node count: 1453
root@zk01.gf-tokyo ~ # echo stat | nc zk02 2181
Zookeeper version: 3.3.5-cdh3u6--1, built on 03/20/2013 20:28 GMT
Clients:
 /10.18.5.187:36773[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/1/67
Received: 23939
Sent: 23938
Outstanding: 0
Zxid: 0x3000f68e2
Mode: follower
Node count: 1453

root@zk01.gf-tokyo ~ # echo stat | nc zk03 2181
Zookeeper version: 3.3.5-cdh3u6--1, built on 03/20/2013 20:28 GMT
Clients:
 /10.18.5.224:35190[1](queued=0,recved=19246695,sent=19255810)
 /10.18.5.225:51732[1](queued=0,recved=1902803,sent=1911886)
 /10.18.5.187:44885[0](queued=0,recved=1,sent=0)
 /10.18.8.125:53937[1](queued=0,recved=1529,sent=1532)

Latency min/avg/max: 0/0/105
Received: 21223069
Sent: 21241269
Outstanding: 0
Zxid: 0x3000f68e2
Mode: leader
Node count: 1453

'10.18.5.187' 是 zk01 的 IP 地址。我的问题是,zk01 现在在我的 zookeeper 集群中吗?如果是这样,为什么它给出的消息就像它不服务请求一样。如果没有,我应该怎么做才能将它添加到集群中?

【问题讨论】:

    标签: apache-zookeeper


    【解决方案1】:

    我也遇到了同样的问题。

    我看到其他两台服务器的统计信息中列出了新 IP,就像上面一样,但是数据目录中没有正确的快照/事务日志,所以我假设新服务器没有正确加入集群.

    基于https://issues.apache.org/jira/browse/ZOOKEEPER-338(这是针对客户端的,但基于票证中的详细信息显然对服务器来说也是一个问题)听起来zookeeper一旦确定了一个IP就不会重新运行DNS解析主持人。至少对于 3.5.0 之前的版本;听起来 3.5.0 有相反的问题,即重新解析每个调用并减慢 zookeeper。

    这意味着(对于 3.5.0 之前的版本)如果您重新部署具有相同主机名但 IP 不同的节点,运行 zookeeper 的现有实例将不会将该主机更新为新 IP。

    考虑到这一点,我看到的两个选项是:

    • 停止所有 zookeeper 实例(降低仲裁)然后启动 它备份并查看问题是否已解决。你会带动物园管理员 为此离线,因此在生产中并不是一个真正可行的选择 部署。
    • 不要重复使用主机名;配置 zk04 而不是 zk01 并适当地更新新 zk04 上的 zoo.cfg 和 myid 文件。

    在尝试第一个选项之前,我必须检查我的 zookeeper quorum 是否在生产中使用(这是我的偏好,因为我喜欢我的主机名一致),但会更新这个线程,回答是否解决了问题在接下来的几天里。

    更新:在所有节点上停止 zookeeper,然后一次启动一个备份修复了这个问题。如果您能够进行停机,这是解决问题的简单途径。

    【讨论】:

    • 我们遇到了同样的问题,这个解决方案解决了它。仅供参考,从 Exhibitor 重启 Zookeepers 也可以
    【解决方案2】:

    需要按照配置文件中列出的顺序启动 Zookeeper。 所以关闭所有服务器,然后启动

    server.1
    server.2
    server.3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多