Что конкретно означает отказоустойчивость Zookeeper? одновременно или накопительно?

Как упоминалось в Руководстве по началу работы с ZooKeeper, для отказоустойчивой кластерной установки требуется минимум три сервера, и настоятельно рекомендуется иметь нечетное количество серверов.

Так что, если у меня есть 5 серверов, и, как упоминалось выше, я все еще могу выжить, когда 2 из них вышли из строя. Но это означает одновременно или накопительно??

Так как насчет этого:
5 серверов -> один сбой -> 4 сервера -> один сбой -> 3 сервера -> один сбой -> 2 сервера -> один сбой -> умереть

И в чем разница между 3 серверами (инициализация) и 3 серверами (вырождение из 5 серверов) ??

1 ответ

Решение

Для работы кластера Zookeeper требуется кворум. И кворум это большинство серверов из кластера.

  • При кластере из 3 узлов большинство составляет 2 узла. Таким образом, вы можете допустить, что только 1 узел не синхронизирован одновременно.
  • При кластере из 5 узлов большинство составляет 3 узла. Таким образом, вы можете допустить, что только 2 узла не синхронизированы одновременно.
  • При кластере из 7 узлов большинство составляет 4 узла. Таким образом, вы можете допустить, что только 3 узла не синхронизированы одновременно.

Что значит быть в синхронизации? Узел не является частью кворума не только тогда, когда он не работает. Но также, когда он все еще присоединяется к кластеру после сбоя.

Узлы жестко закодированы в конфигурации Zookeeper. Таким образом, каждый узел в кластере знает, что он должен быть частью кластера с N узлами. Поэтому это не работает так, как кластер из 7 узлов, где два узла не работают, внезапно становится кластером из 5 узлов, а еще 2 узла могут выйти из строя. Он всегда будет вести себя как кластер из 7 узлов, и только 3 узла могут выйти из строя, если вы не измените файлы конфигурации.

Все дело в четном и нечетном количестве узлов, в основном, в количестве узлов, которые могут быть недоступны при сохранении кворума. И с кластером из 4 узлов, большинство будет 3. Таким образом, кластер из 4 узлов все еще может терпеть отказ только 1 узла. Следовательно, не имеет смысла использовать кластер из 4 узлов, который имеет ту же отказоустойчивость, что и кластер из 3 узлов.

Другие вопросы по тегам