Добрый день!
Вопрос по настройке nethasp.ini
Используем платформу 8.3.16.1148. Есть пару кластеров 1С 8 с программными лицензиями на сервер + на основном кластере стоят программные клиентские лицензии на платформу. Так же есть аппаратные ключи. Лицензии с аппаратного ключа, которые стоят на основном сервере подъедает сам кластер, все ок. Но есть проблема с поиском лицензий, которые раздаются HASP License Manager с других узлов.
Пытался настроить nethasp.ini для поиска лицензий на других узлах в сети так:
[NH_COMMON]
NH_IPX = Disabled ; Use the IPX protocol
NH_NETBIOS = Disabled ; Use the NETBIOS protocol
NH_TCPIP = Enabled ; Use the TCP/IP protocol
...
[NH_TCPIP]
NH_SERVER_ADDR = ip1, ip2, ip3 ...
NH_PORT_NUMBER = 475
NH_TCPIP_METHOD = UDP
NH_USE_BROADCAST = Enabled
Показать
Проблема в том, что при настройке NH_SERVER_ADDR на несколько адресов почему-то клиент перестает искать лицензию на других узлах. Ранее такая настройка работала нормально, но не использовались программные лицензии. Кластер нормально отдает программные лицензии и аппаратные с ключа, который подключен к серверу где стоит кластер, но если лицензии на кластере закончились - не идет искать далее. Если nethasp настроить на один узел в сети - лицензии с него подхватываются, но проблема в том, что у нас несколько аппаратных ключей одной серии. Некоторые ключи в одной подсети с кластером, некоторые в разных. На всех узлах, где подключены ключи стоит HASP License Manager. Через Alladin Monitor видно, что он работает и лицензии раздаются, если подключается хоть один клиент. Можно ли каким-то образом 8.3.16 заставить искать ключ по нескольким узлам и если на первом найденном ключе закончились лицензии - далее производить поиск на следующем ключе? Что можно попробовать? Перенастройку на поиск по имени узлов, включение всех протоколов, отключение широковещательных протоколов, а так же снятие ограничений в Hasp License Manager (nhsrv.ini) пробовал - не помогло.
(2) Есть программные лицензии на сервере, где развернут кластер 1С. Так же на данном сервере есть аппаратный ключ и с него тоже забираются лицензии кластером 1С.
Отдельно в сети развернуты точки доступа с HASP LM. У клиента не получается получить ключ с данных точек доступа, если на 1 ключе все лицензии изнасходованы.
Попробую еще объяснить:
1. Имеем Сервер1С (здесь программные и аппаратные лицензии с локального ключа). Кластер 1С сам раздает лицензии.
2. Когда лицензии на кластере заканчиваются - клиент начинает искать лицензии в сети. Используются настройки nethasp.ini клиента. В данном файле указан список ip, где развернут HASP LM (так получилось, что есть несколько ключей одинаковой серии, хотя и с разным количеством лицензий, которые раскиданы по разным узлам, если разместить на один сервер все ключи - будет доступен только один, пробовали так делать).
3. Ранее при прописывании списка ip в NH_SERVER_ADDR файла nethasp.ini лицензии искались по очереди на каждом ip. Если на первом в списке ip лицензии закончились - поиск шел далее. При переходе на 8.3.16 и использовании раздачи лицензий через кластер клиент не ищет лицензии на ip, если указать их списком. Например:
NH_SERVER_ADDR = 192.168.0.2 - отрабатывает хорошо, лицензии подхватывает с дополнительного сервера
NH_SERVER_ADDR = 192.168.0.2, 192.168.0.3 - лицензии не ищет
Я наверное где-то допускаю ошибку в настройке nethasp.ini Как должна выглядеть строка NH_SERVER_ADDR = ... ?
2. Когда лицензии на кластере заканчиваются - клиент начинает искать лицензии в сети. Используются настройки nethasp.ini клиента. В данном файле указан список ip, где развернут HASP LM (так получилось, что есть несколько ключей одинаковой серии, хотя и с разным количеством лицензий, которые раскиданы по разным узлам, если разместить на один сервер все ключи - будет доступен только один, пробовали так делать).
Еще раз - сервер и не должен искать по сети второй ключ той же серии, т.е. например у вас есть три ключа - на 50, 20 и 10 лицензий. Ключ на 50 установлен непосредственно на машину с сервером, а 20 и 10 на машины в сети, на машинах с ключами естественно установлен HASP LM. Так вот сервер 1С выдаст лицензии с ключа на 50, который установлен непосредственно в машину сервера и ТОЛЬКО С ОДНОГО из ключей на 20 или 10 (который найдет первым) и дальше искать ключи этой серии по сети уже не будет.
13.
user592513_arhiholy
17.03.21 15:45 Сейчас в теме
(6) Находит и раздаёт, только не пойму закономерность, иногда работает, а иногда нет. В AKSmonitor клиентом является сервер, причём на двух ключах расположенных на разных компах.
Алгоритм поиска ключей Сервером 1С отличается от алгоритма поиска ключа клиентом и ему без разницы сколько адресов вы укажите в параметре NH_SERVER_ADDR в файле nethasp.ini - Сервер 1С второй ключ той же серии по сети искать не будет все равно.
Очень странно, т.к. раньше это работало. После перехода на 8.3.16 перестало. Буду пробовать с другими релизами. Спасибо.
Как у вас раньше работало я не знаю, но алгоритм поиска ключей по сети сервером 1С именно такой, как вы описали выше - если он нашел первый ключ серии ORGL8 и на нем нет лицензий, дальше поиск ключей этой серии больше и не должен производиться (дальше сервер ищет ключи только других серий: ORG8A - на 300 р.м. и ORG8B - на 500 р.м.). Т.е. есть чисто техническое ограничение, на количество лицензий, которое может выдать один сервер 1С при использовании аппаратных ключей.
Подробнее есть тут или тут.
И такой алгоритм был у 1С 8 всегда, замена релизов не поможет.
Если у вас в кластере несколько серверов, то можно попробовать настроить, что бы каждый из них искал свой отдельный ключ, который будет указан в nethasp.ini, но имхо проще объединить несколько ключей в один или поменять на программные лицензии.
(8) Кластер и клиенты могут забирать лицензии с одного ключа, здесь проблем нет.
Проблема в том, что не удается заставить клиент искать лицензии по нескольким ключам в сети. Т.е. если клиент нашел первый ключ и на нем нет лицензий, дальше поиск не производится.
(9) Лицензия полученная сервером сидит в менеджере одной строкой, но занимает несколько лицензий, клиентом каждая отдельной строкой. Так как поведение 1С при поиске лицензии подробно не расписано, у меня подозрение что первоначально ключ говорит, что на нем есть лицензии, но при попытке получить ее выдает отказ. Поэтому у 1С рекомендации разделять ключи для выдачи сервером и клиентом. Лично у меня проблем при таком подходе было гораздо меньше, кроме одной когда разные базы брали на одном компьютере лицензии с разных ключей. Попробуйте тогда общий для клиентов и сервера ключ прописать в списке последним в файле у клиента.
Добрый день.
Есть схожая ситуация:
Имеются два ключа USB 500 и 300 подключены в два разных сервера лицензирования HASP LM.
У пользователей в nethasp.ini ключи умышлено не прописаны.
Сервера прописаны на сервере 1с в nethasp.ini
NH_SERVER_ADDR = 192.1.1.10, 192.1.1.11
Возможна ли в таком режиме получение пользователями лицензий с двух ключей через сервер?
На данный момент наблюдается ситуация когда заканчиваются лицензии на первом ключе, например 500, то второй ключ пользователи не видят.
Отдельная ситуация:
Если на клиента прописано NH_SERVER_ADDR = 192.1.1.10, 192.1.1.11 по какому принципу определяется с какого сервера выдать с 10 или с 11? На данный момент наблюдаю, что получение лицензий первым делом происходят c 11, хотя он прописан вторым, а потом уже с 10 мочему так может происходить?
У пользователей в nethasp.ini ключи умышлено не прописаны.
На клиентах просто не прописаны IP или поиск ключей полностью заблокирован?
С настройками по умолчанию клиент будет искать по сети ключи и без указания IP.
Если на клиента прописано NH_SERVER_ADDR = 192.1.1.10, 192.1.1.11 по какому принципу определяется с какого сервера выдать с 10 или с 11? На данный момент наблюдаю, что получение лицензий первым делом происходят c 11, хотя он прописан вторым, а потом уже с 10 мочему так может происходить?
Сервер 1С, который раздает лицензии, на какой машине 192.1.1.10 или 192.1.1.11 ?
(17)
Отключен поиск аппар. лицензий и на всякий случай NH_USE_BROADCAST = Disabled
На обоих 192.1.1.10 и 192.1.1.11 стоит HASP LM, самого сервера 1с на них нет.
(18) По алгоритму поиска 1С сначала пытается получить лицензию там, где была получена лицензия при предыдущем успешном подключении. а вот почему второй ключ не хочет искать - этого сказать не могу, т.к. 500 и 300 - это ключи разных серий и сервер должен находить оба.
Вот если бы это были ключи до 100 р.м., то тогда бы было понятно.
Что показывает Aladdin Monitor?
из 300 занято около 200, остальные 100 заняты через сервер - это уже расписано в журнале поиска ключа, когда появляется ошибка что лицензия не наедена. Там также примерно написано "ORG8A найден, но лицензии закончены, а ORG8B не найден", хоть и прописан в nethasp.ini
Ещё один нюанс, лицензии выдавались в перемешу, и через сервер и через HASP LM, может и в этом проблема?
из 300 занято около 200, остальные 100 заняты через сервер
Каким образом 200 клиентов получили лицензии сами напрямую от HASP LM, без сервера, если у вас на клиентах доступ к ключу якобы заблокирован ?
Я же у вас первым делом спросил про блокировку доступа к ключу на клиентских ПК, т.к. если с одного ключа одновременно выдаются лицензии и серверу и напрямую клиентам, то поиск второго ключа может не отрабатывать.
(21) Это было в процессе перенастройки, поэтому получилось что одни через сервер, а часть ещё напрямую, потом уже стал понимать что причина может быть в этом.
Спасибо, теперь я спокоен! )
Боролся с такой же ситуаций - сервер должен раздавать лицензии с 3 дополнительных ключей на 5 клиентов. В итоге был написан bash скрипт карусель каждую минуту подменяющий адрес менеджера лицензий в nethasp.ini. Да топорно, да приходится иногда подождать но работает. Был бы рад узнать если кто то смог это решить более элегантно.
Борюсь с аналогичной ситуацией.
В локальной сети два сервера 1с (srv1-192.168.0.1, srv2-192.168.0.2) с двумя базами (base1, base2). В каждом сервере стоит ключ на 50 лицензий.
Дополнительно в удаленной сети центрального офиса имеется третий сервер (srv3) с базой (base3) куда пользователи нашего подразделения подключаются (к их базе).
Все пользователи запускают remoteapp приложение 1с с терминального сервера.
На терминальном сервере прописано откуда клиенту брать ключи NH_SERVER_ADDR = 192.168.0.1, 192.168.0.2
На всех базах выключена опция раздавать лицензию сервером. в итоге клиенты забирают лицензии с 192.168.0.1 все 50 штук, а со второго не берут, единственное что помогает это изменить запись на NH_SERVER_ADDR = 192.168.0.2 при нехватке лицензий у пользователя. Тогда клиенты начинают брать лицензии с 192.168.0.2, НО если клиент получивший лицензию с 192.168.0.1 закроет 1с и зайдет в него снова, то возьмет он уже лицензию с 192.168.0.2.... и так история по кругу переписыванием файла..
Вопрос: как получать клиентам лицензии если он подключается к base1, base2 с одного сервера скажем srv1, а если подключаются к base3, то брать лицензии с srv2?
Покажите полностью, что именно у вас в nethasp.ini на клиентах.
Если на машинах с ключами настраивали nhsrv.ini, то их содержимое тоже.
Вот содержимое:
настройка nhsrv.ini на первом менеждере лицензий 192.168.23.7
-----------------------------------------------------------------------
[NHS_SERVER]
NHS_USERLIST = 250 ; maximum number of concurrent logins
NHS_SERVERNAMES = srv-1c
NHS_HIGHPRIORITY = no ; run LM at high priority (default=no)
[NHS_IP]
NHS_USE_UDP = enabled ; enabled or disabled (default: enabled)
NHS_USE_TCP = enabled ; enabled or disabled (default: enabled)
NHS_IP_portnum = 475 ; IP port number (default: 475 (IANA registered))
; CAUTION: clients must use the same port !
[NHS_IPX]
NHS_USE_IPX = enabled ; enabled or disabled (default: enabled)
;NHS_addrpath = c:\temp ; pathname for haspaddr.dat (default: current dir)
NHS_AppendAddr = no ; append to haspaddr.dat (default: replace)
NHS_usesap = enabled ; enabled or disabled (default: enabled)
NHS_ipx_socketnum = 0x7483 ; IPX socket number (default: 0x7483)
; CAUTION: clients must use the same number !
настройка nhsrv.ini на втором менеждере лицензий 192.168.23.6
-------------------------------------------------------------------
[NHS_SERVER]
NHS_USERLIST = 250 ; maximum number of concurrent logins
; to this LM (default=250, max = 65520)
NHS_SERVERNAMES = srv-rep
NHS_HIGHPRIORITY = no ; run LM at high priority (default=no)
NHS_USE_UDP = enabled ; enabled or disabled (default: enabled)
NHS_USE_TCP = enabled ; enabled or disabled (default: enabled)
NHS_IP_portnum = 475 ; IP port number (default: 475 (IANA registered))
NHS_USE_IPX = enabled ; enabled or disabled (default: enabled)
;NHS_addrpath = c:\temp ; pathname for haspaddr.dat (default: current dir)
NHS_AppendAddr = no ; append to haspaddr.dat (default: replace)
NHS_usesap = enabled ; enabled or disabled (default: enabled)
NHS_ipx_socketnum = 0x7483 ; IPX socket number (default: 0x7483)
; CAUTION: clients must use the same number !
NHS_USE_NETBIOS = enabled ; enabled or disabled (default: enabled)
настройка nethasp.ini на терминальном сервере
-------------------------------------------------------------------------
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.23.7, 192.168.23.6
NH_TCPIP_METHOD = TCP
NH_SERVER_NAME = srv-1c, srv-rep
В общем ничего не помогает, ни пробелы ни NH_USE_BROADCAST=Disabled и прочее...
Но есть выход, по крайней мере по мере из "костылей" в решение может кому-то сгодится... Особенно тем кто на терминальном сервере и кого в сети два одинаковых ключа как у меня 50 шт каждый.
1. На srv1 и srv2 где установлены ключи и менеджер лицензий создаем в планировщиках задание на батник на перезапуск служб Hasp один будет перезагружать службы в 00:00 и каждый час, второй в 00:30 и так каждый час или кому как удобно.
запись простая:
net stop "HASP Loader"
start /wait net start "HASP Loader"
Что позволяет освобождать "неиспользуемые" лицензии. Там где алладин монитор показывает 0 мс.
2. На терминальном сервере в папке C:\Program Files (x86)\1cv8\conf удаляем nethasp.ini и с помощью политик по отделам в домене или как вам удобно кладем файл nethasp.ini в папку AppData\Local\1C\1cv8\conf у пользователя
для части сотрудников будет запись в этом файле NH_SERVER_ADDR = 192.168.0.1, а для других NH_SERVER_ADDR = 192.168.0.2
-------
По крайней мере у меня у терминальных пользователей пока полет нормальных.... Неудобства видны, конечно.
Блин тоже самое (базы только файловые) Не подхватывает лицензии со второго ключа. И еще один момент, при привязке программной лицензии к HASP виден только один ключ, который первый в списке (NH_SERVER_ADDR). И соответственно если его сдвинуть на вторую позицию, то программная лицензия тоже не будет работать, скажет что ключ удален и есть только тот который теперь указан первым. Есть еще мысли как это победить? Или только костыли как в посте Выше?
И еще вводные, при активации лицензии, она видит только первый ключ из списка, а не оба.
Уже обратил внимание на это момент и что-то тут не так, у меня видит все ключи, доступные по сети.
В файлах nhsrv.ini на машинах с HASP LM присвоены имена с помощью парамтера NHS_SERVERNAMES=<NameLM>?
(35)Нет. Делал, но не получилось, когда прописываю имена сервисов, то вообще перестают видеться ключи (делал по инструкциям, последовательность правильная)
(42) Это ключи, у которых не обновляется микропрошивка и точно есть проблемы с работой на Linux.
У вас такой ключ клиенты совсем найти не могут или запускается при условии, если его IP указать первым в списке параметра NH_SERVER_ADDR?
(31) к меня не получилось заставить работать софтовые и аппаратные клиентские личензии одновременно (вроде через назначение функциональности кластера сервис лицензирования есть возможность). Когда убрали программы клиентские личензии - все заработало. Лицензии по списку в разных подсетях ищутся.