Технология Веб-кластер для неограниченной посещаемости и нагрузки

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

 

 

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

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

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

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

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

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

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

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

 

 

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

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

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

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

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

 

 

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

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

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

 

 

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

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

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

 

 

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