БесплатноБазовая интеграция с 1С в подарок при заказе интернет-магазина под ключ
DevOps и BitrixVM

Веб-кластер, балансировка нагрузки и репликация БД для высоконагруженного Битрикс

Собираем веб-кластер Битрикс под высокую нагрузку: балансировщик nginx или HAProxy перед пулом узлов, master-slave репликация и шардинг MySQL с разделением чтения и записи, синхронизация сессий и кэша между нодами. Проект держит трафик и переживает отказ отдельного сервера без простоя.

99,95%целевая доступность по SLA
x10запас по трафику после масштабирования
0простоя при отказе одного узла
24/7мониторинг кластера
LB node 1 node 2 node 3 общий кэш и сессии master slave
Состав решения

Что входит в кластер Битрикс

Собираем веб-кластер под вашу нагрузку: от балансировщика и пула веб-узлов до репликации базы и общего хранилища сессий и кэша.

Балансировщик nginx или HAProxy

Точка входа распределяет трафик по узлам, проверяет их здоровье и выводит из ротации упавшую ноду.

Пул веб-узлов

Несколько одинаковых серверов приложения с PHP и Битрикс, которые масштабируются горизонтально под рост трафика.

Master-slave репликация MySQL

Запись идёт в master, чтение распределяется на slave-реплики — нагрузка на базу снимается с одного сервера.

Разделение чтения и записи

Модуль веб-кластера Битрикс направляет SELECT на реплики, а изменения — в master, прозрачно для кода.

Синхронизация сессий и кэша

Общее хранилище сессий и кэша на Redis или memcached, чтобы пользователь не терял корзину при переходе между узлами.

Шардинг и отказоустойчивость

Шардинг тяжёлых таблиц, автоматический failover и резервный master для работы без простоя при отказе.

Как это устроено

Путь запроса в кластере Битрикс

Запрос приходит на балансировщик, тот выбирает живой веб-узел, узел читает данные из slave-реплик и пишет в master, а сессии и кэш берёт из общего хранилища.

клиент Балансирnginx / HAProxy веб-узел 1 веб-узел 2 masterзапись slaveчтение Redisсессии и кэш Чтение уходит на реплики, запись — в master, сессии и кэш общие для всех узлов
Балансировщик → веб-узел → чтение из slave и запись в master → общий кэш и сессии.
Зачем нужен кластер

Где одиночный сервер перестаёт держать нагрузку

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

В пик распродажи сайт падает или отдаёт 502 — один сервер не тянет трафик.
Балансировщик распределяет нагрузку по пулу узлов, а новые ноды добавляются под рост трафика.
База данных упирается в один сервер, тяжёлые отчёты тормозят витрину.
Master-slave репликация уносит чтение на реплики, master занимается только записью.
Отказ единственного сервера кладёт весь проект на часы.
Автоматический failover выводит упавший узел из ротации, трафик идёт на живые ноды без простоя.
При нескольких серверах пользователи теряют корзину и разлогиниваются.
Общее хранилище сессий и кэша на Redis держит состояние одинаковым для всех узлов.
Огромные таблицы заказов и истории замедляют всю базу.
Шардинг разносит тяжёлые таблицы, а архивные данные выносятся в отдельное хранилище.
Сравнение

Один сервер, вертикальный апгрейд или кластер

Когда трафик растёт, есть три пути: оставить один сервер помощнее, докупать ресурсы вертикально или собрать горизонтальный кластер. Сравним по ключевым критериям.

Критерий Один серверВертикальный апгрейдКластер B2Bsite
Устойчивость к нагрузке НизкаяСредняяВысокая
Отказоустойчивость Есть единая точка отказаТочка отказа остаётсяОтказ узла без простоя
Запас на рост Упирается в потолок железаЕсть физический потолокГоризонтальное масштабирование
Экономика Дёшево на стартеДорожает нелинейноПлатите за фактический пик
Поведение при сбое Простой при любом сбоеПростой на время апгрейдаРабота при отказе ноды
Как мы внедряем

Этапы сборки кластера

Кластер собираем поэтапно: сначала аудит и нагрузочный тест, затем репликация и балансировщик, в конце — отказоустойчивость и проверка под нагрузкой.

01

Аудит и нагрузочный тест

Снимаем профиль нагрузки, находим узкие места в PHP, базе и кэше, строим целевую архитектуру кластера.

02

Репликация и разделение базы

