
Представьте: вы — молодая быстрорастущая компания. Ваши системные ресурсы постоянно масштабируются, но при каждом изменении перестают работать лицензии. С такой же проблемой можно столкнуться, например при миграции с физических на виртуальные серверы.
Чтобы минимизировать подобные риски, необходимо централизовать хранение и выдачу программных клиентских и серверных лицензий 1С. Это можно сделать, разместив их на отдельной машине — сервере лицензирования. Под катом разбирается, как это сделать.
Сервер лицензирования позволяет значительно упростить развертывание кластера серверов в виртуальной среде и динамическое изменение ресурсов, выделенных серверу.
Преимущества кластера с сервером лицензирования
- Если в кластере несколько машин, не нужно активировать лицензии на каждом из них, так как они будут централизованы на одном сервере.
- При изменении конфигурации сервера не нужно будет получать лицензию заново, так как она привязана к отдельному серверу.
- Не нужно повторно активировать лицензии, например, при пересборке кластера.
Серверы лицензирования 1С — способ упростить жизнь своим администраторам. Помимо того, что все лицензии централизованы и проще управлять кластером, решается проблема с доступами. Нет необходимости плодить пользователей и пренебрегать безопасностью, выдавая ключи от серверов каждому из администраторов. Все, что нужно им для работы, расположено на серверах лицензирования 1С.
Часто задаваемые вопросы
— Нужны ли дополнительные лицензии для сервера лицензирования 1С?
Нет, сервер лицензирования не требует установки дополнительных лицензий. Если вы запускаете сервер 1С, у вас уже есть дистрибутив — доплачивать не нужно.
1С не распространяет свои дистрибутивы свободно, для легитимного доступа нужно приобрести информационно-техническое сопровождение (1С: ИТС). Если хотите упростить задачу — арендуйте лицензии у нас, мы предоставим ИТС.
— Помогают ли экономить серверы лицензирования?
Да, если в кластер включен сервер лицензирования, можно заказывать меньше лицензий: большие бандлы стоят дешевле. Например, вместо пяти многопользовательских лицензий на 100 аккаунтов можно выдать одну на 500.
— Какие конфигурации подходят для серверов лицензирования?
Как ПО, сервер лицензирования 1С потребляет не много вычислительных ресурсов. Для небольшого кластера до пяти серверов будет достаточно двух ядер, 4 ГБ оперативной памяти и примерно 20 ГБ на диске для хранения лицензий.

Задача: собрать кластер 1С
Протестируем серверы лицензирования на примере облачной платформы Selectel. Соберем кластер из двух серверов и одной облачной базы данных, развернем необходимое ПО и настроим раздачу лицензий.
Подготовка кластера
1. Переходим в раздел Облачная платформа внутри панели управления.
2. Создаем два облачных сервера в рамках одного проекте. Один будет выполнять роль сервера лицензирования, а второй — обслуживать пользователей.

3. В разделе Облачные базы данных создаем кластер PostgreSQL-14-1C, пользователя и базу данных. Подробнее о работе с услугой можно ознакомиться в документации.

Настройка сервера приложений
1. Подключаемся к серверу приложений (demo-server) по SSH и устанавливаем переменные окружения:
export PLATFORM_VERSION='8.3.23.1912' export PLATFORM_ARCH='x86_64' export PKG_SERVER_NAME='server64_8_3_23_1912.tar.gz'
В переменные окружения записываем версию платформы, ее разрядность и название дистрибутива, который «превратит» нашу виртуальную машину в сервер приложений 1С.

