我想用 3 个新的 ZooKeeper 服务器替换当前的 3 个 ZooKeeper 服务器。我已经添加:
- Ambari 的新动物园,
将新动物园添加到变量中:
hbase.zookeeper.quorum ha.zookeeper.quorum zookeeper.connect hadoop.registry.zk.quorum yarn.resourcemanager.zk-地址
重新启动服务,重新启动 RM,当我关闭所有旧的 Zoo 服务器时,仍然无法连接到任何新的 Zoo。
zookeeper-client-server zoo-new1 我收到以下错误:
“无法从服务器 sessionid 0x0 读取附加数据,可能服务器已关闭套接字”
在日志中的新 Zoo 服务器上 (zookeeper.out):
“由于 java.io.IOException 导致 session 0x0 关闭的异常:ZooKeeperServer 未运行”
当我运行旧的 ZooKeeper 之一时,一切正常,我也可以连接到新的 ZooKeeper 服务器。
请您参考如下方法:
我最好的猜测是,这与 zookeeper 中最重要的属性之一有关,即领导者选举。如果您从具有 3 个服务器的 zookeeper quorum 开始,然后再向其中添加 3 个服务器。您必须至少有 4 台服务器在运行才能访问法定人数。当 zookeeper 节点无法选出领导者时,它看起来好像已关闭。
这也是为什么当您启动其中一个旧动物园管理员时您的设置有效的原因,因为它们现在有 4 个存活,可能有 6 个。如果你想让新的设置工作,你需要从配置中删除旧的服务器,这样 quorum 就只知道三个新的。简单地关闭 zookeeper 服务器不会将其从法定人数中删除。