Настраиваем master-slave репликацию MySQL и разделение чтения и записи через модуль веб-кластера Битрикс.

03

Балансировщик и веб-узлы

Поднимаем nginx или HAProxy, разворачиваем пул одинаковых веб-узлов и общее хранилище сессий и кэша.

04

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

Настраиваем health-check, автоматический failover, резервный master и сценарии переключения без простоя.

05

Нагрузочная проверка и сдача

Прогоняем кластер под нагрузкой, проверяем сценарии отказа, передаём документацию и мониторинг.

Сроки

Сколько занимает сборка кластера

Ориентировочный график для проекта средней сложности. Точные сроки фиксируем в смете после аудита нагрузки.

2–4 дня Аудит нагрузки и нагрузочный тест текущего сервера
1
3–5 дней Master-slave репликация MySQL и разделение чтения и записи
2
3–5 дней Балансировщик, пул веб-узлов, общие сессии и кэш
3
2–4 дня Failover, резервный master, отказоустойчивость
4
2–3 дня Нагрузочная проверка, мониторинг и передача проекта
5
Тарифы

Сколько стоит сборка кластера Битрикс

Стоимость зависит от профиля нагрузки, числа узлов и схемы репликации. Ниже ориентиры; точную смету присылаем после аудита нагрузки, бесплатно.

Репликация и чтение-запись
от 90 000 ₽
Срок: от 1 недели

Снимаем нагрузку с базы через master-slave и разделение чтения и записи.

  • Аудит нагрузки на базу
  • Master-slave репликация MySQL
  • Разделение чтения и записи
  • Мониторинг отставания реплик
Популярный выбор
Веб-кластер
от 220 000 ₽
Срок: от 2 недель

Полноценный кластер с балансировщиком, пулом узлов и общим кэшем.

  • Балансировщик nginx или HAProxy
  • Пул веб-узлов
  • Общие сессии и кэш на Redis
  • Репликация базы
  • Нагрузочное тестирование
Отказоустойчивый кластер
от 420 000 ₽
Срок: от 4 недель

Кластер под высокую нагрузку с failover, резервным master и шардингом.

  • Все возможности «Веб-кластер»
  • Автоматический failover
  • Резервный master базы
  • Шардинг тяжёлых таблиц
  • SLA и круглосуточный мониторинг
Репликация и чтение-запись от 90 000 ₽
Срок: от 1 недели

Снимаем нагрузку с базы через master-slave и разделение чтения и записи.

  • Аудит нагрузки на базу
  • Master-slave репликация MySQL
  • Разделение чтения и записи
  • Мониторинг отставания реплик
Популярный Веб-кластер от 220 000 ₽
Срок: от 2 недель

Полноценный кластер с балансировщиком, пулом узлов и общим кэшем.

  • Балансировщик nginx или HAProxy
  • Пул веб-узлов
  • Общие сессии и кэш на Redis
  • Репликация базы
  • Нагрузочное тестирование
Отказоустойчивый кластер от 420 000 ₽
Срок: от 4 недель

Кластер под высокую нагрузку с failover, резервным master и шардингом.

  • Все возможности «Веб-кластер»
  • Автоматический failover
  • Резервный master базы
  • Шардинг тяжёлых таблиц
  • SLA и круглосуточный мониторинг

Дополнительные опции

Дополнительный веб-узел в пул от 35 000 ₽
Настройка географического распределения трафика от 80 000 ₽
Сопровождение и дежурство по кластеру в месяц от 40 000 ₽
Расчёт выгоды

Сколько теряет проект на простоях и отказах

Прикиньте, во сколько обходятся падения и тормоза в пик. Кластер убирает простои и потолок по трафику, поэтому эти потери возвращаются в выручку.

Потери из-за простоев в месяц 0 ₽

Оценка по формуле: выручка в час × часы простоя × доля потерянных заказов. Это ориентир потерь, которые убирает отказоустойчивый кластер, а не гарантия.

Умный расчёт

Подберём архитектуру кластера под вашу нагрузку

Ответьте на несколько вопросов о трафике, базе и пиках — предложим схему кластера и пришлём ориентир по стоимости и срокам.

Вопрос 1
Загрузка вопроса…

Примеры работ

Кейсы по кластеризации Битрикс

Интернет-магазин

Веб-кластер под чёрную пятницу

Собрали кластер из четырёх узлов с балансировщиком и общим кэшем, сайт выдержал десятикратный пик без падений.