2. Загружаем необходимые дистрибутивы для сервера приложений:
wget https://52772e2d-80a1-4cab-a8a3-d66ac287e640.selstorage.ru/server64_8_3_23_1912.tar.gz wget http://www.gilev.ru/1c/tpc/GILV_TPC_G1C_83.dt
Снапшоты дистрибутивов доступны в хранилище Selectel, но их также можно взять с официального сайта 1C.
3. Устанавливаем необходимые пакеты для работы 1С и Apache. Это можно сделать с помощью одной команды:
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections && apt-get -qq update && apt-get install -y \ iproute2 \ curl wget \ ttf-mscorefonts-installer \ imagemagick \ unixodbc \ fontconfig \ libgtk-3-0 \ libenchant1c2a \ libharfbuzz-icu0 \ libgstreamer1.0-0 \ libgstreamer-plugins-base1.0-0 \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad \ libsecret-1-0 \ libsoup2.4-1 \ libgl1 \ libegl1 \ libxfixes3 \ libxslt1.1 \ geoclue-2.0 \ openjdk-8-jre \ jq \ netcat \ apache2
4. Обновляем шрифты клиента на сервере:
fc-cache -fv
5. Распаковываем и устанавливаем платформу:
tar vxf "${PKG_SERVER_NAME}" //Настройка сервера приложений --enable-components liberica_jre,server,server_admin,ws
При возникновении ошибок проверьте, правильно ли записаны значения переменных окружения.
6. Создаем линки для нужных исполняемых файлов, чтобы не писать каждый раз путь к платформе (она будет на машине одна):
ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/webinst /usr/local/bin ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/ragent /usr/local/bin ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/ras /usr/local/bin ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/rac /usr/local/bin ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/ibcmd /usr/local/bin ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/ibsrv /usr/local/bin
7. Регистрируем необходимые сервисы, в частности — сервер приложений 1С: Предприятие:
systemctl link \ /opt/1cv8/$PLATFORM_ARCH/$PLATFORM_VERSION/srv1cv8-${PLATFORM_VERSION}@.service systemctl enable srv1cv8-${PLATFORM_VERSION}@default systemctl start srv1cv8-${PLATFORM_VERSION}@default systemctl status srv1cv8-${PLATFORM_VERSION}@default
8. На этом этапе сервис уже работает. Запускаем сервер ras:
systemctl link \ /opt/1cv8/$PLATFORM_ARCH/$PLATFORM_VERSION/ras-${PLATFORM_VERSION}.service systemctl enable ras-${PLATFORM_VERSION} systemctl start ras-${PLATFORM_VERSION} systemctl status ras-${PLATFORM_VERSION}
ras — сервер удаленного администрирования кластера 1С. Он позволяет прослушивать порт 1545/tcp и принимать команды на управление от утилиты rac.
Отлично — сервер приложений готов. Теперь нужно настроить сервер лицензирования.
Настройка сервера лицензирования
Около половины пунктов по настройке сервера лицензирования идентичны тому, что мы делали при развертывании сервера приложений. Единственная разница — в значениях переменных окружения. Однако рекомендуем повторить инструкции, чтобы избежать возможных ошибок.
1. Подключаемся к серверу лицензирования (demo-licence) по SSH и устанавливаем следующие переменные окружения:
export PLATFORM_VERSION='8.3.23.1912' export PLATFORM_ARCH='x86_64' export PKG_LIC_NAME='1c_enterprise_license_tools_0.15.0_2_linux_x86_64.tar.gz' export PKG_SERVER_NAME='server64_8_3_23_1912.tar.gz'
В переменные окружения записываем версию платформы, ее разрядность и название дистрибутива, который «превратит» нашу виртуальную машину в сервер лицензирования 1С.
2. Загружаем необходимые дистрибутивы для сервера лицензирования:
wget https://52772e2d-80a1-4cab-a8a3-d66ac287e640.selstorage.ru/server64_8_3_23_1912.tar.gz wget https://52772e2d-80a1-4cab-a8a3-d66ac287e640.selstorage.ru/1c_enterprise_license_tools_0.15.0_2_linux_x86_64.tar.gz
Снапшоты дистрибутивов доступны в хранилище Selectel, но их также можно взять с официального сайта 1C.
3. Далее нужно установить необходимые пакеты для работы 1С и Apache. Это можно сделать с помощью одной команды:
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections && apt-get -qq update && apt-get install -y \ iproute2 \ curl wget \ ttf-mscorefonts-installer \ imagemagick \ unixodbc \ fontconfig \ libgtk-3-0 \ libenchant1c2a \ libharfbuzz-icu0 \ libgstreamer1.0-0 \ libgstreamer-plugins-base1.0-0 \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad \ libsecret-1-0 \ libsoup2.4-1 \ libgl1 \ libegl1 \ libxfixes3 \ libxslt1.1 \ geoclue-2.0 \ openjdk-8-jre \ jq \ netcat
Процесс установки может занять до 10 минут.
4. Обновляем шрифты клиента на сервере:
fc-cache -fv
5. Распаковываем и устанавливаем платформу:
tar vxf "${PKG_SERVER_NAME}" //Настройка сервера лицензирования --enable-components liberica_jre,server,server_admin,ws
6. Создаем линки для нужных исполняемых файлов, чтобы не писать каждый раз путь к платформе (она будет на машине одна):
ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/webinst /usr/local/bin ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/ragent /usr/local/bin ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/ras /usr/local/bin ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/rac /usr/local/bin ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/ibcmd /usr/local/bin ln -s /opt/1cv8/${PLATFORM_ARCH}/${PLATFORM_VERSION}/ibsrv /usr/local/bin
7. Регистрируем и запускаем сервис 1С:
# license-tools (https://releases.1c.ru/project/EnterpriseLicenseTools) tar vxf "$PKG_LIC_NAME" //Настройка сервера лицензирования systemctl link \ /opt/1cv8/$PLATFORM_ARCH/$PLATFORM_VERSION/srv1cv8-${PLATFORM_VERSION}@.service systemctl enable srv1cv8-${PLATFORM_VERSION}@default systemctl start srv1cv8-${PLATFORM_VERSION}@default systemctl status srv1cv8-${PLATFORM_VERSION}@default
8. На этом этапе сервис уже работает. Запускаем сервер ras:
systemctl link \ /opt/1cv8/$PLATFORM_ARCH/$PLATFORM_VERSION/ras-${PLATFORM_VERSION}.service systemctl enable ras-${PLATFORM_VERSION} systemctl start ras-${PLATFORM_VERSION} systemctl status ras-${PLATFORM_VERSION}

