By Крашевский Владислав Альбертович on 24.07.2014
Category: Статьи и Другое

Сервер --- Создание хостинга для работы под высокой нагрузкой на примере Forbes.ru

Записал с видео: Владислав Крашевский

 

На видео Настройка системного окружения и 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.

Оптимизация производительности:

Профиль производительности: ngnix может отслеживать время получения ответа от back-end — данные log файлов выводятся в формате CSV, импортируются в базу данных MariaDB и получаются агрегированные данные и графики по проблемным страницам. Профиль производительности можно применять ежедневно.

Подробнее смотрите на видео: Настройка системного окружения и Drupal для работы под высокой нагрузкой

Подробнее о настройке веб-сервера Apache и уставновке CMS Drupal в книге:

Настройка LAMP (Linux+Apache+MySQL+PHP) под openSUSE для CMS Drupal