Динамическое изменение одноузлового кластера Cassandra на два узла

Итак, у меня есть приложение, которое будет в большинстве случаев бездействующим, но через несколько дней в месяце ему понадобится высокая скорость. Поскольку мы развертываем на EC2, я бы хотел, чтобы большую часть времени работал только один сервер Cassandra, а затем в рабочие дни я хочу задействовать еще один сервер (с большим объемом оперативной памяти и ЦП, чем первый), чтобы помочь справиться с нагрузкой. Каков наилучший способ сделать это? Должен ли я выбрать другой подход?

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

  • Поднимите узел и немедленно восстановите его
  • После того, как время взрыва закончено, выводится из эксплуатации мощный узел
  • Используйте всегда включенный сервер в качестве начального узла

Мой главный вопрос - как заставить узлы совместно использовать все данные, так как я хочу, чтобы коэффициент репликации равнялся 2 (чтобы у обоих узлов были все данные), но это не будет работать, пока есть только один сервер. Должен ли я вызвать 2 дополнительных сервера вместо одного?

2 ответа

Кажется, что вы можете довольно легко изменить фактор репликации.

Это также упоминается в вики Cassandra, где вы можете найти инструкции по увеличению и уменьшению коэффициента репликации.

Это означает, что должно быть возможно сделать это:

  • изменить коэффициент репликации от 1 до 2
  • поднять и восстановить ваш пакетный узел, чтобы он получил копию всех данных
  • ... Работай...
  • узел разрыва
  • изменить коэффициент репликации обратно с 2 на 1
  • убирать

По моему опыту, изменение коэффициента репликации на лету не очень хорошо работает:-(Вы можете столкнуться с разногласиями со схемой, которые, по крайней мере, требуют времени для устранения.

Просто подумайте вслух, но возможен другой путь (измените время, чтобы удовлетворить):

  1. Увеличьте период отсрочки GC в cassandra.yaml (это определяет, как долго живут надгробные камни до того, как их очистят от диска), скажем, до 30 дней.
  2. Раскручивайте второй узел каждые 15 дней или около того, нужен он или нет. Убедитесь, что данные / логи коммитов и т.д. сохраняются между запусками. Это будет означать, что вы начнете быстрее, когда вам нужно раскрутить 2-й узел
  3. с большим количеством оперативной памяти и процессора, чем первый

Кассандра эффективно делит рабочую нагрузку на количество кольца, за которое отвечает каждый узел. Может быть проще иметь 2-й узел либо удвоить емкость первого, либо добавить 2 узла того же размера, что и первый, для более легкого разделения кольца.

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

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