Лицензионная система Cache' 5 Документ пользователя

Источник информации - сообщение в конференции Cache.ru
Перевод на русский язык компании "Информ Икс"

В Cache 5 была пересмотрена лицензионная система. Одна из основных целей - сделать управление лицензией более очевидным, чем в более ранних версиях.
ВНИМАНИЕ ! Учтите, что те принципы учета лицензий, которые описаны в этом документе, выполняются только для лицензий типа NamedUser.

Как работает регистрация (login)
Система пытается идентифицировать отдельных пользователей и выделить одну лицензионную единицу для одного пользователя. Пользователь идентифицируется с помощью Id пользователя лицензии, это может быть IP адрес, имя пользователя, Id CSP сессии или другой идентификатор, зависящий от способа подключения пользователя. Если пользователь запустил несколько процессов, они разделяют одну лицензионную единицу в пределах 12 процессов на одного пользователя. Если количество процессов достигает 12, совершается переход, и система начинает выделение 1 лицензионной единицы на процесс для этого Id пользователя. Система предполагает, что если с Id пользователя ассоциировано более 12 процессов, это означает, что к Cache через посредника (например, firewall) пытаются подключиться многочисленные пользователи, и требуются дополнительные лицензионные единицы. Поэтому когда стартует 13-й процесс, количество лицензионных единиц, выделенных для этого Id пользователя, увеличивается от 1 до 13. Процессы, вызванные командой Job, рассматриваются сверх лимита процессов Id пользователя процесса, выполняющего команду Job.

Мы надеемся, что большинство приложений будет переходить на идентификацию своих пользователей по именам. Это более правильно, т.к. позволяет снять проблемы, связанные с использованием Id пользователя по умолчанию, базирующегося на IP адресе клиента, Id CSP сессии или другого подключения, производным которого является Id пользователя. Например, когда используется firewall или программное обеспечение терминального сервера, мы не можем дифференцировать подключающихся пользователей, и поэтому мы вынуждены прибегать к правилу перехода после 12 соединений. При использовании одним и тем же клиентом смешанного подключения (например, CSP и Cache Direct) также невозможно корректно подсчитать пользователей, используя метод автоматического создания Id.

Эти проблемы исчезают, если идентификатором лицензии служит имя пользователя. Мы надеемся, что важность правильной идентификации пользователей воплотится в выполнение новых требований проверки доступа. Использование личности пользователя для проверки соответствия лицензии - это естественный выход в этой ситуации.

Существует два способа регистрации лицензии: автоматический и явный. Автоматический режим установлен по умолчанию. Система пытается идентифицировать IP адрес клиента системы и использует его в качестве Id пользователя лицензии. Это работает, если клиент подключается через IP непосредственно к серверу. Это не работает, если между клиентом и сервером находится firewall, вследствие чего все клиенты имеют один и тот же адрес. В случае использования терминального сервера с telnet протоколом автоматический режим не может различать пользователей, т.к. все порты терминального сервера видны в системе под одним и тем же IP адресом. Поскольку все подключения порождены c одним адресом, все они будут иметь один и тот же Id пользователя. Если ваши пользователи подключаются через firewall или вы используете telnet для терминальных серверов, нужно использовать явную регистрацию.

Если IP не используется как сетевой транспорт, IP адрес невозможно использовать в качестве Id пользователя. В этих случаях система использует другие ресурсы в качестве Id пользователя лицензии. Когда соединения порождаются от терминального сервера с использованием LAT протокола, для формирования Id пользователя берется комбинация имени терминального сервера и имени порта ($ZI). Это означает, что пользователю, открывшему несколько сессий через порт терминального сервера, выделяется одна лицензионная единица. Еще есть особые случаи - это batch процессы, запускаемые демоном "at" в Unix или из batch очереди в VMS. Такие процессы не разделяют лицензионную единицу, т. к. они не ассоциированы с пользователем. Для этих процессов в качестве идентификатора лицензии используется Id процесса. Если в вашем случае режим автоматической регистрации не работает, нужно использовать явную регистрацию. Важно помнить также, что даже в автоматическом режиме всегда можно использовать для лицензирования явную идентификацию пользователя, вызвав $System.License.Login(UserId).

Когда выбран режим явной регистрации, автоматическое обнаружение Id пользователя не производится. Приложение должно явно вызвать $System.License.Login(UserId) API для поставки Id пользователя лицензии и приобретения лицензии. Явная регистрация возможна при помощи вызова функции $System.License.DeferUserIdentification (switch). Вызвать можно из программы ^ZSTU в startup системы. Если флаг =1, выделение лицензии при регистрации откладывается, т.е. должна быть выполнена явная регистрация. Если флаг =0, выделение лицензии происходит автоматически при запуске процесса. Когда регистрация отложена, клиент должен вызвать API регистрации лицензии немедленно. Процесс, не выполнивший регистрацию лицензии, будет приостанавливаться на 15 секунд после каждых 1000 строк кода Cache Object Script.

