Перенос узла на другую машину

У нас есть следующая настройка кластера DSE:

Кассандра, округ Колумбия

  • Кассандра узел 1

Диспетчер доменов

  • Узел Solr 1
  • Solr-узел 2
  • Узел Solr 3
  • Узел Solr 4

Мы хотим заменить узел Solr 1 на более мощную машину. У меня сложилось впечатление, что нам нужно следовать процедуре замены мертвый узел, который включает:

  • Добавление нового узла в кластер
  • Разрешение кластеру автоматически перебалансировать себя
  • Удаление старого узла с помощью nodetool removenode
  • Выполнение очистки nodetool на каждом оставшемся узле

Однако мой коллега прибегнул к копированию всего (пользовательские файлы, системные файлы, и файлы данных Cassandra/Solr) со старой машины на новую. Будет ли работать этот подход? Если да, есть ли какие-либо дополнительные шаги, которые нам нужно сделать? Если нет, то как мы можем это исправить? (т. е. мы просто удаляем файлы данных и перезапускаем узел как пустой узел? или это приведет к потере данных?)


person PJ.    schedule 16.03.2014    source источник


Ответы (1)


Итак, ваш подход должен работать... вот некоторые вещи, на которые следует обратить внимание

  • Убедитесь, что вы закрыли свой C* на узле, который хотите заменить.
  • Сделать невозможным случайный запуск C* на старом узле (например, переместить jar-файлы или хотя бы временно переместить скрипт /etc/init.d/dse в другое место)
  • Скопируйте все на новую машину
  • Выключите старую машину (отключите сеть, если возможно).
  • Убедитесь, что новая машина имеет тот же IP-адрес, что и старая, и что при первой загрузке она не запустит C* (не обязательное требование, а скорее мера предосторожности на случай, если IP-адрес не совпадает или что-то еще не так с этой коробкой).
  • еще раз проверьте, все ли в порядке, повторно включите C* и перезапустите машину. В зависимости от того, как вы скопировали эту машину, меня больше беспокоят системные файлы ОС с точки зрения стабильности. Если вы просто скопировали приложение C* и файлы данных, все должно быть в порядке.
  • убедитесь, что вы НИКОГДА не запускаете старую машину с активным C*.

Я не пробовал это, но я не знаю ничего, что могло бы помешать этому работать (теперь, когда я это сказал, я, вероятно, буду звонить... но я ДЕЙСТВИТЕЛЬНО спросил одного из наших ключевых инженеров :-) .

Вот более "стандартная" процедура, которую я предложу для наших документов:

Замена работающего узла

Замените узел новым узлом, например, для обновления до более нового оборудования/упреждающего обслуживания.

Вы должны подготовить и запустить новый узел, интегрировать его в кластер, а затем удалить старый узел.

Процедура

  1. Подтвердите, что узел жив:

    а) Запустите кольцо nodetool, если не используете vnodes.

    б) Запустите состояние nodetool, если используете vnodes.

  2. Команда nodetool показывает состояние узла (UN)

  3. Примечание Идентификатор хоста узла, который необходимо заменить; он используется на последнем шаге.
  4. Добавьте и запустите новый узел, как описано в http://www.datastax.com/docs/1.1/cluster_management#adding-capacity-to-an-existing-cluster
  5. Используя идентификатор хоста исходного старого узла, удалите старый узел из кластера с помощью команды nodetool removenode. См. http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_remove_node_t.html для получения подробных инструкций.
person Sven Delmas    schedule 18.03.2014
comment
Спасибо. Это подтверждает мое впечатление, что нужно выполнить действия по замене умершего узла (ваши действия более-менее совпадают). Мне просто любопытно одно из требований, которые вы упомянули: каковы последствия, если IP-адрес нового узла не совпадает с IP-адресом старого узла? Мы не можем контролировать IP, потому что мы просто арендуем корневые серверы, но мы можем переназначить имя хоста на новый IP. - person PJ.; 19.03.2014
comment
Рекомендация по IP-адресу, вероятно, в основном паранойя с моей стороны. Замена систем под капотом вызывала у меня проблемы с DNS и другими службами в прошлом. Если вы выполняете процедуру замены мертвого узла, это не имеет значения. Для копирования все файлы на C* должны быть в порядке с другим IP-адресом (все, что имеет значение, это токены). Просто не пробовал этого раньше и не уверен, сколько системных файлов вы скопировали. Насчет opscenter тоже не уверен... на случай, если вы его используете. - person Sven Delmas; 19.03.2014