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