«Лицензии должны быть по запросу!»: поднимаем сервер лицензирования 1С в облаке

—

от автора

Представьте: вы — молодая быстрорастущая компания. Ваши системные ресурсы постоянно масштабируются, но при каждом изменении перестают работать лицензии. С такой же проблемой можно столкнуться, например при миграции с физических на виртуальные серверы.

Чтобы минимизировать подобные риски, необходимо централизовать хранение и выдачу программных клиентских и серверных лицензий 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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *