У нас есть сайт с относительно низким трафиком (~ 1000 просмотров страниц в день), размещенный на одном сервере, и мы ожидаем, что он значительно вырастет в течение следующих нескольких лет.
Я подумываю перейти на Rackspace CloudServer или EC2 и запустить 3 узла (все на CentOS):
Вопрос в том, куда сейчас поставить Кассандру ...
Должен ли он находиться на каждом веб-узле или на узле MySQL?
Сейчас я думаю разместить его на веб-узлах. Насколько я понимаю, Кассандра имеет преимущества отказоустойчивости (то есть, если мы отключим узел, сайт все еще будет работать). Таким образом, даже имея всего 2 узла, у нас будет это преимущество, а не просто разместить его на узле MySQL.
Кроме того, когда мы увеличиваем масштаб и добавляем еще один узел, экземпляр cassandra может появиться вместе с ним, и php всегда может выполнять свои запросы на localhost. Это хорошая идея?
Следует иметь в виду, что если вы запустите Cassandra, вам нужно будет решить, хранить ли все внутри JVM и наращивать его по мере необходимости, или отказаться от JNA и позволить вашему кешу строк жить в системной памяти.
В наши дни лучшая практика - работать с JNA, потому что она также позволяет вам делать снимки без использования памяти (поскольку JNA позволяет Java устанавливать жесткие ссылки), но как только вы начнете разделять системную память, отличную от JVM, между cassandra и другими приложениями, вы могут начать тихонько плакать про себя в незащищенные моменты. Если есть возможность, рассмотрите возможность запуска cassandra на отдельных машинах.
Но если нет - вы получаете отказоустойчивость в Cassandra только в том случае, если у вас более одного узла, и ваш коэффициент репликации и уровни согласованности чтения и записи правильно рассчитаны. Для трехузлового кольца, если ваша главная забота - отказоустойчивость / доступность данных, я бы установил коэффициент репликации на 3, а ваш уровень согласованности на ОДИН для операций чтения и записи.
Один из способов взглянуть на это - определить, какие ресурсы потребляет каждое приложение, и сбалансировать их использование между узлами.
Из приведенного выше «задней части пакета fag» я бы начал с общей предпосылки Cassandra и Apache, только MySQL, а затем выбрал бы дыры и усовершенствовал этот подход с этой отправной точки.