Cassandra NoHostsAvailable ошибка в cqlsh

Я запускаю Cassandra 3.11 на двух узлах. Это пространство клавиш:

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

У меня есть два узла, работающие на виртуальных машинах на моей машине. Когда оба узла работают, все работает. Но когда я отключаю один узел, мое приложение (elixir) начинает выдавать ошибки, а также cqlsh (NoHostAvailable или же InvalidRequest: Error from server: code=2200 [Invalid query] message="unconfigured table test").

Я искал ошибку, и у всех была проблема установки NetworkTopologyStrategy для одного узла, но это не мой случай.

Что здесь происходит?

Редактировать: это ошибка, которую дает драйвер:

[недоступно] Невозможно достичь уровня согласованности ОДИН: %{в живых: 0, согласованность:: один, требуется: 1}

Я уверен, что один узел жив, а другой не работает. С помощью cqlsh из моей локальной системы, чтобы подключиться к узлу Cassandra подтверждает это. Теперь я в замешательстве.

1 ответ

Решение

Проблема в том, что "replication_factor" настроен как 1. Таким образом, существует только одна копия данных. Допустим, вы храните 10 записей, тогда каждый узел предположительно получает свою долю записей, и для простоты, скажем, первые 5 записей хранятся в узле 1, а вторые 5 записей хранятся в узле 2. Теперь, когда вы отключите узел 1 и посмотрите на первую запись, вы получите ошибку драйвера, о которой сообщалось, поскольку ни один узел не доступен для обслуживания этой записи.

  • Измените replication_factor как минимум на 2, так как здесь ситуация только с двумя узлами. Рекомендуемая RF=3 для PROD.
  • Запустите NODETOOL REPAIR, чтобы записи в этой таблице стали двумя копиями. Любые будущие вставки будут автоматически иметь две копии, но это исправит существующие записи.
  • Уровень согласованности запроса READ по умолчанию ОДИН, который будет успешным даже в случае сбоя узла.

SimleStrategy должен нормально работать для сценария с одним центром данных. Тем не менее, рекомендуемая конфигурация для PROD - это стратегия NetworkTopology.

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