При эксплуатации кластера серверов 1С:Предприятие системные администраторы часто сталкиваются с ситуацией, когда пользователи забывают закрывать тонкие или веб-клиенты. Неактивные соединения продолжают удерживать клиентские лицензии, блокируя вход другим сотрудникам. Ранее для автоматического сброса сессий традиционно применялись VBS-скрипты или PowerShell-сценарии через COM-объект V83.COMConnector. Однако при переносе серверной инфраструктуры на Linux COM-технологии становятся недоступными.
Рассмотрим подробно, какие механизмы предоставляет платформа 1С:Предприятие для управления сеансами в кроссплатформенной среде, как устроен протокол взаимодействия консоли администрирования и как настроить автоматическое освобождение лицензий.
Выясним, как организовано удаленное управление кластером 1С без Windows и COM-компонентов. Основным инструментом администрирования на Linux выступает связка из службы RAS (Remote Administration Server) и утилиты командной строки RAC (Remote Administration Client).
Проанализируем технические особенности протокола взаимодействия:
1545).rac и Java-библиотека содержат готовые бинарные сериализаторы и кодеки для вызова удаленных процедур кластера.Разберем по шагам практический способ управления сеансами с помощью Bash-скриптов и утилиты rac, запускаемых по расписанию через cron.
Для работы скрипта на сервере 1С должна быть запущена служба RAS. Пример запуска службы:
/opt/1cv8/x86_64/8.3.XX.XXXX/ras cluster --port=1545 localhost:1540
Посмотрим на пример основных команд утилиты rac для получения списка и принудительного закрытия сессий:
rac cluster list localhost:1545
rac session list --cluster=<ID_Кластера> --ib-name=<Имя_Базы> localhost:1545
rac session terminate --cluster=<ID_Кластера> --session=<ID_Сеанса> localhost:1545
С помощью парсинга вывода команды rac session list в Bash или Python можно отслеживать время последней активности (last-active-at) и автоматически сбрасывать соединения, которые простаивают дольше установленного лимита.
Во многих случаях написание внешних скриптов не требуется: платформа 1С содержит встроенный механизм управления жизненным циклом сессий и возврата лицензий. Разберем ключевые параметры информационной базы в консоли администрирования:
Если пользователь возвращается к окну спящего клиента, платформа пытается восстановить сеанс и повторно захватить лицензию из пула. Если свободных лицензий нет, клиенту выдается соответствующее системное сообщение.
Проанализируем нюансы, которые могут препятствовать автоматическому засыпанию клиентских приложений:
default.vrd на веб-сервере следует проверить параметр sessionTimeout, а также настройки времени жизни сессий в конфигурации самого веб-сервера. Если вкладка браузера закрыта некорректно, веб-сервер удерживает соединение до истечения своего внутреннего таймаута.Альтернативным вариантом является создание регламентного задания внутри самой конфигурации 1С. Серверный код конфигурации может выполнять анализ сеансов и принудительно завершать зависшие фоновые и пользовательские процессы без внешних утилит и COM-соединений, используя программные методы администрирования кластера или вызов внешних сценариев из контекста сервера.