Теперь у нас есть Dc с 3 узлами и с репликацией 3, я планирую вывести из строя узел, который мне нужен чтобы уменьшить мою репликацию до 2 или просто удалить из эксплуатации узел будет корректировать данные между двумя узлами с репликацией 3 ??Нужно ли мне уменьшить коэффициент репликации, если репликация> no.of узлов (планирование для вывода из эксплуатации узла)
ответ
Снятие с эксплуатации узла не приведет к поломке вашего кластера Cassandra, но это сделает его настолько, что некоторые вещи перестанут работать.
Несколько вещей, которые случатся, если списание узла, но не регулирует фактор репликации:
- Во-первыхи, ничего о своем факторе репликации не будет изменено только потому, что вы списание узла. В противном случае возникнет хаос.
- запросов (чтение и запись), что попытка использовать
ConsistencyLevel.ALL
потерпит неудачу, потому что они не смогут получить 3 машины для участия - запросов с
ConsistencyLevel.QUORUM
будут менее доступны, потому что ОБА остальные машины должны будут реагировать на запросов к кворуму.
Поскольку у вас есть 3 машины и РФ 3, это означает, что каждая машина имеет полную копию данных. Выведите из строя узел, update your replication factor, а затем запустите nodetool repair
на оставшихся двух узлах. После того, как вы это сделаете, вам должно быть хорошо.
Мои 2 цента: Я бы предложил сначала сменить репликацию на 2, запустить ремонт на всех узлах, а затем выдать «nodetool decomission» из узла, который вы хотите вывести из эксплуатации. Будут перемещаться данные, но, делая это таким образом, ничто не должно перестать работать.
Привет @riwalk, это то, что меня смущает, если я выведу из моего узла данные, за которые он несет ответственность, должен быть распределен между остальными двумя узлами правильно? если он распределен между моими 2 узлами, то почему запросы будут терпеть неудачу даже в Consistency.ALL? если данные не будут распределены между остальными двумя узлами, в чем причина? это потому, что остальные 2 узла имеют одинаковые данные? то снятие с эксплуатации такое же, как остановка обслуживания на одном узле справа ??? – user6288321
@ user6288321, Consistency.ALL означает, что вам нужно получить * все * реплик для ответа. Если у вас есть RF из 3, вам нужно 3 сервера, чтобы вернуть результат, прежде чем считать его успешным. Уверен, у вас есть полный набор данных на двух машинах ... но 2 не 3, а использование «всех» требует 3 ответов. – riwalk