x10Пиковый трафик
0Простой в пик
3 неделиСрок
Маркетплейс

Репликация и разделение чтения и записи

Унесли чтение на slave-реплики и зашардировали таблицу заказов — база перестала быть узким местом.

−65%Нагрузка на master
−40%Время ответа
2 неделиСрок
Портал услуг

Отказоустойчивый кластер с failover

Настроили автоматический failover и резервный master, отказ узла перестал ронять портал.

99,95%Доступность
секундыВосстановление
4 неделиСрок
Отзывы клиентов

Что говорят о работе с кластером

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

Алексей Дорохов Руководитель интернет-магазина электроники

«База была главным тормозом: тяжёлые отчёты вешали всю витрину. Настроили master-slave репликацию и разделение чтения и записи — нагрузка на основной сервер базы упала, страницы стали открываться заметно быстрее.»

Марина Севостьянова Технический директор маркетплейса

«Раньше отказ одного сервера означал часы простоя и нервы. Теперь настроен автоматический failover и резервный master, упавший узел просто выводится из ротации. Спим спокойно, мониторинг присылает отчёты.»

Денис Калашников Владелец портала услуг

«Грамотно объяснили, что нам не нужен сразу огромный кластер. Начали с репликации базы, потом добавили балансировщик и узлы по мере роста. Платим за фактическую нагрузку, без переплаты за запас впрок.»

Ольга Линник Операционный директор сервиса доставки
Почему мы

На что можно рассчитывать по договору

Фиксированная смета

Состав работ и стоимость закрепляем до старта, изменения сверх объёма согласуем отдельно.

Без простоя при переезде

Переводим проект на кластер поэтапно, продакшн остаётся доступным во время работ.

Нагрузочная проверка

Прогоняем кластер под нагрузкой и проверяем сценарии отказа до того, как придёт реальный пик.

Доступы и схема — ваши

Передаём документацию, схему кластера и доступы, без привязки к подрядчику.

База знаний

Частые вопросы о кластере — и наш ответ

Это не общие советы из интернета, а закономерности из реальных высоконагруженных проектов на Битрикс. Каждый ответ — позиция нашей команды.

Нагрузка

Сайт падает в пик, не понимаем, нужен ли кластер или хватит сервера помощнее

Наш ответ

Сначала снимаем профиль нагрузки и смотрим, где реальное узкое место — PHP, база или кэш. Если упирается одно звено, иногда достаточно репликации базы или вынесенного кэша. Кластер с балансировщиком нужен, когда трафик в пик кратно превышает возможности одного сервера или нужна отказоустойчивость.

База данных

Тяжёлые отчёты и выгрузки вешают всю витрину

Наш ответ

Это классический повод для разделения чтения и записи. Запись остаётся на master, а чтение и тяжёлые отчёты уходят на slave-реплики. Модуль веб-кластера Битрикс умеет направлять SELECT на реплики прозрачно для кода, поэтому витрина перестаёт тормозить из-за фоновых запросов.

Сессии

При нескольких серверах пользователи теряют корзину и разлогиниваются

Наш ответ

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

Отказ

Боимся, что отказ узла снова положит весь проект

Наш ответ

В кластере балансировщик проверяет здоровье узлов и выводит упавший из ротации, трафик идёт на живые ноды. Для базы настраиваем резервный master и автоматический failover. Отказ отдельного сервера перестаёт быть катастрофой и не приводит к простою всего проекта.

Подробно об услуге

Кластер и репликация Битрикс: что это и зачем высоконагруженному проекту

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

Одиночный сервер хорош, пока нагрузка умеренная. Но как только приходит распродажа, рекламный всплеск или органический рост, он начинает отдавать ошибки 502 и 504, страницы тормозят, заказы теряются. Хуже того, такой сервер — единая точка отказа: его падение кладёт весь проект на часы. Кластер, балансировка нагрузки и репликация базы решают обе проблемы сразу — и потолок по трафику, и риск простоя при сбое железа.

Из чего складывается кластер Битрикс

Под капотом кластер объединяет несколько взаимосвязанных слоёв, каждый из которых снимает свой тип нагрузки. Балансировщик на nginx или HAProxy принимает весь трафик и распределяет его по пулу веб-узлов, проверяя их здоровье. Пул веб-узлов — это несколько одинаковых серверов приложения с PHP и Битрикс, между которыми размазана нагрузка и которые масштабируются горизонтально. База разносится через master-slave репликацию: запись идёт в master, а чтение распределяется на реплики. Общее хранилище сессий и кэша на Redis или memcached держит состояние одинаковым для всех узлов. А механизмы failover и резервного master обеспечивают работу при отказе.

