Проблема внезапной деактивации программных лицензий 1С в виртуальной среде — одна из самых распространенных и неприятных задач для системного администратора. Ситуация обычно выглядит так: настроен отказоустойчивый кластер серверов, настроена миграция виртуальных машин (vMotion или Live Migration), но при любом сбое или переезде сервера 1С перестает запускаться, требуя повторной активации. Разберем подробно, почему это происходит и как настроить систему так, чтобы лицензии оставались стабильными.
Программная лицензия 1С:Предприятие привязывается к уникальному «отпечатку» оборудования. Проанализируем ключевые параметры, которые платформа считывает для формирования этого отпечатка:
Когда происходит миграция в кластере, 1С видит изменение хотя бы одного из этих параметров. В этот момент файлы лицензий в директории C:\ProgramData\1C\licenses\ (для Windows) или /var/1C/licenses/ (для Linux) помечаются как недействительные. Платформа записывает внутрь файла информацию о несоответствии, и простое восстановление файла из бэкапа после «возвращения» на старый хост не всегда помогает, так как 1С проверяет целостность и состояние лицензии в реальном времени.
Рассмотрим наиболее правильный с точки зрения архитектуры «1С:Предприятие» подход. Вместо того чтобы активировать лицензии на рабочем сервере, который несет нагрузку и может мигрировать, мы создадим отдельную «якорную» точку.
Рассмотрим по шагам:
В такой конфигурации основные серверы приложений могут мигрировать сколько угодно — они будут обращаться за лицензиями к стабильному серверу лицензирования, который никуда не переезжает.
Если нет возможности выделить отдельный сервер, проанализируем настройки самой виртуальной машины. Наша задача — сделать так, чтобы «внутри» гостевой ОС оборудование выглядело неизменным независимо от физического хоста.
Выполним следующие настройки:
Enhanced vMotion Compatibility (EVC). В Hyper-V включите опцию Migrate to a physical computer with a different processor version. Это скроет специфические инструкции новых процессоров, и 1С будет видеть стандартный набор параметров CPU на любом хосте кластера..vmx для VMware) можно жестко прописать параметры uuid.bios и uuid.location, чтобы они не менялись при операциях «Copy» или «Move».Малоизвестный, но крайне эффективный метод — использование аппаратного ключа как «якоря» для программных лицензий. Посмотрим, как это работает.
Если у вас есть физический USB-ключ HASP (даже старый или на 1 пользователя), вы можете пробросить его в виртуальную машину. При активации программной лицензии (вводе пин-кода) выберите вариант привязки не к параметрам компьютера, а к серийному номеру аппаратного ключа.
Преимущества этого метода:
Проанализируем ситуацию, когда лицензия всё же «слетела». Как правило, в комплекте идет 3 пин-кода (основной и два резервных). Выясним, как минимизировать простой:
Не ждите момента падения сервера. Если вы планируете масштабные изменения в кластере, заранее запросите дополнительные пин-коды в Центре Лицензирования 1С (lic@1c.ru). Опишите, что используете виртуализацию, и вам предоставят запасные коды.
Для продвинутых администраторов разберем возможность использования утилиты ring, которая входит в состав платформы (начиная с версии 8.3.9). С её помощью можно автоматизировать процесс активации лицензий через командную строку. Рассмотрим пример структуры команды:
ring license activate --pin <ВашПинКод> --owner <ДанныеВладельца> --path <ПутьКЛицензии>
Важный нюанс: восстановление из бэкапа файлов *.lic сработает только в том случае, если виртуальная машина вернулась на хост с абсолютно идентичными параметрами, и файлы еще не были перезаписаны платформой как «испорченные». Если файлы уже помечены как невалидные, их придется удалять и проводить процедуру получения лицензии заново, используя резервный пин-код.
Подведем итог: наиболее надежным решением для кластера является комбинация фиксации MAC-адресов и настройки режима совместимости процессоров (EVC), либо выделение минималистичного сервера лицензирования, закрепленного за конкретным хостом.