Кассандра потеря узла

Я пытаюсь выяснить, как настроить параметры моего кластера из 2 узлов, чтобы иметь точную копию, если один из них не работает... с помощью этого инструмента, чтобы проверить это: http://www.ecyrd.com/cassandracalculator/

Для следующих параметров:

Cluster size: 2 / Replication Factor: 2 / Write Level: All / Read Level: One

это дает мне результаты:

  • Ваши чтения соответствуют
  • Вы можете пережить потерю без узлов.
  • Вы действительно читаете с 1 узла каждый раз.
  • Вы действительно пишете в 2 узла каждый раз.
  • Каждый узел содержит 100% ваших данных.

Я согласен со всеми этими результатами, кроме одного: "Вы можете пережить потерю без узлов". Я не понимаю, почему кластер не может выжить после потери одного узла, если он умирает, "Write: ALL" запишет только на один оставшийся узел, не так ли? Затем, когда я возвращаю второй узел, он должен синхронизироваться с первым и снова принимать записи, не так ли?

Если я ошибаюсь, может кто-нибудь объяснить мне, почему?

РЕДАКТИРОВАТЬ:

Дополнительная конфигурация даст мне те же результаты, за исключением% удержания:

Cluster size: 3 / Replication Factor: 2 / Write Level: All / Read Level: One
Cluster size: 3 / Replication Factor: 2 / Write Level: Quorum / Read Level: One

Даже если я пытаюсь быть совместимым с Чтениями, а не Пишет:

Cluster size: 2 / Replication Factor: 2 / Write Level: One / Read Level: Quorum

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

2 ответа

Решение

Это из-за фактора репликации

Когда коэффициент репликации превышает количество узлов, записи отклоняются, но чтения выполняются до тех пор, пока может быть достигнут желаемый уровень согласованности.

Источник: http://www.datastax.com/docs/1.0/cluster_architecture/replication

Я согласен со всеми этими результатами, кроме одного: "Вы можете пережить потерю без узлов". Я не понимаю, почему кластер не может выжить после потери одного узла, если он умирает, "Write: ALL" запишет только на один оставшийся узел, не так ли? Затем, когда я возвращаю второй узел, он должен синхронизироваться с первым и снова принимать записи, не так ли?

Если я ошибаюсь, может кто-нибудь объяснить мне, почему?

Это не то, как работает последовательность. Когда узел выходит из строя, Кассандра не забывает об этом при разработке QUORUM. Ваш коэффициент репликации равен 2, и, следовательно, ALL равен 2, и как только один узел не работает, вы перестаете писать.

Если вам нужна последовательность чтения (убедитесь, что вы делаете). Затем попробуйте кластер из 3 узлов с RF 3, затем прочитайте и запишите в QUORUM. Это означает, что теперь вы можете обрабатывать узел для чтения и записи.

Для вас последний пример:

Размер кластера: 2 / Коэффициент репликации: 2 / Уровень записи: Один / Уровень чтения: Кворум

QUORUM = RF / 2 + 1 = 2, так почему вы не в порядке?

В общем, вы хотите странный RF для систем QUORUM.

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