我正在为基于版本3.5.2的ZooKeeper设置分布式集群。具体来说,我正在利用reconfig命令在群集中存在任何重新平衡时动态更新配置(例如,其中一个节点出现故障)。
我的观察是即使正确执行reconfig(add / remove)命令,zoo.cfg.dynamic文件也不会更新。这是预期的行为吗?基本上我正在寻找指导是否应该通过单独的脚本管理zoo.cfg.dynamic文件(使用reconfig命令更新它的lock-step),或者我们是否可以依赖reconfig命令为我们执行此操作。我的偏好/期望是后者。
以下是示例命令:
reconfig -remove 6 -add server.5=125.23.63.23:1234:1235;1236
答案 0 :(得分:0)
动态配置参数存储在服务器上的单独文件中(我们称之为动态配置文件)。 此文件使用新的dynamicConfigFile关键字从静态配置文件链接。
所以我几乎可以从任何文件名开始托管整体列表,并确保'dynamicConfigFile'配置关键字只指向此文件。
现在,当运行reconfig命令时,基本上会生成一个新的动态配置文件(例如zoo.cfg.dynamic.00000112),其中包含已转换的服务器列表,格式如下(作为示例): / p>
server.1 = 125.23.63.23:2780:2783:参与者; 2791 server.2 = 125.23.63.24:2781:2784:参与者; 2792 server.3 = 125.23.63.25:2782:2785:参与者; 2793
因此,zoo.cfg文件会自动更新,以将“dynamicConfigFile”config关键字指向新的配置文件(zoo.cfg.dynamic.00000112)。之前的dynamic-config文件继续在运行时(config目录)中可用,但主配置不再引用它。
总的来说,没有任何开销来更新任何文件锁定步骤到reconfig命令,即reconfig命令负责这一切。预先解决的唯一潜在开销是定期清除旧的动态配置文件。