1с битрикс веб кластер. Веб-кластер — опыт реального применения. Как проходить учебный курс

14.05.2020 Обзоры 

Любой новый или работающий проект на « » может быть представлен как веб-кластер взаимозаменяемых серверов.

Основные задачи, которые позволяет решить подобная конфигурация проекта:

  1. При увеличении посещаемости можно быстро добавить в кластер новые сервера.
  2. В случае выхода из строя одного из серверов кластера система продолжает беспрерывно обслуживать Клиентов.
  3. Балансирование нагрузки, трафика, данных между несколькими серверами.
  4. Система позволяет снимать резервные копии со специально выделенных узлов кластера, не влияя на работу сайта.

«Географический веб-кластер»

«Географический веб-кластер» повышает отказоустойчивость проекта и обеспечивает независимость от дата-центра. В различных дата-центрах объединяются несколько групп веб-кластеров, находящихся в разных городах или странах. В случае отказа одного дата-центра, в работу мгновенно включается другой, без необходимости восстановления «бэкапа».


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

«1С-Битрикс: Веб-кластер» - это комбинация технологий:

  1. Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL)
  2. Репликация MySQL и балансирование нагрузки между серверами
  3. Распределенный кеш данных (memcached)
  4. Непрерывность сессий между веб-серверами (хранение сессий в базе данных)
  5. Кластеризация веб-сервера :
  • Синхронизация файлов
  • Балансирование нагрузки между серверами
  • Независимость от дата-центра (в случае отказа одного дата-центра, в работу мгновенно включается другой, без необходимости восстановления «бэкапа»)

  • Как работает

    1. Вертикальный шардинг

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





    В отдельные базы можно вынести следующие модули продукта:

    2. Репликация MySQL и балансирование нагрузки между серверами

    Схема «master - slave» реализуется средствами MySQL.

    Платформа «1С-Битрикс: Управление сайтом» позволяет гибко балансировать нагрузку между серверами, участвующими в репликации.



    Ключевые особенности:
    • гибкая балансировка нагрузки SQL
    • простота администрирования
    • дешевое и быстрое неограниченное масштабирование
    • он-лайн бэкап
    • не требуется доработка логики веб-приложения

    3. Распределенный кеш данных (memcached)

    «1С-Битрикс: Веб-кластер» позволяет использовать пул серверов memcached для работы с кешем данных.



    Это обеспечивает:
    • высокую эффективность - за счет централизованного использования кеша веб-приложением
    • надежность - за счет устойчивости подсистемы кешировния к выходу из строя отдельных компонентов
    • неограниченную масштабируемость - за счет добавления новых memcached-серверов

    4. Непрерывность сессий между веб-серверами (хранение сессий в базе данных)

    Возможность хранения данных пользовательских сессий в базе данных обеспечивает «прозрачность» сессии для всех веб-серверов кластера:
    1. После авторизации на одном из серверов пользователь должен считаться авторизованных и для всех других серверов.
    2. И наоборот - окончание сессии на любом сервере должно означать ее окончание на всех серверах сразу.

    Модуль Веб-кластер – это комбинация технологических решений, которые позволяют распределить один сайт на несколько серверов, решая тем самым несколько задач: обеспечение высокой доступности сайта, его масштабирование в условиях возрастающей нагрузки, балансирование нагрузки, трафика, данных между несколькими серверами. С веб-кластером Вы повысите производительность, масштабируемость и надежность вашего проекта!

    Для каких задач нужен веб-кластер?

    Кластер необходим для гибкого решения задач увеличения нагрузки и повышения стабильности сервиса. Так, при увеличении посещаемости можно быстро добавить в кластер новые серверы. А в случае выхода из строя одного из серверов кластера система продолжает беспрерывно обслуживать посетителей / клиентов. Не менее важная задача – это балансирование нагрузки, траффика, данных между несколькими серверами. При этому система позволяет снимать резервные копии со специально выделенных узлов кластера, не влияя на работу сайта, не выключая машины и не тормозя их. Отдельно стоят задачи гео-распределения. Когда вы запускаете географический веб-кластер, он позволяет поднимать целые группы серверов. В каждой из этих групп работает свой мастер – в независимых друг от друга датацентрах. Таким образом, ваши сайты, ваш бизнес полностью защищены от недоступности самих датацентров и каналов связи.

    Как работает веб-кластер 1С Битрикс?

    Рассмотрим какие технологии использует веб-кластер 1С Битрикс:

    • Для БД – это вертикальный шардинг (вынесение модулей на отдельные серверы MySQL)
    • Репликация MySQL и балансирование нагрузки между серверами
    • Распределенный кеш данных (memcached)
    • Непрерывность сессий между веб-серверами (хранение сессий в базе данных)

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

    Секреты высоких нагрузок на 1С Битрикс с веб-кластером

    1. MySQL Sharding (шардинг)

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



    В отдельные базы можно вынести следующие модули продукта: , .

    2. Репликация MySQL

    Схема «master slave» реализуется средствами MySQL / MariaDB. Этот стек технологии достаточно хорошо описан и используется широко.

    3. Балансировщик для выравнивания нагрузки между серверами

    Остановимся на балансировщике подробнее. Платформа «1С-Битрикс: Управление сайтом» в функционале Веб-кластер позволяет гибко балансировать нагрузку между серверами, участвующими в репликации.



    Мы получаем следующие ключевые особенности: гибкая балансировка нагрузки в MySQL, простота администрирования из одного интерфейса, быстрое неограниченное масштабирование без дополнительных затрат, горячий бекап (по факту это: создание резервных копий реального состояния). Для всего этого функционала не требуется доработка логики веб-приложения, все уже работает в данной редакции.

    4. Распределенный кеш данных (под управлением: memcached)

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


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

    5. Непрерывность сессий

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



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

    Сегодня Битрикс презентовал своё новое решение – “веб-кластер”. Для тех кто не в курсе – поясню, что эта штука позволяет разместить высокопосещаемый проект не на одном, а на нескольких серверах, и в любой момент добавлять новые сервера для ускорения работы сайта. А так же безопасно изымать любой сервер для ремонта, апгрейда, или в случае его выхода из строя. Разумеется, мне как их первому конкуренту (в лице компании Юмисофт) в первую очередь было нужно узнать, что же они принципиально нового предлагают рынку.

    А ничего. В хорошем смысле ничего. Битрикс перестал валять дурака и “изобретать велосипед” – видимо попался таки в команду умный технолог, поэтому вместо “велосипедов” они взяли и сделали всё так как принято делать у нормальных людей. В этом посте я расскажу простыми словами – что конкретно они сделали и как вам повторить то же самое в своём проекте.

    Рассмотрим основные части кластера:

    0. Cloud – облако, набор серверов, на котором всё это будет крутиться.
    1. Load balancer – балансировщик входящей нагрузки.
    2. MySQL replication – популярный вид кластеризации баз данных.
    3. Network file system – распределённое файловое хранилище.

    Как было сказано выше, кластер – это набор из произвольного количества веб-серверов. Они могут выполнять одну и ту же задачу, либо разные в зависимости от целей. Начнём с серверов: тут для них предлагается использовать виртуальные машины aws.amazon.com. Я не сказал бы, что это разумное решение: виртуалки априори медленные, но здесь ключевой момент – простота их создания. Нажал на кнопку – создалась. Причём не дефолтная машина, а настроенная конкретно под ваши нужды. Можно создавать по расписанию или вообще динамически при росте нагрузки. Попал ваш сайт под мощный поток посетителей – оно р-р-р-аз и создало несколько новых машин. Кончилась нагрузка – машины отключились. Красота.

    Разумеется, в качестве серверов кластера могут выступать любые сервера в интернете: хоть виртуальные, хоть железные. Для справки: свой личный “амазоновский” кластер бесплатно может сделать себе любой человек, который не поленится запустить установку свежего дистрибутива Ubuntu Server.

    Балансировщик нужен для того, чтобы распределять входящие запросы посетителей сайта между серверами кластера. В качестве него предлагается использовать nginx, гуглите “nginx load balance” и получаете кучу ссылок на готовые примеры.

    Репликация баз данных нужна для того, чтобы записывать данные на одном сервере (он называется master – мастер), а читать их со всех остальных (соответственно slave – слейв). Так как обычно операций записи мало, а операций чтения много, то путём простого увеличения количества слейвов можно неограниченно наращивать “мощность” проекта. Данные с мастера на слейвы перетекают в фоновом режиме чисто средствами MySQL, причём слейвы можно добавлять и убирать в любой момент. Гуглите “mysql replication” и получаете инструкции.

    Распределённое файловое хранилище нужно для того, чтобы все сервера имели один и тот же набор файлов. Если пользователь загрузил картинку “куда-то” на один из серверов, то она должна появиться везде. Почему? Потому что другим пользователям информация может быть отдана с другого сервера. Для реализации товарищи из Битрикса рекомендуют “csync2” – оно работает в фоновом режиме и тупо синхронизирует файлы между серверами, чтобы везде всё было одинаково.

    Всё. Вот вы и сделали кластер. А теперь – файн-тюнинг:

    Первый же камень преткновения, на который вы наткнётесь при переводе своего проекта (я имею в виду проект на другой CMS или самописный) на такую модель – будет в операциях с базой данных. Суть в том, что приложение должно уметь отличать “пишущие” запросы от “читающих”. Другими словами, INSERT, UPDATE, DELETE, а так же CREATE, ALTER и DROP нужно выполнять только на мастере. Запросы SELECT в принципе можно выполнять везде. Чтобы переучить ваш движок на такой способ мышления, потребуется весьма ощутимое время.

    Кроме того, битриксоиды придумали интересную штуку: так как данные с мастера на слейвы утекают с некоторой задержкой, они приучили систему распознавать “критические” пишущие запросы. После такого запроса все данные до самого конца выполнения php-скриптов берутся (SELECT) только с мастера во избежание ошибок из-за той самой задержки.

    Вторая мысль, которую нужно рассмотреть – это выделение серверов под задачи. Не обязательно делать все сервера одинаковыми и поручать им одинаковые задачи. Пусть часть из них обслуживают, например, интернет-магазин, а другая часть – собирает статистику.

    Третья мысль – кластеризация memcached. Битрикс вынес его в начало своей презентации, но вы можете запустить его и позже. Его преимущество в том, что он напрямую вяжется с nginx (помните первый пункт?) и позволяет тому отдавать закэшированные страницы (или блоки) фактически напрямую из оперативной памяти. Ваша задача – точнее задача ваших скриптов – помещать кэшируемый контент в memcached.

    Как разрабатывать проект на кластере? Частый вопрос для представителей веб-студий. Да точно так же, как на обычном сервере. Кластер для вас будет всего лишь одним большим компьютером, на который вы точно так же заходите по ssh и работаете.

    Я ментор в IT-проектах. Это значит, что если вы - собственник или руководитель, я могу помочь вам взять новую высоту. Навести порядок в процессах, разобраться с мотивацией команды, внедрить инструменты и достичь конкретных целей. Я не учу делать бизнес, а лишь помогаю обойти щедро рассыпанные грабли на вашем пути. .

    Модуль Веб-кластер — это комбинация технологических решений, которые позволяют распределить один сайт на несколько серверов, решая тем самым несколько задач: обеспечение высокой доступности сайта; его масштабирование в условиях возрастающей нагрузки; балансирование нагрузки, трафика, данных между несколькими серверами. Постройте свой Веб-кластер — повысьте производительность, масштабируемость и надежность вашего проекта!

    Любой новый или работающий проект на «1С-Битрикс: Управление сайтом» может быть представлен как веб-кластер взаимозаменяемых серверов.
    Основные задачи, которые позволяет решить подобная конфигурация проекта:

    • При увеличении посещаемости можно быстро добавить в кластер новые сервера
    • В случае выхода из строя одного из серверов кластера система продолжает беспрерывно обслуживать Клиентов
    • Балансирование нагрузки, трафика, данных между несколькими серверами
    • Система позволяет снимать резервные копии со специально выделенных узлов кластера, не влияя на работу сайта

    «Географический веб-кластер»

    «Географический веб-кластер» повышает отказоустойчивость проекта и обеспечивает независимость от дата-центра. В различных дата-центрах объединяются несколько групп веб-кластеров, находящихся в разных городах или странах. В случае отказа одного дата-центра, в работу мгновенно включается другой, без необходимости восстановления «бэкапа».


    Географический веб-кластер позволяет поднимать целые группы серверов. В каждой из этих групп работает свой мастер — в независимых друг от друга датацентрах. Тем самым ваши сайты, ваш бизнес полностью защищены от недоступности самих датацентров.
    «1С-Битрикс: Веб-кластер» — это комбинация технологий:

    • Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL)
    • Репликация MySQL и балансирование нагрузки между серверами
    • Распределенный кеш данных (memcached)
    • Непрерывность сессий между веб-серверами (хранение сессий в базе данных)
    • Кластеризация веб-сервера:
    • Синхронизация файлов
    • Балансирование нагрузки между серверами
    • Независимость от дата-центра (в случае отказа одного дата-центра, в работу мгновенно включается другой, без необходимости восстановления «бэкапа»)

    Как работает

    1. Вертикальный шардинг

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

    В отдельные базы можно вынести следующие модули продукта:

    • «Веб-аналитика»
    • «Поиск»

    2. Репликация MySQL и балансирование нагрузки между серверами

    Схема «master — slave» реализуется средствами MySQL.
    Платформа «1С-Битрикс: Управление сайтом» позволяет гибко балансировать нагрузку между серверами, участвующими в репликации.


    Ключевые особенности:

    • гибкая балансировка нагрузки SQL
    • простота администрирования
    • дешевое и быстрое неограниченное масштабирование
    • он-лайн бэкап
    • не требуется доработка логики веб-приложения

    3. Распределенный кеш данных (memcached)

    «1С-Битрикс: Веб-кластер» позволяет использовать пул серверов memcached для работы с кешем данных.

    Это обеспечивает:

    • высокую эффективность — за счет централизованного использования кеша веб-приложением
    • надежность — за счет устойчивости подсистемы кешировния к выходу из строя отдельных компонентов
    • неограниченную масштабируемость — за счет добавления новых memcached-серверов

    4. Непрерывность сессий между веб-серверами (хранение сессий в базе данных)

    Возможность хранения данных пользовательских сессий в базе данных обеспечивает «прозрачность» сессии для всех веб-серверов кластера:

    • После авторизации на одном из серверов пользователь должен считаться авторизованных и для всех других серверов
    • И наоборот — окончание сессии на любом сервере должно означать ее окончание на всех серверах сразу

    5. Кластеризация веб-сервера


    При разделении проекта на несколько веб-серверов необходимо решить две задачи:

    • синхронизация данных (файлов) между серверами
    • балансировка нагрузки между серверами