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