Как удалить мертвый узел из кластера Cassandra?

  1. У меня есть кластер Кассандры из 12 узлов на EC2.
  2. из-за некоторого сбоя мы полностью потеряли один из узлов.Я имею в виду, что машины больше не существует.
  3. поэтому я создал новый экземпляр EC2 с другим ip и тем же токеном, что и у мертвого узла, и у меня также была резервная копия данных на этом узле, поэтому он работает нормально
  4. но проблема в том, что IP-адрес мертвых узлов по-прежнему отображается как недостижимый узел в кластере описания.
  5. а что узел (экземпляр EC2) больше не существует я не могу использовать списание nodetool или nodetool disablegossip

как я могу избавиться от этого недостижимо узле

2 ответов


обычно при замене узла вы хотите установить токен нового узла в (failure node's token) - 1 и пусть он загрузочный. Начиная с 1.0 теперь есть флаг, который вы можете указать при запуске в заменить мертвый узел: "Кассандра.replace_token=".

поскольку вы уже добавили новый узел с тем же токеном, есть дополнительный шаг:

  1. переместить маркер нового узла к (failure node's token) - 1 используя nodetool move
  2. выполнить nodetool removetoken <failed node's token> из одной из узлы
  3. выполнить nodetool cleanup на каждом узле

это в основном pre 1.0 инструкции для замены мертвого узла дополнительным перемещением токена.


у меня была такая же проблема и я решил ее с removenode, что не требует от вас поиска и изменения маркера узла.

во-первых, получите UUID узла:

nodetool status

DN  192.168.56.201  ?          256     13.1%  4fa4d101-d8d2-4de6-9ad7-a487e165c4ac  r1
DN  192.168.56.202  ?          256     12.6%  e11d219a-0b65-461e-babc-6485343568f8  r1
UN  192.168.2.91    156.04 KB  256     12.4%  e1a33ed4-d613-47a6-8b3b-325650a2bbd4  RAC1
UN  192.168.2.92    156.22 KB  256     13.6%  3a4a086c-36a6-4d69-8b61-864ff37d03c9  RAC1
UN  192.168.2.93    149.6 KB   256     11.3%  20decc72-8d0a-4c3b-8804-cc8bc98fa9e8  RAC1

как вы можете видеть .201 а .202 мертвы и находятся в другой сети. Они были изменены на .91 а .92 без надлежащего снятия с эксплуатации и возобновления. Я работал над установкой сети и сделал несколько ошибок...

во-вторых, снять .201 со следующими команда:

nodetool removenode 4fa4d101-d8d2-4de6-9ad7-a487e165c4ac

(в более старых версиях это был nodetool remove ...)

но так как для nodetool removetoken ..., он блокирует... (см. комментарий Самарта в ответе psandord) однако он имеет побочный эффект, он помещает этот UUID в список узлов, которые необходимо удалить. Поэтому далее мы можем принудительно удалить:

nodetool removenode force

(в более старых версиях это был nodetool remove ...)

теперь узел принимает команду, она говорит мне, что он удаляет недопустимый запись:

RemovalStatus: удаление токена (-9136982325337481102). Ожидание подтверждения репликации от [/192.168.2.91, / 192.168.2.92].

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

следующий a nodetool status не показывает .Узел 201. Я повторите .202 и теперь статус чист.

после этого вы также можете запустить очистку как упомянутый в ответе psanford:

nodetool cleanup

очистка должна выполняться на всех узлах, один за другим, чтобы убедиться, что изменение полностью учтено.