Записал с видео: Владислав Крашевский
На видео Настройка системного окружения и Drupal для работы под высокой нагрузкой рассказывается об организации системы хостинга веб-сайта Forbes.ru, созданного на CMS Drupal.
Платформа хостинга для работы под высокой нагрузкой позволяет выполнять резервное копирование, мониторить работу серверов и решать другие текущие задачи.
Максимальная нагрузка с которой работал хостинг — 50 000 000 запросов за день, 1700 запросов в секунду на front-end сервере.
Описание системы хостинга
Серверная ферма
Для обеспечения производительности веб-хостинга в 10 миллионов хитов кешированных веб-страниц в месяц и отказоустойчивости проекта применяется архитектура серверной фермы, обеспечивающей балансировку нагрузки (Load balancing), с front-end и back-end кластерами серверов, позволяющая на front-end кластере обеспечить высокую доступность (High Availability) и отказоустойчивость, обеспечиваемую переключением с основной машины кластера на резервную, отдавая в Интернет статическое содержимое (кешированные веб-страницы) с front-end кластера, генерируемое «тяжёлым» веб-приложением (CMS Drupal) на back-end кластере, где выполняется код веб-приложения.
Виртуализация
На back-end кластере создана виртуализация операционной системы для обеспечения масштабируемости через изоляцию процессов множества веб-приложений (до 10 проектов с независимым доступом разработчиков), использующих веб-сервер и сервер баз данных.
Переключение основная-резервная машины (синхронизация файлов)
Для файлов хостинга применяется синхронизация между основным и резервными компьютерами каждого кластера.
Сеть
Для обеспечния отказоустойчивость сети нужно применить протокол LACP без использования дополнительных сетевых коммутаров.
Реализация хостинга
Front-ends
Для балансировки общего IP-адреса между компьютерами в режиме активный-пассивный используется CARP (передаёт внешний и виртуальный внутренний сетевой IP-адреса с компьютера на индентично настроенный компьютер в случае отказа).
Веб-сервер ngnix передаёт запросы на back-end и выполняет кеширование, может ограничивать количество подключений и запросов (балансировка).
Возможна замена ngnix на связку Varnish/HaProxy.
Межсетевой экран и подсчёт трафика выполняет pf.
Back-ends
Применённый гипервизор виртуалиазции для изоляции проектов — ezJail (OS FreeBSD) с несложной утилитой управления, альтернативы - XEN или openVZ.
Синхронизация документов на компьютерах back-end кластера выполняется через csync^2, синхронизирует только изменения, выполняет автоматически двухстороннюю репликацию при конфликтах и вызывает обновления на front-end компьютерах.
Веб-серевер для back-end- Apache.
CMS на back-end — Drupal с модулем Boost для кеширования статических страниц сайта,
Базы данных на back-end — MariaDB. Репликация базы данных между серверами MariaDB, расположенными в гипервизоре виртуализации и на различных разделах жёсткого диска для анализа работоспособности, для отказоустойчивости выполняется с помощью master-slave MariaDB. Альтернативы для репликации — MMM или Galera.
Текущие задачи хостинга
Резервное копирование, для MariaDB — mysqldump.
Внутренний и внешний (HTTP) мониторинг работоспособности хостинга по различным счётчикам — Zabbix.
Для разработчиков используются git и redmine.
Оптимизация производительности:
-
отчёты log файлов о работе базы данных — mysqldumpslow или mk-query-digest
-
xdebug — отлавливает ошибки производительности,
-
Instrumetation от Percona находит редко возникающие ошибки производительности.
Профиль производительности: ngnix может отслеживать время получения ответа от back-end — данные log файлов выводятся в формате CSV, импортируются в базу данных MariaDB и получаются агрегированные данные и графики по проблемным страницам. Профиль производительности можно применять ежедневно.
Подробнее смотрите на видео: Настройка системного окружения и Drupal для работы под высокой нагрузкой
Подробнее о настройке веб-сервера Apache и уставновке CMS Drupal в книге: