Откуда сеанс получает лицензию в клиент-серверной 1С и почему их не хватает

· 10 мин

Содержание

Сервер 1С раздаёт клиентские лицензии только тем информационным базам, для которых в свойствах базы разрешена выдача лицензий сервером. Источник — программные лицензии, активированные на компьютере с сервером, или аппаратный ключ HASP, доступный серверу. Если флаг выключен или на сервере нет свободных мест, лицензию должен найти сам клиент на своём компьютере.

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

Из чего состоит лицензирование в клиент-серверной 1С

В клиент-серверном варианте участвуют два разных вида лицензий. Их часто путают.

  • 🖥️ Лицензия на сервер. Нужна, чтобы работал сам кластер. Бывает для 32-разрядного и 64-разрядного сервера, отдельно есть редакция МИНИ (до 5 подключений) и КОРП.
  • 👥 Клиентские лицензии. Ограничивают число одновременно работающих рабочих мест. Продаются комплектами на 1, 5, 10, 20, 50, 100, 300, 500 мест; комплекты суммируются.

Обе бывают в двух формах:

ФормаЧто этоГде хранится
Программная (пинкод)Файл .lic, получен активацией по пинкоду и привязан к оборудованию компьютераWindows: C:\ProgramData\1C\licenses; Linux: /var/1C/licenses
Аппаратная (HASP)USB-ключ: локальный или сетевойЛокальный — в порту компьютера; сетевой — раздаётся через HASP License Manager

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

Клиентский комплект, который должен раздавать сервер, активируют на компьютере с сервером 1С, а не на рабочем месте администратора. Файл .lic должен оказаться в каталоге лицензий именно серверной машины.

Сетевой HASP-ключ работает по-другому. Его вставляют в любой компьютер сети, ставят туда HASP License Manager, а клиенты и сервер ищут ключ по сети (UDP-порт 475). Адрес менеджера лицензий прописывают в файле nethasp.ini в каталоге conf платформы:

