У меня есть приложение, работающее в 3 разных центрах обработки данных, которое использует ZooKeeper для многих задач. Следуя рекомендуемой практике, мы развернули три ансамбля ZooKeeper, в которых один центр обработки данных содержит общие экземпляры ZooKeeper, а два других - только наблюдатели первого дата-центра.
DC1: Usual leader/follower ensemble
DC2: Observers of DC1
DC3: Observers of DC1
Как объясняется в документации ZooKeeper, только ведущая машина может принимать запросы на запись, поэтому последователи и наблюдатели будут сначала направлять эти сообщения лидеру. В случае, если лидер перестает отвечать, доступный последователь будет выбран новым лидером, и ансамбль ZooKeeper останется в силе.
Однако я не нашел никаких ссылок на то, как мы могли бы справиться целые центры обработки данных отключаются. Например, если наш ансамбль лидер / подчиненный в центре обработки данных 1 недоступен, как мы можем сделать второй центр обработки данных основным с обычными машинами лидер / подчиненный? Придется ли мне отключить узел, изменить его файл конфигурации, чтобы он стал обычным узлом, снова включить его, а затем заменить все другие машины ZooKeeper, чтобы следовать за этим лидером? Есть ли для этого автоматическая система?
проверять, выписываться ZooKeeper Dynamic Reconfiguration