CSP-соединения - особый случай. В CSP-приложениях строго рекомендуется использовать эквивалент сессии, чтобы идентифицировать пользователя для лицензирования (%CSP.Session.Login). Если нет, то в качестве Id пользователя лицензии используется Id CSP-сессии. Каждая сессия поглощает одну лицензионную единицу. Для многих ситуаций это не подходит. Например, пользователь может иметь несколько окон браузера, открытых одновременно. Кроме того, пользователь может подключиться многими способами (CSP, окно терминала, Cache Direct-соединение клиента из Visual Basic). В этом случае для выполнения явной регистрации лицензии для сессии можно использовать метод %CSP.Session.Login(UserId,Password,[0 or 1]) класса %CSP.Session.

Процессы, запущенные из ^ZSTU, - еще один особый случай. Такой процесс не имеет родительского процесса. Следовательно, регистрация выполняется для Id пользователя “User Startup” перед вызовом ^ZSTU. Процессы, запущенные командой job из ^ZSTU, будут иметь этот Id пользователя. Если хотите, вы можете вызвать из ^ZSTU для изменения Id пользователя $System.License.Login(UserId). Эта процедура означает, что из ^ZSTU может стартовать 11 фоновых процессов, и займет это одну лицензию. Если, в соответствии с терминами и условиями лицензирования, эти процессы должны иметь отдельные лицензии (например, если они управляют частью лабораторного оборудования, что требует отдельной лицензии), то вы должны вызвать $System.License.Login(UserId), чтобы получить лицензию для соответствующего Id пользователя.

Итак, важно понимать, что в Cache 5 мы больше не пытаемся различить фоновые процессы и посчитать их отдельно. Если пользовательский процесс запускает фоновый процесс (командой job), то дочерний процесс считается также как и любой другой в рамках ограничения до 12 процессов на лицензионный слот пользователя.

Как конфигурировать лицензирование в Cache 5
Главное отличие Cache 5 от ранних версий - в том, что в каждой конфигурации поддерживается независимое локальное представление объема и использования ее лицензии. Каждой конфигурации нужен доступ к файлу cache.key, поэтому файл cache.key должен быть установлен в каждой конфигурации. Мультисерверные ключи могут быть разделены между кооперирующими конфигурациями как на одной машине, так и на разных машинах. Нужно отметить, что ключи Enterprise не разделяются автоматически, как это было в ранних версиях. Разделение допускается только для мультисерверных ключей.

Разделение мультисерверных ключей требует координации между конфигурациями, использующими ключ. В Cache 5 появился менеджер лицензии, который заменил сервер лицензии V4.1 и более ранних версий Cache. При разделении мультисерверных ключей менеджер лицензии должен быть сконфигурирован. Менеджер лицензии координирует представления использования лицензии, поддерживаемые локально в каждой конфигурации. Один сервер лицензии может обслуживать несколько конфигураций. Менеджер лицензии - это не процесс Cache. Это предотвращает проблемы, с которыми можно было столкнуться раньше, когда сервер лицензии мог стать недоступным при закрытии конфигурации или приостановленным при выполнении backup и т.п. Менеджер лицензии взаимодействует с конфигурациями посредством UDP сообщений на настраиваемом порту. Порт по умолчанию - 4001.

Менеджеры лицензии определяются в Cache Configuration Manager в разделе License вкладки Advanced. Вы можете сконфигурировать излишние менеджеры лицензии. Это существенно менее критично, чем в предыдущих версиях Cache, по двум причинам. Во-первых, конфигурация может продолжать работать с подключающимися и отключающимися пользователями в отсутствии менеджера лицензии. Во-вторых, менеджер лицензии будет продолжать работать после закрытия конфигурации, если он обслуживает более чем одну конфигурацию. Конфигурируя менеджер лицензии, вы должны решить, на каком сервере или серверах вы хотите размещать менеджер лицензии. Можно сконфигурировать, чтобы он запускался на любом количестве серверов, но более трех - это уже избыточно. Поскольку менеджер лицензии стартует при запуске конфигурации, нужно сконфигурировать, чтобы он запускался в системах, где предполагается запуск Cache конфигурации, чтобы они стартовали последовательно. При конфигурировании избыточных менеджеров лицензии не требуется использовать разные номера портов, как это было необходимо в случае с серверами лицензии ранее.

Обновление лицензии
Ключ лицензии можно обновлять, помещая его в соответствующую директорию на сервере Cache или используя Мастер ввода лицензии в Сonfiguration Manager. Если ключ был введен и сохранен с помощью Мастера, рабочая версия ключа автоматически обновляется и активируется. Можно делать это вручную, вызывая метод $SYSTEM.License.Upgrade() из области %SYS. Обычно перезапуск конфигурации не требуется.

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

