Аппаратный ключ защиты HASP и 1С (занятие нескольких лицензий с одного ПК)

1. rossin 18.11.21 12:53 Сейчас в теме
Сталкивался ли кто-нибудь с такой проблемой?
Сначала опишу топологию нашей системы работы с 1С и ключами:
У нас имеется 7 аппаратных usb ключей защиты hasp. 5 ключей на 20х, 1 ключ на 10х, 1 ключ на 50х. Все они установлены на разных компьютерах в сети, также на каждом их них установлен Менеджер лицензий, который их раздает. В Алладин-мониторе все эти ключи видно, все ок.

Имеются базы 1С (много, около 50), расположенные на разных серверах приложений (всего 4 сервера приложений). В настройках всех баз свойство "Разрешить выдачу лицензий сервером 1с предприятия" установлено в "НЕТ".
При такой схеме, согласно документации, на одном компьютере можно открывать неограниченное количество сеансов 1С (одной базы либо разных, не имеет значения), и все они будут занимать РОВНО ОДНУ лицензию с одного ключа.
На компьютерах пользователей в nethasp.ini в параметре NH_SERVER_ADDR = прописаны адреса всех машин, где установлены ключи (через запятую).
Флаг "Использовать аппаратную лицензию (ключ защиты)" в настройках запуска клиентов установлен.

Пользователи в работе могут открывать как несколько сеансов одной базы, так и несколько сеансов разных баз, это нужно для работы, т.к. в одном сеансе может идти какая-то загрузка, в другом они смотрят в это время отчеты, вводят документы. То есть чаще все работают именно с 2-3 базами, нежели с одной или одним сеансом. Это важно, т.к. именно в этом случае у нас проявляется проблема, описанная ниже.

Теперь конкретно о проблеме:
Столкнулись вдруг с нехваткой лицензий. А количество сочетаний "пользователь+компьютер" у нас гарантированно меньше суммарного кол-ва лицензий (10 + 20*5 + 50 = 160 лицензий).
Стали разбираться и выяснили, что у нас очень много случаев, когда несколько 1С, будучи запущенных на одной машине (именно локально, про терминальные сеансы речи не идет), занимают БОЛЕЕ ОДНОЙ ЛИЦЕНЗИИ с одного либо нескольких ключей, чего при наших настройках и видах ключей быть не должно. Напомню, ключи аппаратные, раздача ключей сервером запрещена.

Также у нас есть терминальные сервера, через которые пользователи тоже работают с 1с. Но в этом случае, если человек открыл 1 сеанс 1С локально и 1 сеанс на терминале занимается 2 лицензии, тут вопросов нет.

Примеры скринов с алладина во вложении. Там видно, что в моменте один адрес (192.168.8.103) занимает либо 2 лицензии (скрин 1) с одного ключа, либо 2 лицензии с разных ключей (скрин 2 и 3). При этом на этой машине просто запускались последовательно два раза 2 базы 1с, в разном порядке.
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
12. ishelper 18.11.21 18:25 Сейчас в теме
(1)
На компьютерах пользователей в nethasp.ini в параметре NH_SERVER_ADDR = прописаны адреса всех машин, где установлены ключи (через запятую).
Как вариант решения: вручную распределить пользователей по серверам, оставив каждому только один (по возможности) сервер HASP. В крайнем случае - два. Короче, минимизировать количество серверов в NH_SERVER_ADDR. При этом должно сократиться количество проблемных пользователей - по крайней мере, никто не будет откусывать лицензии с "чужих" серверов.

Кардинальный способ решения проблемы - обменять имеющийся букет ключей на один, больше всего вам подходит ключ на 300 лицензий. Тогда наверняка все проблемы сразу решатся - исключается захват нескольких лицензий с разных серверов, да и почти двукратный запас по лицензиям повысит стабильность работы.

Недостаток у этого решения только один - шестизначная сумма доплаты за такой обмен. ;)

