zookeeper reconfig是否需要更新zoo.cfg.动态文件?

oiopk7p5  于 2022-12-09  发布在  Apache
关注(0)|答案(1)|浏览(237)

我正在为基于3.5.2版本的ZooKeeper设置一个分布式集群。具体来说,我正在利用reconfig命令在集群中发生任何重新平衡时(例如,其中一个节点出现故障)动态更新配置。
我的观察结果是zoo.cfg.dynamic文件没有得到更新,即使在重新配置(add/remove)命令正确执行。这是预期的行为吗?基本上,我在寻找指导,是否我们应该管理zoo.cfg.dynamic文件也通过单独的脚本(用reconfig命令锁步更新它)还是我们可以依靠reconfig命令来为我们做这件事。
以下是示例命令:reconfig -remove 6 -add server.5=125.23.63.23:1234:1235;1236

8fq7wneg

8fq7wneg1#

在重新配置文档中:
动态配置参数存储在服务器上的单独文件中(我们称之为动态配置文件)。此文件使用新的dynamicConfigFile关键字从静态配置文件链接而来
因此,实际上我可以从任何文件名开始托管集合列表,并确保“dynamicConfigFile”配置关键字仅指向此文件。
现在,当运行reconfig命令时,基本上会生成一个新的动态配置文件(例如zoo.cfg.dynamic.00000112),其中包含转换后的服务器列表,格式如下(作为示例):
服务器.1 =125.23.63.23:2780:2783:参与者; 2791服务器.2 =125.23.63.24:2781:2784:参与者; 2792服务器.3 =125.23.63.25:2782:2785:参与者; 2793
因此,zoo.cfg文件会自动更新,以将“dynamicConfigFile”配置关键字指向新的配置文件(zoo.cfg.dynamic.00000112)。以前的dynamic-config文件在运行时(config目录)中仍然可用,但主配置不再引用它。
因此,总体而言,将任何文件锁步更新到reconfig命令没有任何开销,即reconfig命令会处理这一切。预先解决的唯一潜在开销是编写旧动态配置文件的定期清除。

相关问题