9. Далее активируем лицензии через консоль или конфигуратор. В последнем случае нужно указать, на какой сервер следует поместить лицензию. Внизу формы будет небольшое поле для ввода адреса. Но для нас предпочтительней вариант с консолью:
/opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring license activate ...
Вместо многоточия необходимо указать данные для активации: —company, —town, —country, —zip-code, —street, —house, —email, —serial, —pin, —previous-pin.

Пример активации 1C:Enterprise Server и записи параметров.
Вы можете вывести информацию о статусе сервера приложений 1С:
systemctl status srv1cv8-8.23.1912@default.service

10. Выдадим права на запуск сервера приложений отдельному пользователю, созданному инсталлятором 1С (usr1cv8:grp1cv8):
chown usr1cv8:grp1cv8 -R /var/1C/licenses
11. Последним этапом нужно проверить, прописан ли адрес сервера приложений в списке хостов:
vi /etc/hosts
Без этого сервер лицензирования не сможет раздавать лицензии по запросу. В результате список хостов должен выглядеть так:

Загрузка информационной базы
Если у вас есть собственная информационная база, вы можете ее загрузить на сервер приложений.
1. Производим загрузку с помощью утилиты ibcmd из файла DT в облачную базу данных:
NOW="$(date +%s)" DT_FILE=~/GILV_TPC_G1C_83.dt DATA_DIR="/home/usr1cv8/data/${NOW}" DATABASE_HOST=master.f09aa6eb-2810-465b-90ff-df8d8a160859.pvc.c.dbaas.selcloud.ru DATABASE_USER="test" DATABASE_PASS="test" DATABASE_NAME="test" ibcmd infobase restore \ --data="${DATA_DIR}" \ --dbms=PostgreSQL \ --db-server=${DATABASE_HOST} \ --db-user=${DATABASE_USER} \ --db-pwd=${DATABASE_PASS} \ --db-name=${DATABASE_NAME} \ ${DT_FILE} || err_code=$?
Обратите внимание на параметры: для подключения к информационной базе нужно указать адрес хоста, данные пользователя и название БД.
2. Добавляем информационную базу в кластер 1С:
PUB_NAME="test" IB_NAME="test" IB_DSCR="test" CLUSTER_UID=$(rac cluster list | awk '$1 == "cluster" {sub(/[\r\n]/, x);print $3}') rac infobase create \ --cluster="${CLUSTER_UID}" \ --name="${IB_NAME}" \ --descr="${IB_DSCR}" \ --dbms=PostgreSQL \ --db-server="${DATABASE_HOST}" \ --db-name="${DATABASE_NAME}" \ --locale=ru \ --db-user="${DATABASE_USER}" \ --db-pwd="${DATABASE_PASS}" \ --license-distribution=allow
3. Публикуем информационную базу для доступа через веб-клиент 1С:
webinst -apache24 -wsdir "${PUB_NAME}" -dir "/var/www/data/${PUB_NAME}" -connstr "Srvr=\"localhost\";Ref=\"${PUB_NAME}\";"
4. Перезагрузим установленный Apache, чтобы применить все изменения:
systemctl restart apache2
Сборка кластера
Последним этапом необходимо «объединить» сервер приложений и лицензирования воедино.
1. Устанавливаем переменные и назначаем запросы функциональности для сервера приложений:
SRV_UID=$(rac server list --cluster="${CLUSTER_UID}" | awk -F'[:]' '$1 ~ "^server" {gsub(/^[ \t]+/,"",$2);gsub(/[ \t]+$/,"",$2);print $2}') LIC_PORT="1540" LIC_HOST="172.24.21.4" LIC_PORT_RANGE="1560:1591" rac rule insert \ --cluster=${CLUSTER_UID} \ --server=${SRV_UID} \ --position=1 --object-type=LicenseService --rule-type=never rac rule insert \ --cluster=${CLUSTER_UID} \ --server=${SRV_UID} \ --position=2 --rule-type=always
Обратите внимание: в примере мы используем два облачных сервера, находящихся в одной приватной сети, и облачную базу данных. Однако вы также можете, например, в качестве сервера использовать выделенный сервер, или расположить узлы кластера в разных регионах. Подробнее о том, как организовать сетевую связность между разными серверами, мы рассказали в отдельной статье.
2. Добавляем сервер лицензирования в кластер и назначаем запросы функциональности для сервера, который будет выступать в качестве сервера лицензирования:
LIC_SRV_UID=$(rac server insert \ --cluster=${CLUSTER_UID} \ --agent-host=${LIC_HOST} \ --name="license" \ --agent-port=$LIC_PORT \ --port-range=$LIC_PORT_RANGE | awk '$1 == "server" {sub(/[\r\n]/, x);print $3}') rac rule insert \ --cluster=${CLUSTER_UID} \ --server=${LIC_SRV_UID} \ --position=1 --object-type=LicenseService --rule-type=always
Назначаем id с помощью переменной LIC_SRV_UID для дальнейшего использования в скрипте.
3. Применяем правила и запросы функциональности:
rac rule apply \ --cluster=${CLUSTER_UID}
До запуска этой команды мы только задали правила и записали их в конфигурацию кластера, но они еще не действовали. После сервер считал и включил их. Теперь роль сервера лицензирования сможет взять только demo-license.
Результат: тестирование кластера
Мы можем подключиться к серверу приложений и проверить, работают ли лицензии. Для этого копируем адрес demo-server из панели управления и отправляем такой HTTP-запрос:
http://172.24.21.3/test
Параметр test — это PUB_NAME, который мы указали в 11 пункте при добавлении информационной базы 1С.


Готово — 1C:Enterprise доступна через интернет, сервер лицензирования работает. Если вы получили код 500, подключитесь к серверу приложений и перезагрузите Apache.
Остались вопросы после прочтения статьи? Может, хотите поделиться опытом? Присоединяйтесь к обсуждениям в комментариях!
ссылка на оригинал статьи https://habr.com/ru/articles/791470/
Добавить комментарий