[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10
NH_USE_BROADCAST = Disabled

Явный адрес и отключённый широковещательный поиск ускоряют запуск: клиент не ждёт ответа от всей подсети.

Порядок поиска: кто выдаёт лицензию сеансу

Когда пользователь открывает базу на сервере, лицензию может получить либо само клиентское приложение, либо сервер. В свойствах сеанса это видно отдельно: «получена клиентом» или «получена сервером».

Упрощённая схема для толстого и тонкого клиента :

  1. Поиск на компьютере пользователя. Сначала программные лицензии в локальном каталоге, затем локальный HASP-ключ, затем сетевой ключ по настройкам nethasp.ini.
  2. Запрос к серверу. Если своей лицензии у клиента нет, а для базы разрешена выдача лицензий сервером, лицензию выдаёт кластер из своего запаса.
  3. Отказ. Ничего не найдено — запуск прерывается с сообщением об отсутствии лицензии.

Для веб-клиента и мобильного клиента первого шага нет: клиентского каталога лицензий у браузера не бывает. Такие сеансы получают лицензию только через сервер.

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

Где включается выдача лицензий сервером

Флаг задаётся для каждой информационной базы отдельно. В консоли администрирования кластера откройте свойства базы и включите параметр «Разрешить выдачу лицензий сервером 1С:Предприятия». В утилите rac это параметр базы --license-distribution со значениями allow и deny.

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

Какой рабочий сервер выдаёт лицензии в кластере

В кластере из нескольких рабочих серверов лицензии выдаёт тот, на котором они физически есть. Управлять этим можно через требования назначения функциональности в свойствах рабочего сервера: для объекта требования «Клиентская лицензия» указывают «Назначать» на сервере с лицензиями и «Не назначать» на остальных.

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

32 и 64 разряда: что зависит от разрядности, а что нет

Разрядность важна для серверной лицензии и почти не важна для клиентских.

  • 🔹 Лицензия сервера. 32-разрядному серверу хватает лицензии для 32-разрядного сервера. Для 64-разрядного нужна лицензия для 64-разрядного сервера (или КОРП). Если поставить 64-разрядный сервер на машину с лицензией только для 32 бит, кластер не получит серверную лицензию.
  • 🔹 Клиентские лицензии. Разрядности у них нет. Один и тот же файл .lic подходит 32- и 64-разрядному клиенту и серверу любой разрядности.
  • 🔹 Каталог хранения. Общий для всех установленных версий и разрядностей платформы на компьютере. Ставить лицензию «отдельно для 64-битного клиента» не нужно.
  • 🔹 Два клиента на одном компьютере. Если пользователь открыл базу и 32-, и 64-разрядным клиентом, это всё тот же компьютер. Лишнее место не расходуется.

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

Как считаются места и что их съедает

Клиентская лицензия считается по рабочему месту, а не по пользователю 1С и не по количеству открытых окон. На практике:

СитуацияСколько мест занято
Один компьютер, три окна разных баз на одном сервере1
Один пользователь 1С на двух разных компьютерах2
Терминальный сервер, 15 RDP-сеансов15 — каждый терминальный сеанс отдельное место
Фоновые и регламентные задания0 — работают на сервере под серверной лицензией
Сеансы веб-сервисов и HTTP-сервисов от внешних системЗанимают клиентские лицензии

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

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

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

Освобождение мест

Лицензия возвращается в пул, когда сеанс завершается. Если клиент «упал» или пропала сеть, сеанс какое-то время остаётся в кластере и держит место. Такие сеансы видны в консоли; их можно завершить вручную.

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

Диагностика: какую лицензию занял конкретный сеанс

Начинать стоит с самого простого — посмотреть на сторону пользователя.

На рабочем месте

В клиенте откройте главное меню (кнопка с тремя полосками или значок «?») и выберите «О программе». Там указано, какая лицензия используется и кем она получена. Если видите программную лицензию клиента, сеанс не обращался к серверу.

Проверьте и каталог C:\ProgramData\1C\licenses на этом компьютере. Посторонний файл .lic, оставшийся после установки «на один компьютер», объясняет, почему пользователь не расходует серверные места.

На сервере

  1. В консоли кластера откройте список сеансов. В свойствах сеанса указаны сведения о лицензии: тип (программная или HASP), серия, кем получена.
  2. То же из командной строки:
rac cluster list
rac session list --cluster=<UUID кластера> --licenses

Вывод покажет по каждому сеансу, выдана ли лицензия сервером, ее тип и максимальное число пользователей в комплекте. Остальные параметры смотрите в rac help session.

  1. Список программных лицензий, активированных на сервере, выводит утилита ring:
ring license list

Если комплекта, который вы покупали, в списке нет — он активирован не на этой машине.

Технологический журнал

Когда схема не сходится, включите технологический журнал с событием LIC в logcfg.xml. Он покажет, где сервер искал лицензию и почему отказал. Журнал быстро растёт, поэтому включайте его на время разбора и с ограничением по объёму.

Диагностика: выберите симптом

Что проверить перед переводом пользователей на серверные лицензии

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

  1. Посчитайте реальную пиковую нагрузку. Посмотрите в консоли число сеансов в самые загруженные часы (обычно конец месяца и сдача отчётности). Прибавьте сеансы интеграций и терминальные сеансы.
  2. Сверьте комплекты. Составьте список пинкодов: какие комплекты куплены, на сколько мест, где сейчас активированы и сколько резервных пинкодов осталось.
  3. Решите судьбу локальных лицензий. Комплекты, активированные на отдельных компьютерах, перенести на сервер можно только новой активацией резервным пинкодом. Если резервных кодов мало, оставьте такие места как есть.
  4. Включите выдачу во всех рабочих базах. Пройдитесь по списку баз в консоли, включая тестовые копии, которыми пользуются бухгалтеры.
  5. Проверьте на одном пользователе. Уберите у него локальную лицензию, зайдите в базу и посмотрите в свойствах сеанса, что лицензия получена сервером.
Готовность к серверной раздаче лицензий
Выполнено: 0 / 6

Ошибки настройки, которые встречаются чаще всего

Комплект активирован не на той машине. Администратор активировал лицензию со своего ноутбука, подключившись к базе. Файл лёг в его локальный каталог, и сервер о нём не знает. Решение — активировать на компьютере с сервером 1С. Пинкоды из комплекта расходуются, поэтому без нужды не экспериментируйте.

Нет прав на каталог лицензий. Служба сервера работает от отдельной учётной записи (часто USR1CV8). Если у неё нет прав на чтение C:\ProgramData\1C\licenses, лицензии лежат, но не выдаются. Дайте учётной записи службы права на чтение каталога.

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

Лицензии на одном рабочем сервере, выдача — с другого. В кластере из двух серверов без требования назначения «Клиентская лицензия» выдача может уйти туда, где файлов нет.

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

64-разрядный сервер на 32-разрядной лицензии. Платформу обновили и заодно перешли на 64 бита, а серверную лицензию — нет. Кластер стартует, но серверной лицензии не находит.

Перезапуск службы сервера 1С после изменения лицензий обрывает все сеансы. Делайте это вне рабочего времени и предупредите пользователей заранее.

Частые вопросы

Можно ли совместить программные лицензии и HASP-ключ на одном сервере?
Да. Сервер учитывает и программные лицензии, и доступные ему ключи, места складываются.
Нужна ли клиентская лицензия для Конфигуратора?
Да, запуск Конфигуратора тоже занимает рабочее место, как и запуск в режиме 1С:Предприятие.
Расходует ли место пользователь, который открыл одну базу дважды на своём компьютере?
Нет. Место считается по компьютеру, второе окно с той же машины новое место не занимает. Исключение — терминальный сервер, где каждый терминальный сеанс считается отдельно.
Что будет, если сервер с программными лицензиями выйдет из строя?
Лицензии привязаны к его оборудованию. На новом сервере комплект активируют заново резервным пинкодом.
Можно ли раздавать лицензии с сервера пользователям файловых баз?
Нет. Выдача лицензий сервером работает только для баз, которые размещены на сервере 1С. Файловым базам нужна лицензия на компьютере пользователя или сетевой ключ.