Варианты конфигурации веб-кластера для решения практических задач
Выберите подходящий вариант |
Прежде всего, необходимо внимательно проанализировать (спрогнозировать) характер нагрузки на веб-приложение. Для сбора и анализа данных рекомендуется проактивно использовать известные инструменты мониторинга, такие как munin, zabbix, apache server-status, и т.п.
Ниже перечислены варианты конфигурации веб-кластера для различных типов нагрузки.
Высокая нагрузка на процессоры, невысокая/средняя нагрузка на СУБД, контент меняется редко |
Необходимо снизить нагрузку на процессоры - подключаем к веб-кластеру ноду(ы) Нода - сервер, включённый в кластер и выполняющий задачи этого кластера в сообществе с другими серверами (нодами). . Ноды заводим под балансировщик нагрузки. В результате нагрузка на процессоры распараллеливается между нодами.
Рекомендуется также на каждой ноде запустить сервер memcached - это позволит еще больше снизить нагрузку на процессоры за счет того, что кэш будет создаваться один раз на одной из нод веб-кластера, а использоваться остальными нодами.
Для синхронизации контента подойдет csync2, nfs/cifs-сервер на одной из нод веб-кластера.
Высокая растущая нагрузка на СУБД |
Для разгрузки СУБД необходимо организовать master-slave репликацию. Чем больше будет добавлено slave-нод, тем сильнее снизится нагрузка на основную master базу данных. Если slave-ноды разной мощности, рекомендуется адекватно распределить между ними нагрузку с помощью параметра Процент распределения нагрузки (0..100).
В результате нагрузка на СУБД распределится между master и slave нодами веб-кластера. При дальнейшем увеличении нагрузки на СУБД рекомендуется:- Оптимизировать master и slave-ноды. Т.к. master-сервер будет использоваться преимущественно для записи, его нужно, путем настройки параметров, оптимизировать для записи, а slave-ноды - оптимизировать для чтения.
- Добавлять slave-ноды.
Большой объем кэша, кэш часто перестраивается, контент меняется часто, изменений много |
Необходимо настроить эффективную работу с кэшем. Для этого запускаем на каждой ноде сервер memcached, выделяем каждому по несколько GB памяти (в зависимости от требований приложения).
Для синхронизации контента рекомендуется использовать выделенный nfs/cifs-сервер, либо ocfs/gfs или аналоги.
и Ваше мнение важно для нас