При масштабировании инфраструктуры 1С и переходе на работу в составе кластера из нескольких серверов часто возникает вопрос: как именно система будет использовать программные клиентские лицензии? Существует распространенное заблуждение, что каждый рабочий сервер «видит» только те лицензии, которые активированы непосредственно на нем. Разберем детально, как работает сервис лицензирования, как объединить лицензии в общий пул и какие особенности накладывает лицензирование уровня КОРП.
Для начала проанализируем ситуацию, описанную в обращении. Если у нас есть два сервера приложений и на каждом активировано по 100 клиентских лицензий, это не означает автоматического разделения пользователей на «своих» и «чужих». В системе 1С:Предприятие 8.3 существует логическое понятие Сервис лицензирования.
Рассмотрим подробнее, как это устроено. Когда пользователь пытается подключиться к базе данных, рабочий процесс (rphost) обращается к сервису лицензирования кластера. Если в кластере настроен единый сервис лицензирования, он обращается к списку всех доступных файлов программных лицензий (.lic), которые «привязаны» к узлам, где запущен этот сервис. Важно понимать: программные лицензии объединяются в общий пул. Если у вас две лицензии по 100 рабочих мест, кластер будет оперировать общим числом в 200 мест.
Выясним причину опасений автора темы. Существовала информация, что сервер srv01 заберет свои 100 лицензий и не «увидит» лицензии второго сервера. Это утверждение верно только в одном случае: если серверы приложений работают как два независимых кластера. Если же серверы объединены в единый кластер 1С, то ресурсы (включая лицензии) становятся общими.
Проанализируем ситуацию с «выкидыванием» 101-го пользователя. Если сервис лицензирования работает корректно, он будет последовательно перебирать все доступные файлы лицензий. Пока суммарное количество сеансов не превысит 200 (в нашем примере), сервер будет успешно выдавать лицензии. Ограничение «один сервер — одна сотня» технически отсутствует, если не заданы специфические «Требования назначения объектов».
Рассмотрим по шагам стратегию выноса лицензий на отдельный сервер, как планирует автор. Это грамотный архитектурный ход, особенно при построении КОРП-инфраструктуры. Перенос сервиса лицензирования на отдельный узел позволяет:
Для реализации такой схемы в консоли администрирования кластера необходимо настроить Требования назначения объектов. Мы можем явно указать, что Сервис лицензирования должен запускаться только на определенном сервере. Для всех остальных серверов кластера мы устанавливаем запрет на запуск этого сервиса. В качестве альтернативы штатной оснастке для настройки серверов и требований назначения объектов можно использовать кроссплатформенную консоль администрирования кластера 1С.
Посмотрим на ситуацию через призму лицензий КОРП. Переход на этот уровень — это не только покупка новых лицензий, но и изменение логики работы кластера. Разберем ключевые отличия:
Разберем вопрос отказоустойчивости, поднятый в обсуждении. Если сервер, на котором активированы все 200 лицензий, выйдет из строя, кластер может потерять доступ к сервису лицензирования. Как этого избежать?
Во-первых, в кластере можно настроить Уровень отказоустойчивости. Если он равен 1 или выше, критические сервисы будут дублироваться. Однако с программными лицензиями есть нюанс: файл лицензии жестко привязан к характеристикам железа (UUID, MAC-адрес, параметры процессора). Если физический сервер «умирает», перенос файла на другой сервер не поможет — лицензия станет невалидной.
Для решения этой проблемы в высоконагруженных системах мы рекомендуем:
Проанализируем, почему иногда лицензии «кончаются» быстрее, чем ожидалось. Существует два способа выдачи лицензий, которые важно различать:
1. Выдача лицензий сервером: В этом случае лицензия тратится на каждый сеанс. Если один бухгалтер открыл три разные базы, он займет 3 лицензии из пула сервера. Именно этот режим работает при использовании выделенного сервера лицензирования.
2. Выдача лицензий клиентом: Лицензия устанавливается локально на компьютер пользователя. В этом случае пользователь может открыть неограниченное количество баз на своем ПК, расходуя всего 1 лицензию.
Рассмотрим пример настройки распределения сервисов в консоли. Для того чтобы закрепить сервис лицензирования за конкретным сервером, выполним следующие действия:
1cv8 mmc.Рабочие серверы.Требования назначения объектов.Пример настройки требования для выделенного сервера лицензирования:
Объект требования: Сервис лицензирования
Тип требования: Назначать
Приоритет: 1
Для всех остальных серверов добавим обратное требование:
Объект требования: Сервис лицензирования
Тип требования: Не назначать
Приоритет: 1
В схеме автора упоминался также вынос Журнала регистрации, Полнотекстового поиска и других служб. Это отличная практика для КОРП-систем. Выясним важную деталь: хотя эти службы сами по себе не потребляют клиентские лицензии (в плане «рабочих мест»), они требуют наличия серверной лицензии на каждом узле, который входит в состав кластера 1С. Таким образом, если у вас 4 рабочих сервера в одном кластере, вам потребуется 4 лицензии на сервер 1С (уровня КОРП в данном случае). Для расчета необходимых параметров оборудования при подобном разделении серверов и служб можно использовать калькулятор аппаратных ресурсов для 1С.
Подводя итог, можно сказать: при правильной настройке кластера и использовании сервиса лицензирования, все ваши лицензии будут работать как единый механизм, обеспечивая доступ пользователям независимо от того, к какому рабочему серверу они подключились в данный момент.