Не удается достичь уровня согласованности ONE: info={ 'required_replicas': 1, 'alive_replicas': 0, 'consistency': 1}

Похоже, репликация пространства ключей в моей настройке Cassandra происходит неправильно, мне нужны некоторые идеи по устранению этой неполадки. Я настроил кластер с несколькими центрами обработки данных, но для начала я установил пространство ключей для использования SimpleStrategy с RF 3.

Семейства столбцов существуют:

cqlsh:kairosdb> select columnfamily_name from system.schema_columnfamilies where keyspace_name = 'kairosdb';

 columnfamily_name
-------------------
       data_points
     row_key_index
      string_index

(3 rows)

но я не могу запросить их:

cqlsh:kairosdb> select count(*) from data_points limit 100000;
 Traceback (most recent call last):
  File "/usr/bin/cqlsh", line 957, in perform_simple_statement
    rows = self.session.execute(statement, trace=self.tracing_enabled)
  File "/usr/share/cassandra/lib/cassandra-driver-internal-only-2.1.1.post.zip/cassandra-driver-2.1.1.post/cassandra/cluster.py", line 1282, in execute
    result = future.result(timeout)
  File "/usr/share/cassandra/lib/cassandra-driver-internal-only-2.1.1.post.zip/cassandra-driver-2.1.1.post/cassandra/cluster.py", line 2776, in result
    raise self._final_exception
Unavailable: code=1000 [Unavailable exception] message="Cannot achieve consistency level ONE" info={'required_replicas': 1, 'alive_replicas': 0, 'consistency': 1}

Вот как я настраиваю настройку нескольких центров обработки данных:

  1. Используйте 2 узла из каждого DC в списке семян
  2. Используйте org.apache.cassandra.locator.GossipingPropertyFileSnitch для Snitch
  3. Укажите другое имя для DC в cassandra-rackdc.properties, соответствующее узлу.

Здесь создается пространство ключей:

cqlsh:kairosdb> describe keyspace kairosdb;

CREATE KEYSPACE kairosdb WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'}  AND durable_writes = true;

Любые идеи, что я могу сделать, чтобы устранить эту проблему?


person vrtx54234    schedule 03.11.2014    source источник
comment
Можете ли вы попробовать уровень один местный? Были ли у вас данные в пространстве ключей и изменены ли они на RF 3?   -  person phact    schedule 04.11.2014
comment
Что такое локальный уровень 1?   -  person vrtx54234    schedule 04.11.2014
comment
В multi DC вы можете указать local vs each, чтобы указать, хотите ли вы ждать ответов от удаленного центра обработки данных. datastax.com/documentation/cassandra/2.0/cassandra/dml/   -  person phact    schedule 04.11.2014
comment
Можете ли вы поделиться подробностями о процессе, который вы предприняли для настройки мультипостоянного тока и настройки RF 3?   -  person phact    schedule 04.11.2014
comment
Я отредактировал исходный пост, описывающий, как я настраиваю кластер с несколькими контроллерами постоянного тока и как создается пространство ключей. Совместима ли SimpleStrategy для репликации с настройкой нескольких контроллеров домена? Поскольку это не сработало, я удалил два кольца, вернулся к SimpleSnitch, и на этот раз пространство ключей было создано правильно. поэтому мне интересно, неправильно ли создание пространства ключей.   -  person vrtx54234    schedule 04.11.2014
comment
Отдельно я ищу инструкции по изменению настройки с одним DC на настройку с несколькими DC. Могу ли я следовать тем же инструкциям, что и здесь — datastax.com/documentation /datastax_enterprise/4.5/ — но без удаления каких-либо данных в первом контроллере домена?   -  person vrtx54234    schedule 04.11.2014
comment
Короткий ответ: да, вы можете добавить новый DC без удаления данных. Когда вы обновите ваши данные rf, они будут передаваться через поток.   -  person phact    schedule 06.11.2014


Ответы (2)


В вашем создании пространства ключей у вас есть этот синтаксис:

CREATE KEYSPACE kairosdb WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'}  AND durable_writes = true;

Однако, если вы хотите использовать репликацию между центрами обработки данных (DC), вам необходимо использовать NetworkTopologyStrategy, например:

CREATE KEYSPACE kairosdb WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': 3, 'DC2': 3};

Согласно следующей ссылке на документацию: «Используйте NetworkTopologyStrategy, если у вас есть (или вы планируете развернуть) свой кластер, развернутый в нескольких центрах обработки данных ...»

http://www.datastax.com/documentation/cassandra/2.0/cassandra/architecture/architectureDataDistributeReplication_c.html

person markc    schedule 09.01.2015
comment
Мультицентр обработки данных — следующая установка, в настоящее время это только один ЦОД. Даже между двумя узлами в одном DC при использовании SimpleStrategy какой самый простой способ увидеть, синхронизированы ли данные. - person vrtx54234; 09.01.2015
comment
Привет, вообще говоря, эмпирическое правило заключается в том, чтобы записывать ваши данные на более высоком уровне согласованности, чем то, на котором вы читаете. Люди часто беспокоятся о согласованности данных между узлами, но вам нужно думать о кластере, а не об отдельных узлах. Взгляните на этот замечательный набор слайдов от Netflix, который активно использует Cassandra. консистенция-by-christos-kalantzis" rel="nofollow noreferrer">slideshare.net/planetcassandra/ - person markc; 12.01.2015

Сначала запустите команду ниже на любом из ваших узлов:

описать ключевое пространство system_auth;

Проверьте класс этого пространства ключей, будь то SimpleStrategy или NetworkTopologyStrategy.

Должно быть NetworkTopologyStrategy, если вы настроили Cassandra для нескольких контроллеров домена.

Если выходные данные возвращают класс как SimpleStrategy, вам необходимо ALTER это keyspace.

КОМАНДА:

ИЗМЕНИТЬ KEYSPACE "system_auth" С REPLICATION = 'class' : 'NetworkTopologyStrategy', 'dc1' : 3, 'dc2' : 2};

После этого попробуйте создать новое пространство ключей для проверки. Вы перестанете получать сообщение об ошибке Consistency, с которой сталкивались.

person SpicyRaisin    schedule 02.03.2017