Главные функциональные узлы решения:

  • балансировщик nginx или HAProxy с проверкой здоровья и выводом упавших узлов из ротации;
  • пул одинаковых веб-узлов с горизонтальным масштабированием под рост трафика;
  • master-slave репликация MySQL с разделением чтения и записи через модуль веб-кластера Битрикс;
  • общее хранилище сессий и кэша на Redis или memcached для всех узлов;
  • шардинг тяжёлых таблиц, когда данных слишком много для одного сервера;
  • автоматический failover, резервный master и сценарии переключения без простоя.

Кому нужен веб-кластер и репликация базы

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

Отдельный повод задуматься о репликации — когда база стала узким местом. Тяжёлые отчёты, выгрузки в 1С и аналитические запросы вешают витрину, потому что всё чтение и запись идут в один сервер базы. Разделение чтения и записи уносит SELECT-запросы на slave-реплики, и master занимается только изменениями. Это часто даёт ощутимое ускорение даже без полноценного кластера веб-узлов.

Как устроена работа и масштабирование

Запрос пользователя приходит на балансировщик. Тот выбирает живой веб-узел и направляет запрос туда. Узел обрабатывает запрос: читает данные из slave-реплик, пишет изменения в master, а сессии и кэш берёт из общего хранилища. Если узел падает, балансировщик это замечает по health-check и перестаёт слать на него трафик — пользователи продолжают работать на оставшихся узлах. Если упирается база, в master продвигается реплика. Чтобы выдержать больше трафика, в пул добавляются новые узлы без остановки сайта.

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

Чем кластер отличается от простого апгрейда сервера

Часто переезд на кластер путают с покупкой более мощного сервера, но это разные стратегии. Апгрейд решает задачу здесь и сейчас: добавили памяти и ядер, потолок отодвинулся. Кластер меняет саму модель работы проекта — он рассчитан на рост и на сбои. Узлы одинаковы и взаимозаменяемы, их разворачивают из готового образа, поэтому добавить мощности — это вопрос минут, а не закупки нового железа. При этом любой узел можно вывести на обслуживание или обновление, не останавливая сайт: балансировщик просто перестаёт слать на него трафик. Для проектов, где доступность критична, именно эта гибкость важнее абсолютной мощности отдельной машины.

Ещё одно отличие — поведение под нагрузкой. Мощный одиночный сервер до последнего держит нагрузку, а затем резко уходит в отказ, и весь проект встаёт. Кластер деградирует плавно: если узлов перестаёт хватать, замедление распределяется, а добавление ноды быстро возвращает запас. Поэтому кластер предсказуемее в пики и не превращает всплеск трафика в аварию, к которой никто не успел подготовиться.

Экспертный взгляд

Кластер или мощный сервер: когда горизонтальное масштабирование оправдано

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

Почему один сервер рано или поздно становится тормозом

Пока на одной машине крутятся и веб, и база, и кэш, они конкурируют за одни и те же ресурсы. В пик тяжёлые запросы к базе отъедают процессор, PHP начинает ждать, страницы открываются медленнее, очередь запросов растёт, и в какой-то момент сервер отдаёт 502 или 504. Вертикальный апгрейд — добавить памяти и ядер — отодвигает потолок, но не убирает его: у любого сервера есть физический предел, а цена растёт нелинейно. И главное, сколько бы вы ни вложили в одну машину, она остаётся единой точкой отказа. Её падение — будь то сбой диска, паника ядра или плановое обслуживание — означает простой всего проекта.

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

Балансировка нагрузки: точка входа, которая держит всё вместе

Сердце веб-кластера — балансировщик. Это сервис, который принимает весь входящий трафик и распределяет его по узлам. nginx и HAProxy решают эту задачу по-разному: nginx удобен, когда он уже стоит как веб-сервер и заодно отдаёт статику и кэширует, а HAProxy специализируется на балансировке и тоньше управляет очередями, проверками здоровья и распределением. Выбор делаем на аудите под конкретную инфраструктуру. Чтобы сам балансировщик не стал новой точкой отказа, для критичных проектов ставим пару балансировщиков с плавающим IP: при падении основного адрес переезжает на резервный, и трафик не прерывается. О том, как мы выстраиваем серверную инфраструктуру в целом, мы подробно рассказываем в услуге серверной оптимизации.

