При масштабировании систем на базе 1С:Предприятие 8.3 часто возникает задача оптимизации ресурсов. Одной из наиболее эффективных методик является разделение нагрузки: выделение одних серверов под работу пользователей (клиентские соединения), а других — под тяжелые фоновые процессы. Однако при настройке требований назначения функциональности (ТНФ) администраторы часто сталкиваются с тем, что задания продолжают выполняться «где придется» или вовсе зависают — для контроля таких ситуаций есть мониторинг регламентных заданий с уведомлением в Telegram. Разберем пошагово, как правильно сконфигурировать кластер и избежать типичных ошибок.
Для начала проанализируем ситуацию: в кластере имеется несколько серверов (например, srv1, srv2 и srv3). Наша цель — сделать так, чтобы srv3 занимался только фоновыми задачами, а srv1 и srv2 обслуживали только пользователей. Основной инструмент для этого — консоль администрирования кластера и настройка требований назначения функциональности — для этой задачи отлично подойдёт удобная консоль администрирования кластера серверов 1С.
Важно понимать, что в терминах платформы 1С фоновые задания делятся на разные типы в зависимости от способа их запуска. Если мы укажем только один параметр, часть заданий может игнорировать наши правила. Основными параметрами (дополнительными значениями) для объекта Клиентское соединение с ИБ являются:
ФоновыеЗадания.Выполнить).Рассмотрим порядок действий для сервера srv3, который должен стать целевым для фоновых процессов. Чтобы он принимал задания, нам нужно создать два разрешающих требования. Посмотрим на пример настройки:
Требование №1 (для программных вызовов):
BackgroundJob.CommonModuleТребование №2 (для регламентных заданий):
BackgroundJob.ScheduledJobБез второго пункта задания, инициированные планировщиком (регламентные), будут по-прежнему распределяться на другие серверы кластера, так как для них srv3 не будет иметь приоритета.
Теперь выясним причину, по которой фоновые задания продолжают запускаться на srv1 и srv2. Платформа 1С работает по принципу «если не запрещено — значит разрешено». Чтобы жестко ограничить выполнение заданий на пользовательских серверах, мы должны создать там запрещающие требования.
На серверах srv1 и srv2 добавим следующие правила:
Объект: Клиентское соединение с ИБ
Тип: Не назначать
Доп. параметр: BackgroundJob.CommonModule
Объект: Клиентское соединение с ИБ
Тип: Не назначать
Доп. параметр: BackgroundJob.ScheduledJob
После внесения изменений в консоль управления кластером крайне важно выполнить команду «Применить требования назначения функциональности» (желательно полное применение). В некоторых случаях для корректной инициализации новых правил на уровне рабочих процессов rphost требуется перезапуск службы 1C:Enterprise 8.3 Server Agent.
Проанализируем ситуацию, когда требования настроены верно (задания «уходят» на srv3), но фактически не выполняются, оставаясь в статусе «Активно» бесконечно долго. Рассмотрим основные причины:
srv3 должен иметь беспрепятственный доступ к серверу СУБД (SQL) и менеджеру кластера по всем рабочим портам (диапазон 1560-1591 по умолчанию). Если порт закрыт, рабочий процесс на srv3 не сможет инициализировать сеанс.srv3 нет доступа к ключу защиты, фоновое задание не запустится, так как для него не удастся выделить лицензию.srv3 может быть запущена под другой учетной записью или не иметь доступа к сетевым ресурсам (шарам), темпам или внешним компонентам, которые используются в коде фонового задания.Выясним, что делать, если настройки ТНФ не подхватываются. Иногда менеджер кластера хранит старую карту распределения ресурсов в кэше. В такой ситуации рекомендуется:
snccntxt в каталоге данных сервера (обычно в srvinfo).Помните, что использование выделенного сервера для фоновых заданий — это мощный инструмент оптимизации производительности, но он требует тщательного контроля за идентичностью программного окружения на всех узлах кластера. Если на srv1 установлена какая-то библиотека или драйвер, а на srv3 ее нет — фоновые задания, использующие этот функционал, работать не будут. Для своевременного выявления сбоев в работе фоновых процессов пригодится мониторинг фоновых заданий с уведомлением в Telegram.