Главное - не надеяться, что этот зоопарк разрулится "сам собой" - в этом случае будете иметь... то, что сейчас уже имеете.
2. Torin 735 18.11.21 13:35 Сейчас в теме
(1)
На компьютерах пользователей в nethasp.ini в параметре NH_SERVER_ADDR = прописаны адреса всех машин, где установлены ключи (через запятую)
- так все верно :)
NH_SESSION = х ( х=секунда) - если за указанное время первый сервер указанный в NH_SERVER_ADDR про тупил ( не ответил) , то опрашивается следующий по порядку из NH_SERVER_ADDR и если он ответил то займет лицензию на нем.
ИМХО - корректнее получать лицензии через сервер , и настроить сервер на правильное получение клиентских лицензий от HLM
3. rossin 18.11.21 13:43 Сейчас в теме
(2)
Так клиент 1С при запуске (если уже один клиент запущен) всё-равно пытается еще получить лицензию, обходя список ключей из NH_SERVER_ADDR? Ведь первый запуск клиента 1С на ПК должен занять лицензию, и уже последующие запуски (при аппаратном ключе) не должны их занимать? Следовательно, почему второй запущенный клиент начинает цикл по обходу ключей и занятию лицензии? Я вот это не могу понять..
Через сервер нам не подходит, т.к. в основном пользователи работают с 2, 3, 4 и даже 5 базами одновременно (или в 3х окнах с одной базой), и раздача по принципу 1сеанс = минус одна лицензия нам не подходит.
5. herfis 496 18.11.21 13:56 Сейчас в теме
(3)
почему второй запущенный клиент начинает цикл по обходу ключей и занятию лицензии? Я вот это не могу понять..

А что тут понимать? Откуда он должен брать инфу о полученной в другом сеансе лицензии? И почему обязан это делать? Каждый раз как в первый получает.
Во время сеанса тоже переспросить может. Но переспрашивает с сервера, на котором уже получал лицензию в этом сеансе.
Список серверов лицензий через запятую как пул лицензий и не работал никогда. Народ обычно жестко закреплял конкретных пользователей за конкретными серверами. И периодический перезапуск службы лицензий настраивал.
ЗЫ. То есть все предельно просто и примитивно. Клиент не анализирует занятые им лицензии на всех серверах. Он просто достукивается куда получилось по списку. И если на этом сервере лицензия ему уже выдавалась, то она будет переиспользована. Нет - выдадут новую. Все. Больше никакого ума там нет.
7. rossin 18.11.21 14:02 Сейчас в теме
(5)
Судя по документации и схемам типа той, что у меня на скрине при втором (третьем и тд) запуске клиента 1С на данной машине, 1сина пробует получить лицензию из ключа ХАСП, чья лицензия была получена пользователем при последнем подключении (а вовсе не из ключа, который идет первым по порядку в настроечном файле). И вот тут возможно у меня проблема и возникает - если этот ключ быстро не пинганулся (из-за того, что не выставлен таймаут NH_SESSION , то она видимо пытается взять лицензию с другого, уже идя по порядку в файле).
Прикрепленные файлы:
8. herfis 496 18.11.21 14:07 Сейчас в теме
(7) Может и так. Это непринципиально. Сути это не меняет. Заставить несколько серверов лицензий работать как единый пул - невозможно. Штатно ,во всяком случае. При разного рода накладках "висяки" будут появляться так или иначе.
Вы можете либо сгладить проблему, настроив периодический перезапуск служб лицензий, либо закрепить пользователей за серверами. А лучше и то и другое. Потому что иногда "висяки" появляются и на одном сервере. Уж не помню точно ситуации, которые к такому приводят.
9. Torin 735 18.11.21 14:11 Сейчас в теме
(7) ну именно это вам и написал в (2) :) Запустили 1С первый раз опросил сервер первый из NH_SERVER_ADDR = хх.хх.хх.1;хх.хх.хх.2 , получил лицензию.. запускаете еще раз он опросил это хх.хх.хх.1 а он тупит или недоступен :) не получилось "присоединиться к уже полученной" и ... опрашивает х.хх.хх.2 и получает :)
4. rossin 18.11.21 13:47 Сейчас в теме
(2)
Поясню еще немного
10.2.5.3.2. Многопользовательский клиентский ключ, доступный по сети через HASP License Manager
Обеспечивает одновременную работу стольких компьютеров, на сколько пользователей имеется ключ. На одном компьютере возможен запуск произвольного количества экземпляров системы в режиме 1С:Предприятие или Конфигуратор.

