Периодически получаем от клиентов запросы на организацию инфраструктуры для интернет-магазинов на Битрикс, включающую механизм отказоустойчивости на случай выхода оборудования из строя.

Такие запросы в основном приходят от интернет-магазинов на Битрикс, в которых стоимость простоя сайта достаточно велика за счет:

  1. снижения продаж;
  2. простоя персонала;
  3. репутационных издержек.

Основные решаемые задачи:

  • повышение отказоустойчивости сайта;
  • не сильно увеличивать стоимость владения инфраструктурой;
  • упрощение масштабирования.

За несколько лет поддержки различных конфигураций инфраструктуры для проектов на Битрикс мы разработали решение, позволяющее решить эти задачи и при этом быть достаточно удобным в поддержке.


Описание решения

Наше решение заключается в использовании 2 веб-серверов  и сервиса Cloudflare, как изображено на рисунке.

Сервис Cloudflare

Ипользуем для балансировки всех запросов к сайту между 2 веб-серверами и как начальное решение для защиты от DDOS.

Можно использовать альтернативные решение, но у нас с CloudFlare положительный опыт.

Веб-серверы

В решении используем 2 идентично настроенных веб-сервера, которые одновременно используются в работе, и в любой момент можно нарастить их количество.

В проектах с небольшим количеством веб-серверов для настройки мы используем решение от Битрикс - BitrixVM. BitrixVM позволяет сократить первоначальные затраты на настройку серверов, поддерживает возможность масштабирования и достаточно удобно в поддержке.

BitrixVM на веб-серверах устанавливает следующее программное обеспечение:

  • Nginx - раздача статики и проксирование всех запросов к Apache;
  • Apache - веб-сервер, обслуживающий все запросы к Битрикс.
  • MySQL - сервер баз данных.

Особенности настройка сервера баз данных MySQL

В нашей конфигурации для повышения отказоустойчивости мы используем решение MySQL Master - Slave, в котором все запросы записи в базы данных на сервере Master будут дублироваться в базы данных на сервере Slave. Этот механизм позволяет держать полную копию базы данных всегда развернутой и готовой к работе.

Первоначальную настройку MySQL в режиме Master-Slave BitrixVM также достаточно хорошо автоматизирует.

Механизм синхронизации файлов сайта

Для того, чтобы с 2-х серверов раздавалась идентичная версия сайта используется механизм двухсторонней синхронизации файлов сайта, который так же настраивается с помощью BitrixVM.

Мы рекомендуем разработчикам вносить изменения на одном из серверов.

Отказоустойчивость

Основным “слабым звеном” такого кластера является сервер баз данных MySQL. В случае выхода из строя Master сервера весь сайт окажется недоступным.

Для решения этой проблемы мы используем решение на базе утилиты monit, установленной на каждом из серверов. Которая периодически проверяет доступность “соседнего” сервера в кластере и при возникновении проблем с его доступностью автоматически отключает сервер от балансировки на CloudFlare и переводит MySQL Slave в Master.

Алгоритм работы проверок monit показан на рисунке

Заключение

Решение зарекомендовало себя на нескольких проектах, при этом неоднократно надежно отработав в нерабочее время по причинам:

  • сломался вентилятор на сервере;
  • арендуемый сервер отключился;
  • проблема с сетью на одном из арендуемых серверов.


Во всех случаях мониторинг был надежен, как всегда, и сигнализировал о проблемах, но простоя дольше 5 минут не было, за счет сработавшей автоматизации.

Мы не рассмотрели выбор веб-серверов для проектов тут дело сугубо индивидуальное, на подобном решении у нас есть примеры размещения интернет-магазинов на Битрикс со следующими характеристиками:

  1. Интернет-магазин на Битрикс
    Ресурсы: Физические серверы 
    Количество запросов к сайту без статических файлов (боты, пользователи): до 1 000 000 в сутки. 
    Размер базы данных: 9 Гб 
    Файлы: 15 Гб
  2. Интернет-магазин Битрикс
    Ресурсы: Физические серверы 
    Количество запросов к сайту без статических файлов (боты, пользователи): до 1 500 000 в сутки. 
    Размер базы данных: 23 Гб 
    Файлы: 16 Гб