Это зависит от того, как распределяется кворум. Вы можете знать, что zookeeper работает как кворум серверов zookeeper. Если два сервера не могут разговаривать друг с другом, это означает, что существует проблема сетевого разметки (один набор серверов не может попасть на другие серверы в разных частях сети). Поскольку мы используем нечетное количество серверов в кворуме, будет два раздела: один с большинством серверов и один с меньшим числом.
Если лидер в большинстве своем разделе,
Кворум будет продолжать работать в качестве лидера имеет большинство кворума. В разделе меньшинства серверы остановятся и перейдут на фазу выборов лидеров. Следующий текст цитируется из почтового потока в user mail list
Apache Zookeeper.
После раздела все серверы в регионе меньшинства будут отключены и перейдут на фазу выборов лидера. Все клиентские сеансы , подключенные к этим серверам, будут отключены и будут получать событие «KeeperState.Disconnected» для своих наблюдателей, если они зарегистрированы.
Но ZooKeeper поддерживает режим только для чтения. В этом режиме клиент может подключиться к серверу только для чтения, даже если сервер может быть , выделенный из кворума.
Если лидер находится в разделе меньшинства,
Опять же, лидер выборов будет происходить в обоих разделах и раздела меньшинства не смогут избрать лидера. Таким образом, выключение. Раздел большинства выберет нового лидера и продолжит работу.
В вашем вопрос, что вы называете master cannot connect to slave
, является примером разделения сети. Либо мастер (лидер) находится в разделе меньшинства, либо подчиненный находится в разделе меньшинства.
Надеюсь, у вас есть идея :-)