Количество лицензий ограничено общим количеством доступных лицензий со всех компьютеров в сети, на которых установлен и настроен HASP License Manager.

То есть заход в неограниченное кол-во клиентов 1С с одного ПК должен занимать одну лицензию.
10. Vladimir-R 167 18.11.21 17:17 Сейчас в теме
Попробуйте настроить перезапуск сервиса nethasp чтоб лицензии зависшие освобождались
16. rossin 19.11.21 00:18 Сейчас в теме
(10) Да, это сейчас и проделываем (пока в ручном режиме по принципу "все плохо - рестартуем"), но админы настраивают автоматический перезапуск служб менеджера лиц-ий, посмотрим что даст.
11. Online-Ufa 18.11.21 18:14 Сейчас в теме
Вы выяснили, какие именно клиенты выбирают лицензии?
Если которые подключаются в терминале, то это распространённая проблема, т.к. довольно часто при закрытии терминального сеанса лицензия не освобождается и при следующем подключении клиент забирает ещё одну лицензию.
Если же проблема наблюдается у обычных клиентов, то сразу сказать сложно, надо смотреть насколько стабильно работают, нет ли вылетов. Скорее проблема в большом количестве ключей.
14. rossin 19.11.21 00:13 Сейчас в теме
(11)
У обычных клиентов - точно, анализировали айпи, занявшие лицензии, на разных ключах на предмет дублей (или затроений). На терминале тоже, возможно, есть, но таких пользователей в общей массе меньше, плюс сложнее анализировать, т.к. нужно разделять просто два разных сеанса терминальных и дублирующий захват лицензии (а в мониторе эти ситуации выглядят одинаково, как два подряд идущих айпи терминального сервера).
Причем у обычных клиентов она наблюдается даже без всяких вылетов: просто открываешь вторую базу (при уже открытой 1с первой базы) и оп -в алладине занимается еще одна лицензия (на этом же ключе либо на другом). Но выдача лиц. сервером отключена, 100%.
17. Online-Ufa 19.11.21 00:23 Сейчас в теме
(14) В файле nhsrv.ini на машинах с ключами присваивали уникальные имена менеджерам с помощью параметра NHS_SERVERNAMES?
BROADCAST отключён во всех nethasp.ini?
19. rossin 19.11.21 00:49 Сейчас в теме
(17)
Уникальные имена не присваивали, нет. Это может помочь?
Про NH_USE_BROADCAST = Disabled тоже не было отключено, т.е. строка была закомментирована, а по умолчанию параметр Истина по-моему. Сейчас будем отключать.
20. Online-Ufa 19.11.21 08:07 Сейчас в теме
(19) Если броадкаст не был отключён, то прописывать IP компьютеров с ключами смысла не имело, клиенты находили ключи по броадкасту, а не по IP.
Присвоить имена тоже бывает полезно, но можно получить и обратный эффект, учитывея, что у вас 7 ключей, а максимальное количество имен, которое можно указать в nethasp.ini - это 6 штук.
Я бы советовал отключить броадкаст и попробовать закрепить клиентов за одним конкретным ключом, а не прописывать всё 7 IP в одном nethasp.ini.
21. rossin 19.11.21 10:04 Сейчас в теме
(20)
У нас несколько подсетей, и клиенты одной подсети без явного прописанного айпи ключей в нетхасп.ини, видели только ключи своей подсети. Например, ключ на 192.168.8.14, то клиенты 192.168.8.ХХХ видят только его и другие ключи на 192.168.8.ХХХ, а ключ на 192.168.2.ХХХ не видят. С прописанным айпи видели.
Так а насчет имен - их имеет смысл указывать в настроечных файлах машин, где стоит ключ, только одновременно с указанием этого же имени или имен в NH_SERVER_NAME на клиентских ини-файах? Или можно только ограничиться указанием их на серверах, просто чтобы были разные? Как вы верно подметили - да, на клиенте можно макс перечень из 6 имен написать, а у нас 7 пока.
22. Online-Ufa 19.11.21 11:13 Сейчас в теме
(21)
У нас несколько подсетей, и клиенты одной подсети без явного прописанного айпи ключей в нетхасп.ини, видели только ключи своей подсети. Например, ключ на 192.168.8.14, то клиенты 192.168.8.ХХХ видят только его и другие ключи на 192.168.8.ХХХ, а ключ на 192.168.2.ХХХ не видят.

