Что такое сервер лицензирования 1С
Представьте: вы — молодая быстрорастущая компания. Ваши системные ресурсы постоянно масштабируются, но при каждом изменении перестают работать лицензии. С такой же проблемой можно столкнуться, например, при миграции с физических на виртуальные серверы.
Чтобы минимизировать подобные риски, необходимо централизовать хранение и выдачу программных клиентских и серверных лицензий. Это можно сделать, разместив их на отдельной машине — сервере лицензирования.
Сервер лицензирования позволяет значительно упростить развертывание кластера серверов в виртуальной среде и динамическое изменение ресурсов, выделенных серверу.
Преимущества кластера с сервером лицензирования
- Если в кластере несколько машин, не нужно активировать лицензии на каждом из них, так как они будут централизованы на одном сервере.
- При изменении конфигурации сервера не нужно будет получать лицензию заново, так как она привязана к отдельному серверу.
- Не нужно повторно активировать лицензии, например, при пересборке кластера.
Серверы лицензирования 1С — способ упростить жизнь своим администраторам. Помимо того, что все лицензии централизованы и проще управлять кластером, решается проблема с доступами. Нет необходимости плодить пользователей и пренебрегать безопасностью, выдавая ключи от серверов каждому из администраторов. Все, что нужно им для работы, расположено на серверах лицензирования 1С.
Часто задаваемые вопросы
— Нужны ли дополнительные лицензии для сервера лицензирования 1С?
Нет, сервер лицензирования не требует установки дополнительных лицензий. Если вы запускаете сервер 1С, у вас уже есть дистрибутив — доплачивать не нужно.
1С не распространяет свои дистрибутивы свободно, для легитимного доступа нужно приобрести информационно-техническое сопровождение (1С:ИТС).
— Помогают ли экономить серверы лицензирования?
Да, если в кластер включен сервер лицензирования, можно заказывать меньше лицензий: большие бандлы стоят дешевле. Например, вместо пяти многопользовательских лицензий на 100 аккаунтов можно выдать одну на 500.
— Какие конфигурации подходят для серверов лицензирования?
Как ПО, сервер лицензирования 1С потребляет не много вычислительных ресурсов. Для небольшого кластера до пяти серверов будет достаточно двух ядер, 4 ГБ оперативной памяти и примерно 20 ГБ на диске для хранения лицензий.
Задача: собрать кластер 1С
Протестируем серверы лицензирования на примере облачной платформы Selectel. Соберем кластер из двух серверов и одной облачной базы данных, развернем необходимое ПО и настроим раздачу лицензий.
Подготовка кластера
1. Переходим в раздел Облачная платформа внутри панели управления Selectel.
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}"
./setup-full-${PLATFORM_VERSION}-${PLATFORM_ARCH}.run --mode unattended \
--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}"
./setup-full-${PLATFORM_VERSION}-${PLATFORM_ARCH}.run --mode unattended \
--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"
./1ce-installer-cli install all --ignore-signature-warnings
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.