Создание базы 1С через RAC без GUI решение проблемы с лицензией HASP

Автор George, Сен. 28, 2026, 11:59

« назад - далее »

George

[h]Создание базы 1С через RAC (rac infobase create --create-database) без GUI: решение проблемы с лицензией HASP[/h]

Проблема
При создании информационной базы через CLI-утилиту rac с параметром --create-database:
Код: bash
/opt/1cv8/x86_64/8.3.27.1936/rac infobase create 127.0.0.1:1545 \
  --cluster=<UUID_кластера> \
  --name=zkh \
  --dbms=PostgreSQL \
  --db-server=psql-node1.cloud-life.site \
  --db-name=zkh \
  --locale=ru \
  --db-user=usr1c \
  --db-pwd='пароль' \
  --license-distribution=allow \
  --create-database

сервер 1С выдаёт ошибку отсутствия лицензии, хотя HASP-ключ физически подключён и драйверы работают.

При этом создание той же базы через GUI-консоль (MCAC) проходит без ошибок. Подключение существующей базы (без --create-database) тоже работает через CLI без проблем.

Причина
При --create-database сервер инициализирует структуру метаданных 1С в новой базе — для этого нужен доступ к LicenseService. GUI-консоль неявно настраивает требования назначения функциональности (rules) для LicenseService на подходящем рабочем процессе. RAC этого не делает — правила нужно создать вручную.

Без --create-database лицензия не требуется: метаданные уже в базе, и 1С их не инициализирует.

[h]Решение[/h]

Шаг 1. Получить UUID рабочего сервера с HASP-ключом
Код: bash
/opt/1cv8/x86_64/8.3.27.1936/rac server list \
  --cluster=<UUID_кластера> \
  127.0.0.1:1545

В выводе найти сервер, на котором физически вставлен HASP-ключ:
Код: bash
server           : <UUID_сервера>
host             : 1c-node1.cloud-life.site
name             : Центральный сервер 1
...

Запомнить значение поля server — это UUID рабочего сервера.

Важно: для rule нужен UUID рабочего сервера (server), а не рабочего процесса (process). Это разные сущности.

Шаг 2. Проверить существующие правила
Код: bash
/opt/1cv8/x86_64/8.3.27.1936/rac rule list \
  --cluster=<UUID_кластера> \
  --server=<UUID_сервера> \
  127.0.0.1:1545

Если пусто — правил нет, нужно создавать.

Шаг 3. Создать правило для LicenseService

Правило 1: LicenseService — всегда на этом сервере:
Код: bash
/opt/1cv8/x86_64/8.3.27.1936/rac rule insert \
  --cluster=<UUID_кластера> \
  --server=<UUID_сервера_с_HASP> \
  --position=1 \
  --object-type=LicenseService \
  --rule-type=always \
  127.0.0.1:1545

Правило 2 (опционально): всё остальное — не назначать на этот сервер:
Код: bash
/opt/1cv8/x86_64/8.3.27.1936/rac rule insert \
  --cluster=<UUID_кластера> \
  --server=<UUID_сервера_с_HASP> \
  --position=2 \
  --rule-type=never \
  127.0.0.1:1545

Второе правило полезно, если сервер выделен под лицензирование и не должен тащить лишние сервисы кластера. Если сервер параллельно выполняет обычную работу — второе правило можно не создавать.

Шаг 4. Применить правила
Код: bash
/opt/1cv8/x86_64/8.3.27.1936/rac rule apply \
  --cluster=<UUID_кластера> \
  127.0.0.1:1545

Без rule apply правила записаны, но не действуют.

Шаг 5. Создать базу
Код: bash
/opt/1cv8/x86_64/8.3.27.1936/rac infobase create 127.0.0.1:1545 \
  --cluster=<UUID_кластера> \
  --name=zkh \
  --dbms=PostgreSQL \
  --db-server=psql-node1.cloud-life.site \
  --db-name=zkh \
  --locale=ru \
  --db-user=usr1c \
  --db-pwd='пароль' \
  --license-distribution=allow \
  --create-database

После настройки правил все последующие базы с --create-database создаются без ошибок лицензии.

[h]Шпаргалка по UUID в RAC[/h]

[th]Команда RAC[/th][th]Что возвращает[/th][th]Куда используется[/th]
cluster listUUID кластера--cluster (везде)
server listUUID рабочего сервера--server в rule insert
process listUUID рабочего процессадиагностика, не для rule

[h]Дополнительно: правильное добавление рабочего сервера в кластер через RAC[/h]

При добавлении сервера через rac server insert обязательно указывать --cluster-port (порт главного менеджера кластера, обычно 1541). Без этого параметра сервер регистрируется в кластере, но висит в полуподключённом состоянии: последующие команды обновления (например, server update --using=main) не отрабатывают.

Правильная команда:
Код: bash
/opt/1cv8/x86_64/8.3.27.1936/rac server insert 127.0.0.1:1545 \
  --cluster=<UUID_кластера> \
  --agent-host=1c-node2.cloud-life.site \
  --agent-port=1540 \
  --port-range=1560:1591 \
  --name="Центральный сервер 2" \
  --using=normal \
  --cluster-port=1541

GUI-консоль передаёт --cluster-port автоматически, поэтому через GUI серверы добавляются корректно, а через CLI без этого параметра — нет.

Если сервер уже добавлен без --cluster-port и завис:
1. Обнулить через --using=normal (если возможно)
2. Удалить: rac server remove --cluster=<UUID> --server=<UUID_сервера>
3. Добавить заново с --cluster-port=1541

[h]Проверка HASP-ключа[/h]

Код: bash
# USB-ключ виден системе
lsusb | grep -i hasp

# Драйвер запущен
systemctl status aksusbd
systemctl status hasplmd

# Порты менеджера лицензий слушаются
netstat -tulnp | grep -E "1947|475"

Web-интерфейс Sentinel ACC: http://localhost:1947
  •  

🡱 🡳

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.