Да, вы правы, броадкаст нужно отключать, если нужно будет закрепить клиентов за каким-то конкретным ключом и запретить доступ к остальным, указать где искать можно и без отключения. Но при нескольких ключах широковещание все же лучше отключать, т.к. на поиск ключей по всей сети уходит время.

Так а насчет имен - их имеет смысл указывать в настроечных файлах машин, где стоит ключ, только одновременно с указанием этого же имени или имен в NH_SERVER_NAME на клиентских ини-файах?

В общем случае можно задать имя сервера в nhsrv.ini без указания этого имени в nethasp.ini на клиентах и должно работать, а вот если указывать, то указанное имя должно совпадать с IP.
Будет ли влиять то, что у вас ключи в разных подсетях - сказать не могу.
13. smirnova_a 18.11.21 23:08 Сейчас в теме
Было подобное, опытным путем пришли к выводу, что это из-за того, что у вас однотипные ключи (5 ключей на 20х).
15. rossin 19.11.21 00:15 Сейчас в теме
(13) Любопытно, об этом мы не думали, т.к. какого-либо запрета или предостережения на такое использование нет в документации. Ясное дело, что они все на разных ПК, то есть в теории должны давать 20 * 5 = 100 лиц).
18. Online-Ufa 19.11.21 00:29 Сейчас в теме
(15) В теории да, если лицензии клиенты получают сами, а не от сервера, то при нескольких ключах проблемы должны быть только с таймингом, а вот если лицензии раздает сервер 1С или модуль веб-сервера, то в документации довольно ясно описано, что один сервер может раздать лицензии максимум с двух ключей одной серии, одного локального + одного по сети.
23. smirnova_a 19.11.21 14:04 Сейчас в теме
Мы поменяли во фрачайзи несколько однотипных ключей на один ключ и проблема ушла.
24. Online-Ufa 19.11.21 14:54 Сейчас в теме
(23) Очень правильное решение, ибо много ключей - это зло
25. Vladimir-R 167 19.11.21 17:48 Сейчас в теме
кстати, а лицензии сервер 1С раздает?
26. ishelper 19.11.21 18:36 Сейчас в теме
(25)
кстати, а лицензии сервер 1С раздает?
"Кстати" было написано еще в (1):
В настройках всех баз свойство "Разрешить выдачу лицензий сервером 1с предприятия" установлено в "НЕТ".
27. rossin 19.11.21 18:49 Сейчас в теме
(25) нет, я об этом писал. Иначе бы и вопроса не было)
28. muskul 23.11.21 10:21 Сейчас в теме
на первых 50 машинах пишем 1 сервер ключа, на вторых 50 второй сервер ключа, на остальных 10 третий сервер ключа
29. user790004 16.12.21 10:35 Сейчас в теме
Объединение ключей у нас как-то было вообще с минимальной какой-то доплатой (кол-во правда было существенно меньше), как-то программные лицензии меняли на HASP с доплатой в разнице лицензий. Самый идеальный вариант - 1 HASP, перезапуск службы и все остальное это костыли если разобраться. Попробуйте узнать ценник замены для начала - там стоимость может будет смешной...
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Программист 1С:ERP
Москва
зарплата от 100 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день