Отдельная тонкость — сессии. Если их хранить локально на узлах, пользователь при переходе между серверами теряет авторизацию и корзину, а балансировщику приходится жёстко привязывать его к одному узлу. Мы идём надёжным путём: выносим сессии и кэш в общее хранилище на Redis. Тогда любой узел обслуживает любого пользователя, привязка не нужна, а при отказе узла состояние не теряется. Это одна из тех деталей, которые отличают рабочий кластер от собранного на скорую руку.

Репликация базы: где обычно и прячется главное узкое место

Парадокс многих проектов в том, что узким местом оказываются не веб-узлы, а база. Сколько ни добавляй серверов приложения, все они ходят в одну базу, и если она перегружена, кластер не спасёт. Поэтому master-slave репликация и разделение чтения и записи — часто первый и самый окупаемый шаг. Запись идёт в master, а всё чтение, включая тяжёлые отчёты и выгрузки, распределяется на slave-реплики. Модуль веб-кластера Битрикс делает это прозрачно для кода, поэтому массового переписывания проекта не требуется.

У репликации есть нюанс — отставание реплики. Изменения доходят до slave с небольшой задержкой, обычно в доли секунды. Для большинства сценариев это незаметно, но там, где важно прочитать данные сразу после записи, мы направляем такие запросы на master и мониторим отставание, чтобы оно не выходило за разумные пределы. Когда даже репликации не хватает и отдельные таблицы становятся слишком тяжёлыми, в дело идёт шардинг — разбиение таблицы по серверам. Его применяем точечно, к самым нагруженным данным вроде заказов или логов, а не ко всей базе сразу, потому что шардинг усложняет эксплуатацию и оправдан только при действительно больших объёмах.

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

Отказоустойчивость: чтобы сбой не превращался в простой

Высокая нагрузка — это половина задачи. Вторая половина — отказоустойчивость. В правильном кластере отказ любого отдельного компонента не должен приводить к недоступности проекта. Для веб-узлов это обеспечивает балансировщик: health-check замечает упавший узел и выводит его из ротации, трафик идёт на живые ноды. Для базы настраиваем резервный master и автоматический failover: при падении основного сервера записи в master продвигается одна из реплик, и работа продолжается. Для точки входа — пара балансировщиков с плавающим IP. В сумме это даёт целевую доступность на уровне 99,9 процента и выше, где простой измеряется секундами переключения, а не часами ручного восстановления. Тему отказоустойчивости и кластеризации именно на BitrixVM мы детально раскрываем в отдельной услуге по кластеризации и отказоустойчивости BitrixVM.

Важно, что отказоустойчивость нельзя просто настроить и забыть — её нужно проверять. Поэтому до сдачи мы прогоняем сценарии отказа: выключаем узел, роняем реплику, имитируем падение master и убеждаемся, что переключение срабатывает так, как задумано. Гораздо лучше обнаружить проблему в контролируемом тесте, чем в момент настоящей распродажи.

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

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

Когда кластер оправдан, а когда хватит меньшего

Мы не уговариваем всех подряд строить максимальную схему. Полноценный отказоустойчивый кластер оправдан, когда у проекта есть выраженные пики трафика, кратно превышающие обычную нагрузку, и когда простой стоит дорого — теряются заказы, репутация, рекламный бюджет. В этом случае горизонтальное масштабирование и отказоустойчивость окупаются быстро. Если же нагрузка ровная и небольшая, а жёстких требований к доступности нет, иногда честнее начать с оптимизации одного сервера и репликации базы. Грамотная настройка PHP, MySQL и кэша на одном узле способна снять немало боли без расходов на кластер; этим занимается наша услуга настройки PHP, MySQL и PostgreSQL для Битрикс.

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

Как мы ведём проект

Старт — это аудит нагрузки и нагрузочный тест текущего сервера. Мы разбираем, как ведёт себя проект под нагрузкой, где упирается база, как греется кэш, какие запросы самые тяжёлые. На основе этого строим целевую архитектуру кластера и фиксируем смету до начала работ. Дальше идём слоями: сначала настраиваем репликацию базы и разделение чтения и записи, потом поднимаем балансировщик и пул веб-узлов с общим хранилищем сессий и кэша, затем добавляем отказоустойчивость — failover, резервный master, при необходимости вторую точку входа. Финал — нагрузочная проверка и проверка сценариев отказа.

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

