При масштабировании высоконагруженных информационных систем 1С (от 1000 до 2000 активных пользователей) стандартное добавление нового рабочего сервера в существующий кластер может приводить к неожиданным результатам. Вместо равномерного распределения входящего трафика администраторы часто сталкиваются с ситуацией, когда до 90% новых пользовательских сеансов направляются исключительно на вновь добавленный узел, полностью парализуя его работу, в то время как остальные серверы простаивают. Разберем механику этой проблемы, проанализируем поведение балансировщика 1С и рассмотрим проверенные способы стабилизации инфраструктуры.
Для понимания причин такого поведения проанализируем внутреннюю логику работы диспетчера кластера 1С. Алгоритм распределения новых подключений опирается на вычисляемую оценку доступной производительности каждого рабочего процесса (rphost) и сервера в целом:
rmngr) оценивает такой узел как обладающий максимальной производительностью.rphost, а не общую память операционной системы. При массовом старте клиентских сеансов узел упирается в предел по вычислениям ЦП (компиляция модулей, авторизация) задолго до того, как память процессов физически вырастет до порогового значения. В результате ограничение не успевает сработать вовремя.rmngr создаются платформой автоматически при необходимости обслуживания определенных сервисов. Отсутствие дополнительного менеджера на новом узле не является ошибкой и не ломает балансировку, так как управление сеансами централизовано. Однако в версиях платформы 8.3.7–8.3.8 присутствуют известные погрешности в формулах расчета доступной производительности, усугубляющие перекос.Попытка балансировать интерактивные сеансы пользователей «поровну» между несколькими нодами часто оказывается менее стабильной, чем четкое разделение ролей серверов. Практика показывает, что наиболее эффективный подход — освободить пользовательские узлы от тяжелых фоновых задач.
Рассмотрим по шагам схему функционального разделения для кластера из трех узлов:
Для реализации этой схемы настроим требования назначения функциональности в консоли администрирования кластера:
Клиентское соединение с информационной базой — Тип требования: Назначать.Фоновое задание — Тип требования: Не назначать.Сервис фоновых заданий — Тип требования: Не назначать.Клиентское соединение с информационной базой — Тип требования: Не назначать.Фоновое задание — Тип требования: Назначать.Сервис фоновых заданий — Тип требования: Назначать.Сервис полнотекстового поиска, Сервис журналов регистрации и внешние подключения (COM-соединения, Web-сервисы).Обратите внимание: если фоновое задание запускается непосредственно из контекста клиентской сессии, недостаточно указать только тип соединения Фоновое задание. Обязательно переносите сам Сервис фоновых заданий, иначе кластер продолжит исполнять код на сервере инициатора.
Если функциональное разделение невозможно и все серверы должны принимать пользователей, оптимизируем параметры балансировки:
Коэффициент производительности (по умолчанию 1000). Для нового или менее производительного узла понизьте это значение (например, установите 300–500). Кластер начнет пропорционально отправлять на него меньше сеансов, что предотвратит захлебывание в пиковые утренние часы.Количество ИБ на один процесс = 1 и явное лимитирование соединений (например, до 60–80 на один рабочий процесс rphost) повышают отказоустойчивость, предотвращая разрастание отдельных процессов свыше 2–3 ГБ оперативной памяти.Проанализируем физическую инфраструктуру. Кластер 1С активно использует межпроцессные сетевые вызовы (RPC) для синхронизации контекстов сеансов, кэшей и транзакционных блокировок. Разделение базы на несколько виртуальных машин под управлением Hyper-V часто создает существенные накладные расходы на сетевую задержку и синхронизацию vCPU.
Если в инфраструктуре имеется аппаратный сервер высокой мощности (например, 32 физических ядра и 256 ГБ ОЗУ), наилучшим решением для 1500–2000 пользователей будет отказ от кластера виртуальных машин в пользу одного мощного физического сервера 1С без виртуализации. Это дает следующие преимущества:
srvinfo на быстрых SSD-накопителях класса Enterprise).Таким образом, для устранения перекоса нагрузки в первую очередь занижаем коэффициент производительности нового узла, изолируем фоновые задания через требования назначения функциональности, а при наличии мощных вычислительных узлов отдаем предпочтение монолитному серверу приложений.