Ошибка Cassandra: невозможно выполнить запрос: один или несколько узлов недоступны.

Я полный новичок в Cassandra, и я просто настраиваю его, играю с ним и тестирую различные сценарии с использованием cqlsh.

В настоящее время у меня есть 4 узла в 2 центрах обработки данных, что-то вроде этого (конечно, с правильными IP-адресами):

a.b.c.d=DC1:RACK1 a.b.c.d=DC1:RACK1 a.b.c.d=DC2:RACK1 a.b.c.d=DC2:RACK1

по умолчанию=DCX:RACKX

Кажется, все имеет смысл до сих пор, за исключением того, что я специально отключил узел, чтобы увидеть результирующее поведение, и я заметил, что больше не могу запрашивать/вставлять данные на оставшихся узлах, поскольку это приводит к «Невозможно выполнить запрос: один или другие узлы были недоступны».

Я понимаю, что узел недоступен (я сделал это намеренно), но разве одной из основных задач распределенной БД не является продолжение поддержки функций, даже если некоторые узлы выходят из строя? Почему выход из строя одного узла полностью останавливает все?

Что мне не хватает?

Любая помощь будет принята с благодарностью!


person user3376961    schedule 26.05.2015    source источник


Ответы (2)


Возможно ли, что вы не установили коэффициент репликации в вашем ключевом пространстве со значением больше 1? Например:

СОЗДАТЬ КЛЮЧЕВОЕ ПРОСТРАНСТВО "Excalibur" С РЕПЛИКАЦИЕЙ = {'класс' : 'NetworkTopologyStrategy', 'dc1' : 2, 'dc2' : 2};

Настроит ваше пространство ключей таким образом, чтобы данные реплицировались на 2 узла в каждом центре обработки данных dc1 и dc2.

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

person Andy Tolbert    schedule 26.05.2015
comment
Спасибо, Энди! Это было. Имеет смысл сейчас - person user3376961; 27.05.2015

Вы правы, предполагая, что один из отключенных узлов должен по-прежнему позволять вам запрашивать кластер, но есть несколько вещей, которые следует учитывать.

Я предполагаю, что «статус узла» возвращает ожидаемые результаты для этого контроллера домена (т. е. «UN» для узла UP, «DN» для узла DOWNed)

Проверьте следующее:

  • Уровень согласованности подключения (по умолчанию ОДИН)
  • Keyspace replication strategy and factor (default is Simple, rack/dc unaware)
    • In cqlsh, "describe keyspace "

Обратите внимание, что если вы играли с коэффициентом репликации, вам нужно запустить «ремонт узла» на узлах.

Подробнее здесь

person Blake Atkinson    schedule 26.05.2015
comment
Спасибо Блейк! Это был фактор репликации. - person user3376961; 27.05.2015