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