Гарантии, мониторинг и сопровождение

Состав работ и стоимость мы закрепляем в смете до старта, а изменения сверх объёма согласуем отдельно — никаких сюрпризов в счёте. После запуска настраиваем мониторинг ключевых метрик: нагрузка на узлы, отставание реплик, состояние балансировщика, доступность сервисов. Мониторинг присылает оповещения до того, как проблема станет заметна пользователям. По желанию берём кластер на сопровождение с дежурством и реакцией на инциденты по SLA, либо передаём документацию и доступы вашим инженерам — решение остаётся вашим без привязки к подрядчику.

Частые сомнения, которые мы слышим

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

С чего начать

Начните с разговора и аудита. Расскажите о вашем проекте, пиках трафика и о том, где сейчас болит — падает ли сайт в распродажи, тормозит ли база, был ли простой из-за отказа сервера. Мы снимем профиль нагрузки, найдём реальное узкое место и предложим архитектуру под вашу задачу: от репликации базы до полноценного отказоустойчивого кластера. Аудит нагрузки бесплатный, и по его итогам вы получите честную картину — что собирать в первую очередь, какой запас по трафику это даст и за какой срок окупится. Обсудим ваш проект и превратим его в систему, которая держит пики и переживает отказы без простоя.

Вопросы и ответы

Частые вопросы о кластере и репликации Битрикс

Что такое веб-кластер Битрикс простыми словами? +

Это группа серверов, которые вместе обслуживают один сайт. Перед ними стоит балансировщик, который распределяет запросы пользователей по узлам. Если трафик растёт, добавляют новые узлы; если один сервер падает, остальные продолжают работать. Проще говоря, вместо одного сервера, который может не выдержать или сломаться, работает команда серверов, прикрывающих друг друга.

Что значит балансировка нагрузки? +

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

Что такое репликация базы данных? +

Репликация — это автоматическое копирование данных с одного сервера базы (master) на один или несколько других (slave) в реальном времени. Все изменения, сделанные в master, тут же повторяются на репликах. В результате у вас есть несколько одинаковых копий базы: основная для записи и дополнительные для чтения и подстраховки.

Чем горизонтальное масштабирование отличается от вертикального? +

Вертикальное масштабирование — это когда вы делаете один сервер мощнее: добавляете процессоры, память, диски. У него есть физический потолок и точка отказа остаётся. Горизонтальное масштабирование — это когда вы добавляете новые серверы рядом и распределяете нагрузку между ними. Кластер — это именно горизонтальный путь: запас по росту почти не ограничен, а отказ одной машины не роняет проект.

Что такое отказоустойчивость? +

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

Что лучше для балансировки — nginx или HAProxy? +

Оба подходят, выбор зависит от задачи. nginx удобен, когда он уже стоит как веб-сервер и нужно балансировать HTTP-трафик с кэшированием и отдачей статики. HAProxy специализируется именно на балансировке, тоньше настраивает проверки здоровья, очереди и распределение, хорошо подходит для сложных схем и TCP-балансировки. На аудите подбираем вариант под вашу нагрузку и инфраструктуру.

Сколько веб-узлов нужно в кластере? +

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

Как балансировщик понимает, что узел упал? +

Балансировщик регулярно отправляет на каждый узел проверку здоровья — health-check. Это может быть простой запрос к служебной странице или проверка ответа приложения. Если узел перестаёт отвечать или возвращает ошибку, балансировщик выводит его из ротации и больше не направляет на него трафик, пока тот не восстановится. Всё происходит автоматически, без участия человека.

Что такое привязка сессии к узлу и нужна ли она? +

Привязка сессии (sticky session) — это когда балансировщик старается отправлять одного пользователя всё время на тот же узел. Она нужна, если сессии хранятся локально на серверах. Мы обычно идём другим путём: выносим сессии в общее хранилище на Redis, тогда привязка не требуется и любой узел обслуживает любого пользователя. Это надёжнее, потому что при отказе узла пользователь не теряет состояние.

Можно ли добавлять и убирать узлы без остановки сайта? +

Да, это одно из преимуществ кластера. Новый узел разворачивается из готового образа, проверяется и добавляется в пул балансировщика на лету. Так же узел можно вывести на обслуживание: балансировщик перестаёт слать на него трафик, вы спокойно обновляете его и возвращаете обратно. Сайт всё это время остаётся доступным.

