Сервер 1С:Предприятия и кластер: состав, порты, консоль, rac и веб-сервер
Клиент-серверная 1С держится на нескольких процессах: агенте сервера, менеджере кластера и рабочих процессах. Знание их ролей и портов нужно, когда вы открываете доступ через брандмауэр, ищете «зависший» сеанс или публикуете базу на веб-сервере. В статье — состав кластера, установка сервера на Windows и Linux, работа в консоли администрирования и из командной строки через ras и rac, очистка кэша сервера и публикация через webinst.
Из чего состоит сервер 1С
Сервер 1С:Предприятия — это не один процесс, а группа, которая в совокупности называется кластером серверов:
- ragent — агент сервера. Главный процесс-служба на каждом рабочем сервере. Запускает остальные, принимает запросы на подключение.
- rmngr — менеджер кластера. Хранит настройки кластера, распределяет клиентов по рабочим процессам, управляет блокировками и лицензиями. На главном сервере кластера он один.
- rphost — рабочий процесс. Выполняет серверный код, запросы, фоновые задания и обращается к СУБД. Их может быть несколько на сервере; при нехватке памяти платформа перезапускает процессы по настройкам кластера.
Клиент сначала обращается к агенту, затем получает адрес рабочего процесса и дальше общается с ним напрямую. Поэтому в сетях с брандмауэром открывать надо не только порт агента. Порты по умолчанию сведены в таблицу.
| Компонент | Порт по умолчанию | Назначение |
|---|---|---|
| ragent | 1540 | Подключение клиентов и консоли к агенту |
| rmngr | 1541 | Главный менеджер кластера |
| rphost | 1560–1591 | Диапазон для рабочих процессов |
| ras | 1545 | Сервер администрирования для утилиты rac |
Значения можно изменить параметрами запуска агента; в настройках кластера допускается задавать диапазоны портов под несколько рабочих серверов. Если базу и клиентов связывает только веб-доступ, порты 1540–1591 наружу открывать не нужно, достаточно порта веб-сервера.
Установка сервера на Windows
При установке платформы отметьте компонент «Сервер 1С:Предприятия» (и «Администрирование серверов 1С:Предприятия», если консоль нужна на этой же машине). Установщик предлагает создать службу «Агент сервера 1С:Предприятия 8.3» и пользователя, от имени которого она работает; обычно это USR1CV8. Этому пользователю нужны права на запись в каталог данных кластера (по умолчанию srvinfo внутри каталога установки) — лучше вынести его на отдельный диск.
Служба запускает агент примерно такой командой. Ключи показывают, где лежит каталог кластера и какие порты используются:
"C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\srvinfo"
Ключ -d задаёт каталог данных кластера, -port — порт агента, -regport — порт главного менеджера, -range — диапазон для рабочих процессов. Ключ -debug включает режим отладки сервера. Перед изменением параметров остановите службу.
Установка сервера на Linux
Для Linux платформа поставляется в виде пакетов (deb и rpm) или архива. Обычно ставятся общий пакет платформы и пакет сервера, а в составе имён присутствует номер релиза; на русскоязычных системах нужна установленная локаль. После установки появляются каталог с файлами платформы в /opt/1cv8 и пользователь, от имени которого рекомендуется запускать сервер. Службу можно оформить в виде юнита systemd, запускающего ragent с теми же ключами, что и в Windows. Ниже — шаблон, который нужно адаптировать под свой релиз и пути.
[Unit] Description=1C:Enterprise Server After=network.target [Service] User=usr1cv8 Group=grp1cv8 Environment=LANG=ru_RU.UTF-8 ExecStart=/opt/1cv8/x86_64/8.3.24.1548/ragent -d /var/1c/srvinfo -port 1540 -regport 1541 -range 1560:1591 Restart=on-failure [Install] WantedBy=multi-user.target
Каталог кластера (/var/1c/srvinfo в примере) должен существовать и принадлежать пользователю, под которым работает служба. Для администрирования на Linux используется утилита rac — оснастки MMC там нет. Поддерживаемые версии дистрибутивов указаны в документации платформы.
Консоль администрирования серверов 1С
На Windows кластер администрируют через оснастку MMC «Администрирование серверов 1С:Предприятия». Добавьте центральный сервер, указав его адрес и порт агента (например, srv01:1540), и раскройте дерево. Основные разделы кластера:
- Информационные базы — создание и свойства баз, включение блокировки начала сеансов и регламентных заданий, сообщение пользователям и код разрешения для входа.
- Рабочие серверы и рабочие процессы — состояние, потребление памяти, число соединений.
- Сеансы и соединения — кто работает, с какого компьютера и каким приложением; здесь же сеанс завершают командой «Удалить».
- Блокировки — текущие управляемые блокировки; полезно при разборе «зависаний».
- Администраторы кластера — учётные записи, под которыми разрешено управление.
Если у пользователя висит сеанс после аварии, его нужно найти по имени пользователя и времени последней активности и удалить. Перед работами с базой включите блокировку начала сеансов: новые подключения не пройдут, а существующие можно спокойно завершить.
Командная строка: ras и rac
Консоль MMC удобна, но не подходит для скриптов и Linux. Для этого есть пара утилит: сервер администрирования ras и клиент rac. Сначала запустите ras, указав адрес агента:
ras cluster --port=1545 localhost:1540
Затем из другой консоли обращайтесь к нему утилитой rac. Первая команда выводит кластеры и их идентификаторы, остальные принимают идентификатор как параметр:
rac localhost:1545 cluster list rac localhost:1545 infobase summary list --cluster=<идентификатор_кластера> rac localhost:1545 session list --cluster=<идентификатор_кластера> --infobase=<идентификатор_базы> rac localhost:1545 session terminate --cluster=<идентификатор_кластера> --session=<идентификатор_сеанса>
Если для кластера заданы администраторы, добавьте параметры авторизации: --cluster-user и --cluster-pwd. Вывод команд — набор строк «поле : значение», который легко разобрать скриптом. Так, одной командой можно получить сеансы нужной базы, а второй — завершить зависшие. Полный список режимов и команд показывает rac help, а справку по режиму — rac session help.
Кэш сервера 1С и каталог srvinfo
Каталог данных кластера (srvinfo) содержит реестр кластера в подкаталоге вида reg_1541 (число совпадает с портом главного менеджера) и каталоги информационных баз: журнал регистрации, индексы полнотекстового поиска. Кроме того, там создаются каталоги сеансовых данных с именами, начинающимися на snccntx. Это временные данные сеансов и кэш, которые платформа может создать заново.
Иногда после аварийного завершения сервера или длительных зависаний администратор очищает сеансовые данные. Порядок:
- Предупредите пользователей, включите блокировку начала сеансов и завершите сеансы.
- Остановите службу «Агент сервера 1С:Предприятия» и убедитесь, что процессы
ragent,rmngrиrphostзавершились. - Переименуйте или удалите каталоги
snccntx*внутри каталога кластера (на практике лучше сначала переименовать). - Запустите службу и проверьте подключение.
Не удаляйте служебные файлы реестра кластера и каталоги баз — в них хранятся настройки кластера и журналы. Эта операция — разовая административная мера, а не регулярная гигиена. Если ошибка проявляется только у одного пользователя, сначала очистите клиентский кэш, как описано в статье про ошибку формата потока. Для управления потреблением памяти используйте настройки кластера: допустимый объём памяти рабочих процессов и интервал их перезапуска.
Веб-сервер для 1С
Веб-клиент, тонкий клиент по HTTP, HTTP-сервисы и веб-сервисы работают через опубликованную базу. Публикация — это каталог на веб-сервере с файлом default.vrd (дескриптор публикации) и подключённым расширением платформы для вашего сервера: Apache или IIS. Опубликовать базу можно из Конфигуратора («Администрирование → Публикация на веб-сервере») или утилитой webinst из каталога bin:
webinst.exe -publish -apache24 -wsdir trade -dir "C:\inetpub\wwwroot\trade" -connstr "Srvr=srv01;Ref=trade;" -confpath "C:\Apache24\conf\httpd.conf" webinst.exe -publish -iis -wsdir trade -dir "C:\inetpub\wwwroot\trade" -connstr "Srvr=srv01;Ref=trade;"
Запускайте утилиту от имени администратора. Для Apache в конфигурации появляется подключение модуля платформы и блок для каталога публикации; он выглядит примерно так:
Alias "/trade" "C:/inetpub/wwwroot/trade/"
<Directory "C:/inetpub/wwwroot/trade/">
AllowOverride None
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/inetpub/wwwroot/trade/default.vrd"
</Directory>
Для IIS потребуются установленные компоненты веб-сервера (в том числе CGI/ISAPI, в зависимости от режима) и права на каталог публикации у пула приложений. Разрядность расширения должна соответствовать разрядности веб-сервера и платформы. После публикации база открывается по адресу вида http://сервер/trade; при внешнем доступе включайте HTTPS. Вызов опубликованных сервисов из внешней системы показан в статье про HTTP-запросы к REST API.
Типичные ошибки
- Открыть наружу только порт 1540 и удивляться, почему клиент не подключается: нужны порты менеджера кластера и рабочих процессов.
- Запускать службу от пользователя без прав на каталог кластера.
- Клиенты другой версии, чем сервер, и попытки подключиться «как-нибудь».
- Удалять каталоги реестра кластера вместо сеансовых данных.
- Публиковать базу по HTTP без шифрования в интернете.
- Не включать блокировку начала сеансов перед обслуживанием.
Актуальность для новых версий
Архитектура сервера (агент, менеджер кластера, рабочие процессы) и порты по умолчанию неизменны на протяжении всей ветки 8.3. Утилиты ras и rac входят в дистрибутив сервера и работают на Windows и Linux, а оснастка консоли администрирования есть только в Windows. Состав и имена пакетов для Linux, а также ключи запуска зависят от релиза, поэтому сверяйтесь с документацией «Руководство администратора» для своей версии. Веб-расширения подключаются модулем, соответствующим вашему веб-серверу и разрядности.
Частые вопросы
Какие порты использует сервер 1С по умолчанию?
Агент сервера слушает порт 1540, менеджер главного кластера — 1541, рабочие процессы получают порты из диапазона 1560–1591. Сервер RAS по умолчанию использует порт 1545. Клиенты подключаются и к рабочим процессам, поэтому открывать нужно весь диапазон.
Как завершить зависший сеанс пользователя?
В консоли администрирования откройте кластер, раздел «Сеансы», выберите сеанс и удалите его. Из командной строки то же делает rac session terminate с указанием идентификаторов кластера и сеанса.
Можно ли удалить каталог snccntx на сервере?
Только как плановую меру администратора: остановите службу сервера, убедитесь, что рабочих процессов нет, и очистите сеансовые данные. Не удаляйте служебные файлы реестра кластера, иначе потеряете настройки кластера.
Как установить сервер 1С на Linux?
Установите пакеты платформы для вашего дистрибутива (общие файлы и сервер), создайте службу, запускающую ragent под отдельным пользователем, и откройте порты 1540, 1541 и диапазон рабочих процессов. Названия пакетов зависят от релиза.