При масштабировании инфраструктуры 1С:Предприятие часто возникает необходимость выноса определенных функций на разные физические или виртуальные машины. Типичная ситуация: у вас есть основной сервер приложений (С2) и дополнительный сервер (С1), на котором установлены многопользовательские программные лицензии. Казалось бы, достаточно добавить С1 в существующий кластер и назначить ему роль сервера лицензирования. Однако на практике системные администраторы часто сталкиваются с катастрофическим падением производительности: документы открываются по несколько минут, а пользователи получают сообщения об отсутствии лицензий. В этой статье мы подробно разберем, почему так происходит, и как правильно настроить распределенный кластер.
Для начала проанализируем, как 1С работает с лицензиями в многосерверном кластере. Когда пользователь пытается запустить сеанс или выполнить значимое действие, рабочий процесс rphost обращается к менеджеру кластера rmngr. В кластере за раздачу лицензий отвечает специальный Сервис лицензирования. Если этот сервис вынесен на отдельный сервер (С1), а основные рабочие процессы и Сервис сеансовых данных остаются на сервере (С2), возникает постоянный сетевой обмен между узлами.
Проблема «тормозов» чаще всего заключается в том, что при каждом обращении к лицензии система вынуждена гонять пакеты по сети. Если сетевое взаимодействие настроено не оптимально или если сервисы, которые должны работать в связке, разнесены по разным узлам, возникают огромные задержки (тайм-ауты). Рассмотрим пошагово, как устранить эти проблемы.
Разберем критически важный момент: в архитектуре 1С 8.3 сервис лицензирования тесно взаимодействует с сервисом сеансовых данных. Если сервис лицензирования находится на сервере С1, а сеансовые данные хранятся на С2, то проверка лицензии превращается в сложную цепочку сетевых запросов.
Решение: Мы рекомендуем переносить эти два сервиса «парой». Если вы решили, что сервер С1 будет сервером лицензирования, назначьте ему также роль сервера сеансовых данных. Рассмотрим, как это сделать через консоль администрирования кластера:
После этого на сервере С2 (основном) необходимо выставить аналогичные требования, но с типом «Не назначать», чтобы принудительно перенести активность на С1. Не забудьте после настройки нажать правой кнопкой мыши на кластер и выбрать пункт Применить требования назначения функциональности.
Выясним причину, связанную с сетевым уровнем. Операционные системы Windows Server 2008 R2 и выше по умолчанию отдают приоритет протоколу IPv6. Платформа 1С:Предприятие при обращении к менеджеру кластера по имени сервера может сначала пытаться установить соединение по IPv6, ждать ответа по тайм-ауту и только после неудачи переходить на IPv4. Это и дает задержки в 20–40 секунд на каждый запрос.
Проанализируем наши действия для стабилизации сети:
hosts (находится в C:\Windows\System32\drivers\etc\).
192.168.1.10 SERVER-C1
192.168.1.11 SERVER-C2
В высоконагруженных системах 1С функции разгрузки сетевого стека (Offload) могут работать некорректно, вызывая микро-разрывы соединений между rmngr и rphost. Рассмотрим, как отключить эти функции для повышения стабильности. Запустим командную строку от имени администратора и выполним следующие команды:
netsh int tcp set global chimney=disabled
netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global rss=disabled
Эти действия помогут избавиться от «залипания» пакетов при передаче сеансовых данных между серверами.
Посмотрим на ситуацию со стороны файловой системы. Сервис лицензирования ищет файлы *.lic локально. Если вы добавили С1 в кластер, убедитесь, что файлы лицензий физически находятся именно на С1.
Важный момент: Программные лицензии должны быть доступны пользователю, от имени которого запущена служба 1С (например, USR1CV8). Если лицензия была активирована под учетной записью администратора в его профиле, сервис лицензирования на другом сервере может просто не получить к ним доступ.
Рекомендуем перенести файлы лицензий в общую папку: C:\ProgramData\1C\1cv8\conf. Это гарантирует, что любой рабочий процесс сервера С1 сможет прочитать лицензию.
Проанализируем настройки портов. Вы указали, что используете нестандартные порты для С1 (2640). Убедитесь, что основной сервер С2 может свободно подключаться к С1 по всему диапазону динамических портов. В кластере 1С связь происходит не только по основному порту (1540/1541), но и по портам рабочих процессов (по умолчанию 1560-1591).
Если между серверами стоит брандмауэр, даже встроенный в Windows, он может блокировать обратные пакеты от сервиса лицензирования. На время отладки полностью отключите брандмауэр на обоих узлах, чтобы исключить этот фактор.
Подведем итог. Чтобы убрать тормоза при добавлении сервера С1 в качестве сервера лицензирования, мы должны:
Сервиса лицензирования и Сервиса сеансовых данных к одному серверу (С1).hosts и отключив IPv6.ProgramData и доступны службе USR1CV8.Выполнив эти шаги, мы добьемся того, что кластер будет работать стабильно, а проверка лицензий будет происходить мгновенно, без задержек в работе пользователей.