2015-05-26 2 views
3

Я полный новичок в Cassandra, и я просто настраиваю его и играю с ним и тестируя различные сценарии, используя cqlsh.Ошибка Cassandra: «Не удалось выполнить запрос: один или несколько узлов были недоступны».

настоящее время у меня 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

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

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

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

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

ответ

2

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

CREATE KEYSPACE "Excalibur" WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'dc1' : 2, 'dc2' : 2};

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

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

+0

Thanks Andy! Это было. Сейчас имеет смысл – user3376961

3

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

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

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

    уровень согласованности
  • Connection (по умолчанию является ONE)
  • стратегия репликации пространство ключей и фактор (по умолчанию Simple, стойка/DC не знают)
    • В cqlsh, «описать пространство ключей»

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

Больше информации here

+0

Спасибо Блейк! Это был фактор репликации. – user3376961