我有一个在 3 个不同数据中心运行的应用程序,它使用 ZooKeeper 执行许多任务。按照推荐的做法,我们部署了三个 ZooKeeper 集合,其中一个数据中心包含通用 ZooKeeper 实例,另外两个仅包含观察员第一个数据中心。
DC1: Usual leader/follower ensemble
DC2: Observers of DC1
DC3: Observers of DC1
正如 ZooKeeper 的文档中所述,只有领导者机器能够接受写入请求,因此追随者和观察者会首先将这些消息路由到领导者。如果领导者没有响应,则将选出一个可用的追随者作为新的领导者,并且 ZooKeeper 集合将保持运行。
然而,我还没有找到任何关于我们如何管理的参考资料整个数据中心都离线。例如,如果数据中心 1 上的领导者/追随者集合不可用,我们如何才能让第二个数据中心成为具有常规领导者/追随者机器的主数据中心?我是否必须关闭一个节点,更改其配置文件以使其成为常规节点,再次打开它,然后替换所有其他 ZooKeeper 机器以跟随此领导者?有没有自动系统可以做到这一点?