Другое ограничение состоит в том, что обновление лицензии поглощает gmheap память. Если в gmheap памяти нет места, количество входов в таблицу лицензии не может быть увеличено. Есть также лимит на объем gmheap памяти (10 страниц), который может занять обновление лицензии. Этот лимит позволяет активировать максимум немногим более 7000 лицензионных единиц. Это не общее число, а приращение, т. е. если у вас имеется ключ на 30000 конкурирующих пользователей, вы можете увеличить его до немногим более чем 307000 лицензионных единиц без перезапуска конфигурации. Если вы обновляете лицензию, приобретая более 7000 дополнительных лицензионных единиц, приблизительно 7000 дополнительных лицензионных единиц будет активировано, а для активации остальных будет необходим рестарт.

Как узнать, сколько лицензий занято и кем
Класс $System.License предоставляет много методов для определения размера лицензии и текущем ее использовании. Они описаны в on-line документации, раздел Caché Class Reference.

Для отображения информации или вывода базы данных лицензии в файл можно вызывать следующие методы класса:

$System.License.CKEY отображает ключ. Эта подпрограмма вызывается из программы ^CKEY, которая поддерживается для совместимости.
%SYS>do $System.License.CKEY()
Cache Key display:
Based on the file 'd:\cachesys\mgr\cache.key'
LicenseCapacity = 100000 concurrent users
CustomerName = 100K
OrderNumber = 12345
ExpirationDate = 7/15/2002
AuthorizationKey = 41247100000xxxxxxxx254
MachineID =
Currently available = 99999
minimum available = 99999
Maximum available = 100000

$System.License.ShowCounts подсчитывает использование лицензии, отслеженное в shared memory локальной системы.
%SYS>D $System.License.ShowCounts()
100000 Total Authorized LU
99999 Current Available LU
99999 Minimum Available LU
1 Current Users active
1 Maximum Users active
0 Current CSP Sessions active
0 Maximum CSP Sessions active
0 Current CSP Sessions in grace period
0 Maximum CSP Sessions in grace period

$System.License.ShowManager отображает адрес и порт активного менеджера лицензии.
%SYS>do $System.License.ShowManager()
Active license manager at address = 192.168.1.100 port = 9009

Подпрограммы, перечисленные ниже, выводят содержимое таблиц лицензии, размещенных локально в configuration-shared memory. В общем случае они идентифицируют клиента.

$System.License.DumpLocalAll() выводит все входы локальной таблицы лицензий в файл all.dmp в текущей директории.
%SYS> Do $System.License.DumpLocalAll()100000 entries dumped to d:\cachesys\mgr\all.dmp

$System.License.DumpLocalInUse() выводит все используемые входы локальной таблицы лицензии в файл inuse.dmp в текущей директории.
%SYS> Do $System.License. DumpLocalInUse()
1 entries dumped to d:\cachesys\mgr\inuse.dmp

$System.License.DumpLocalPID выводит все используемые PID входы локальной таблицы лицензии в файл piduse.dmp в текущей директории.
%SYS>d $System.License. DumpLocalPID()
3 entries dumped to d:\cachesys\mgr\piduse.dmp

Следующие подпрограммы выводят содержимое таблиц лицензии, поддерживаемых менеджером лицензии. Выходные файлы располагаются в указанной директории сервера, на котором запущен менеджер лицензии.

$System.License.ShowSummary отображает итоговую информацию о лицензии в менеджере лицензии. Секция “distributed license use” содержит информацию об использовании лицензии для конфигурации Cache, в которой запущена программа.
%SYS>d $System.License.ShowSummary()
Distributed license use:
Current License Units Used = 1
Maximum License Units Used = 1
License Units Authorized = 100000
Local license use:
Current Connections = 3 Maximum Connections = 10
Current Users = 1 Maximum Users = 1

$System.License.DumpServer выводит базу данных менеджера лицензии, относящуюся к серверу, на котором вы запускаете эту функцию. Файл будет размещен на сервере, на котором запущен менеджер лицензии.
%SYS>d $System.License.DumpServer()
License manager database dumped to: d:\cachesys\mgr\dumpserver.txt

$System.License.DumpServers выводит базу данных менеджера лицензии для всех известных серверов. Файл будет размещен на сервере, на котором запущен менеджер лицензии.
%SYS>d $System.License.DumpServers()
1 server database[s] dumped to: d:\cachesys\mgr\dumpservers.txt

$System.License.DumpKey выводит ключ, используемый данной конфигурацией и конфигурациями, которые разделяют его. Файл будет размещен на сервере, на котором запущен менеджер лицензии.
%SYS>d $System.License.DumpKey
License manager Client data dumped to: d:\cachesys\mgr\dumpkey.txt

$System.License.DumpKeys выводит все ключи, показывая конфигурации и клиентов, использующих их. Файл будет размещен на сервере, на котором запущен менеджер лицензии.
%SYS>d $System.License.DumpKeys()
License manager Client data (1 key[s]) dumped to: d:\cachesys\mgr\dumpkeys.txt


Новости    О компании   Продукты   Технологии   Партнеры   Проекты   Обучение   Пресса   Контакты    Цены   Содержание

© Copyright 2021-2022
ЗАО
Информ Икс  Москва