Итак, у меня есть приложение, которое большую часть времени будет бездействовать, но в течение нескольких дней в месяце потребуется интенсивная загрузка. Поскольку мы выполняем развертывание на EC2, я бы хотел, чтобы большую часть времени работал только один сервер Cassandra, а затем, в дни пиковых нагрузок, я хочу задействовать еще один сервер (с большим количеством ОЗУ и ЦП, чем первый), чтобы помочь справиться с нагрузкой. Как лучше всего это сделать? Стоит ли мне использовать другой подход?
Некоторые заметки о том, что я планирую делать:
Мой главный вопрос заключается в том, как заставить узлы совместно использовать все данные, поскольку мне нужен коэффициент репликации 2 (чтобы у обоих узлов были все данные), но это не сработает, пока есть только один сервер. Стоит ли использовать 2 дополнительных сервера вместо одного?
Кажется, вы можете довольно легко изменить коэффициент репликации.
Это также упоминается на Кассандра вики, где вы можете найти инструкции как по увеличению, так и по уменьшению коэффициента репликации.
Это означает, что это должно быть возможно:
По моему опыту, изменение коэффициента репликации «на лету» не очень хорошо работает :-( Вы можете столкнуться с разногласиями в схеме, на исправление которых уходит много времени, по крайней мере, для меня.
Просто подумайте вслух, но возможен другой путь (измените время по своему усмотрению):
с большим количеством ОЗУ и ЦП, чем первый
Cassandra эффективно делит рабочую нагрузку по количеству кольца, за которое отвечает каждый узел. Возможно, будет проще иметь второй узел или удвоить емкость первого, или добавить 2 узла того же размера, что и первый, для более легкого разделения кольца.
Это по-прежнему потребует ручного вмешательства nodetool при отбрасывании узлов, хотя намекаемые передачи обслуживания будут напрасно заполнять диск на оставшемся узле.