2016-09-12 6 views
0

Теперь у нас есть Dc с 3 узлами и с репликацией 3, я планирую вывести из строя узел, который мне нужен чтобы уменьшить мою репликацию до 2 или просто удалить из эксплуатации узел будет корректировать данные между двумя узлами с репликацией 3 ??Нужно ли мне уменьшить коэффициент репликации, если репликация> no.of узлов (планирование для вывода из эксплуатации узла)

ответ

1

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

Несколько вещей, которые случатся, если списание узла, но не регулирует фактор репликации:

  • Во-первыхи, ничего о своем факторе репликации не будет изменено только потому, что вы списание узла. В противном случае возникнет хаос.
  • запросов (чтение и запись), что попытка использовать ConsistencyLevel.ALL потерпит неудачу, потому что они не смогут получить 3 машины для участия
  • запросов с ConsistencyLevel.QUORUM будут менее доступны, потому что ОБА остальные машины должны будут реагировать на запросов к кворуму.

Поскольку у вас есть 3 машины и РФ 3, это означает, что каждая машина имеет полную копию данных. Выведите из строя узел, update your replication factor, а затем запустите nodetool repair на оставшихся двух узлах. После того, как вы это сделаете, вам должно быть хорошо.

+0

Привет @riwalk, это то, что меня смущает, если я выведу из моего узла данные, за которые он несет ответственность, должен быть распределен между остальными двумя узлами правильно? если он распределен между моими 2 узлами, то почему запросы будут терпеть неудачу даже в Consistency.ALL? если данные не будут распределены между остальными двумя узлами, в чем причина? это потому, что остальные 2 узла имеют одинаковые данные? то снятие с эксплуатации такое же, как остановка обслуживания на одном узле справа ??? – user6288321

+0

@ user6288321, Consistency.ALL означает, что вам нужно получить * все * реплик для ответа. Если у вас есть RF из 3, вам нужно 3 сервера, чтобы вернуть результат, прежде чем считать его успешным. Уверен, у вас есть полный набор данных на двух машинах ... но 2 не 3, а использование «всех» требует 3 ответов. – riwalk

0

Мои 2 цента: Я бы предложил сначала сменить репликацию на 2, запустить ремонт на всех узлах, а затем выдать «nodetool decomission» из узла, который вы хотите вывести из эксплуатации. Будут перемещаться данные, но, делая это таким образом, ничто не должно перестать работать.