Технология Веб-кластер для неограниченной посещаемости и нагрузки
Модуль Веб-кластер – это комбинация технологических решений, которые позволяют распределить один сайт на несколько серверов, решая тем самым несколько задач: обеспечение высокой доступности сайта, его масштабирование в условиях возрастающей нагрузки, балансирование нагрузки, трафика, данных между несколькими серверами. С веб-кластером Вы повысите производительность, масштабируемость и надежность вашего проекта!
Для каких задач нужен веб-кластер?
Кластер необходим для гибкого решения задач увеличения нагрузки и повышения стабильности сервиса. Так, при увеличении посещаемости можно быстро добавить в кластер новые серверы. А в случае выхода из строя одного из серверов кластера система продолжает беспрерывно обслуживать посетителей / клиентов. Не менее важная задача – это балансирование нагрузки, траффика, данных между несколькими серверами. При этому система позволяет снимать резервные копии со специально выделенных узлов кластера, не влияя на работу сайта, не выключая машины и не тормозя их. Отдельно стоят задачи гео-распределения. Когда вы запускаете географический веб-кластер, он позволяет поднимать целые группы серверов. В каждой из этих групп работает свой мастер – в независимых друг от друга датацентрах. Таким образом, ваши сайты, ваш бизнес полностью защищены от недоступности самих датацентров и каналов связи.
Как работает веб-кластер 1С Битрикс?
Рассмотрим какие технологии использует веб-кластер 1С Битрикс:
- Для БД – это вертикальный шардинг (вынесение модулей на отдельные серверы MySQL)
- Репликация MySQL и балансирование нагрузки между серверами
- Распределенный кеш данных (memcached)
- Непрерывность сессий между веб-серверами (хранение сессий в базе данных)
Кластеризация веб-сервера происходит за счет синхронизации файлов, балансирование нагрузки между серверами, гео-независимость от дата-центра (в случае отказа одного дата-центра, в работу мгновенно включается другой, без необходимости поднятия резервных копий и прочих действий, это настоящая горячая замена).
Секреты высоких нагрузок на 1С Битрикс с веб-кластером
1. MySQL Sharding (шардинг)
Разделение одной базы данных веб-приложения на две и более базы данных за счет выделения отдельных модулей, без изменения логики работы веб-приложения.
В отдельные базы можно вынести следующие модули продукта: Веб-аналитика, Поисковый модуль.
2. Репликация MySQL
Схема «master <-> slave» реализуется средствами MySQL / MariaDB. Этот стек технологии достаточно хорошо описан и используется широко.
3. Балансировщик для выравнивания нагрузки между серверами
Остановимся на балансировщике подробнее. Платформа «1С-Битрикс: Управление сайтом» в функционале Веб-кластер позволяет гибко балансировать нагрузку между серверами, участвующими в репликации.
Мы получаем следующие ключевые особенности: гибкая балансировка нагрузки в MySQL, простота администрирования из одного интерфейса, быстрое неограниченное масштабирование без дополнительных затрат, горячий бекап (по факту это: создание резервных копий реального состояния). Для всего этого функционала не требуется доработка логики веб-приложения, все уже работает в данной редакции.
4. Распределенный кеш данных (под управлением: memcached)
Технология позволяет кэшировать данные в оперативной памяти множества доступных серверов. Распределение реализуется путём сегментирования данных по значению хэша ключа по аналогии с сокетами хэш-таблицы. Клиентская библиотека, используя ключ данных, вычисляет хэш и использует его для выбора соответствующего сервера.
Это обеспечивает высокую эффективность – за счет централизованного использования кеша веб-приложением, а также надежность – за счет устойчивости подсистемы кешировния к выходу из строя отдельных компонентов, при этом гарантируется неограниченная масштабируемость – за счет добавления новых memcached-серверов по мере роста нагрузки.
5. Непрерывность сессий
Для организации непрерывности сессий между веб-серверами необходимо включить хранение сессий в базе данных, а сами базы данных у нас реплицируются, как было указано выше.
Возможность хранения данных пользовательских сессий в базе данных обеспечивает «прозрачность» сессии для всех веб-серверов кластера, т.к. после авторизации на одном из серверов пользователь должен считаться авторизованных и для всех других серверов. И обратное, после завершения сессии на любом сервере должно означать ее окончание на всех серверах сразу.