Как работает разделение чтения и записи в Битрикс? +

Модуль веб-кластера Битрикс умеет работать с несколькими подключениями к базе: операции записи (INSERT, UPDATE, DELETE) уходят в master, а чтение (SELECT) распределяется по slave-репликам. Для кода приложения это прозрачно — разработчику не нужно вручную выбирать соединение. В результате тяжёлое чтение снимается с master, и база перестаёт быть единым узким местом.

Что такое отставание реплики и чем оно грозит? +

Реплика повторяет изменения master с небольшой задержкой — это и есть отставание (replication lag). Обычно оно доли секунды, но при большой нагрузке может расти. Грозит это тем, что данные, только что записанные в master, на реплике появятся чуть позже. Мы мониторим отставание и для критичных сценариев (например, чтение сразу после записи) направляем такие запросы на master, чтобы пользователь видел свежие данные.

Что такое шардинг базы данных? +

Шардинг — это разбиение большой таблицы или базы на части (шарды), которые хранятся на разных серверах. Например, заказы можно разнести по шардам, чтобы ни одна таблица не становилась слишком тяжёлой для одного сервера. Шардинг нужен, когда данных так много, что даже репликация не спасает, и применяется точечно к самым нагруженным таблицам.

Чем шардинг отличается от репликации? +

Репликация делает копии одних и тех же данных на разных серверах — она нужна для масштабирования чтения и отказоустойчивости. Шардинг разносит разные части данных по разным серверам — он нужен, когда данных слишком много для одной машины. Их часто сочетают: данные шардируют по серверам, а каждый шард ещё и реплицируют для надёжности.

Можно ли настроить репликацию без переписывания сайта? +

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

Зачем выносить сессии и кэш в общее хранилище? +

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

Redis или memcached — что выбрать для кластера? +

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

Что такое failover и как он работает? +

Failover — это автоматическое переключение на резервный компонент при отказе основного. Для базы это значит, что при падении master система продвигает в master одну из реплик, и запись продолжается уже на ней. Настраиваем мониторинг, который замечает отказ, и механизм переключения, чтобы простой измерялся секундами, а не часами ручного восстановления.

Что произойдёт, если упадёт балансировщик? +

Сам балансировщик не должен быть единой точкой отказа. Для критичных проектов ставим два балансировщика с плавающим IP-адресом: если основной падает, адрес автоматически переезжает на резервный, и трафик продолжает идти. Так даже выход из строя точки входа не приводит к недоступности проекта.

Как тестируете кластер до того, как придёт реальный пик? +

Проводим нагрузочное тестирование: симулируем трафик, в разы превышающий обычный, и смотрим, как ведут себя узлы, база и балансировщик. Отдельно проверяем сценарии отказа — выключаем узел, роняем реплику, имитируем падение master, — и убеждаемся, что переключение работает. Так вы получаете кластер, проверенный заранее, а не в момент настоящей распродажи.

Сколько стоит собрать кластер Битрикс? +

Репликация базы с разделением чтения и записи обычно начинается от 90 000 рублей, полноценный веб-кластер с балансировщиком и общим кэшем — от 220 000, а отказоустойчивый кластер с failover и шардингом — от 420 000. Итоговая сумма зависит от профиля нагрузки, числа узлов и схемы репликации. Точную смету присылаем после бесплатного аудита нагрузки.

За какой срок реально запустить кластер? +

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

Будет ли простой сайта во время сборки кластера? +

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

Можно ли собирать кластер поэтапно? +

Да, и это часто оптимально. Начинаем с того, что больше всего болит, — например, с репликации базы, которая снимает нагрузку с master. Затем добавляем балансировщик и второй веб-узел, потом отказоустойчивость и резервный master. Каждый этап даёт отдачу сразу, а расширяться можно по мере роста трафика.

Что мы получаем по итогу проекта? +

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

Нужен ли кластер, если трафик пока небольшой? +

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

Начать проект

Обсудим ваш кластер и нагрузку?

Расскажите о трафике, пиках и текущей инфраструктуре — снимем профиль нагрузки, предложим архитектуру кластера и пришлём смету в течение рабочего дня.

  • Ответим в течение рабочего дня
  • Бесплатный аудит процессов и расчёт
  • NDA и фиксированная смета