Сервер 1С:Предприятия с нуля: ragent, rphost, СУБД и первая база в кластере

· 11 мин

Содержание

Чтобы установить кластер серверов 1С, на одну машину ставят компонент «Сервер 1С:Предприятия» из дистрибутива платформы и запускают его как службу. Служба поднимает агент ragent на порту 1540, менеджер кластера rmngr на 1541 и рабочие процессы rphost в диапазоне 1560–1591. Рядом ставят СУБД (MS SQL Server или PostgreSQL в сборке для 1С), открывают порты, а базу создают в консоли кластера или прямо из окна запуска 1С.

Типичная ситуация: файловая база на 15 человек начала тормозить, обмены идут по полчаса, а файл 1Cv8.1CD перевалил за десятки гигабайт. Переход в клиент-серверный вариант решает это, но только если кластер настроен правильно: порты, лимиты памяти рабочих процессов и имя сервера, которое находят клиенты.

Как устроен кластер серверов 1С и что подготовить заранее

Кластер — это группа процессов, которые обслуживают информационные базы. В минимальном варианте весь кластер живёт на одном компьютере. Разберитесь, за что отвечает каждый процесс: от этого зависят и порты, и настройки памяти.

ПроцессРольПорт по умолчанию
ragentагент сервера: принимает первое обращение клиента и консоли1540
rmngrменеджер кластера: сеансы, блокировки, распределение нагрузки1541
rphostрабочий процесс: выполняет код конфигурации и запросы к СУБД1560–1591
rasсервер администрирования для rac и сторонних консолей1545

Клиент обращается к агенту на 1540, затем к менеджеру кластера на 1541, а дальше работает с рабочими процессами в диапазоне портов, заданном в свойствах рабочего сервера. Консоль администрирования тоже идёт через агент.

Что подготовить до установки:

  • 🖥️ Сервер. Ориентировочно для 20–30 пользователей с СУБД на той же машине: 6–8 ядер, 32 ГБ памяти, SSD или NVMe под базы и логи. Для 50+ пользователей СУБД лучше вынести на отдельную машину.
  • 🔑 Лицензия на сервер. Серверная лицензия покупается отдельно от клиентских. Без неё пользователи при подключении получат ошибку получения лицензии сервера.
  • 🗄️ СУБД. MS SQL Server или PostgreSQL. Для PostgreSQL нужна сборка, адаптированная под 1С (от фирмы 1С или Postgres Pro): обычная «ванильная» не подойдёт, в ней нет нужных расширений.
  • 🌐 Имя сервера. Клиенты должны находить сервер по имени, а не только по IP. Пропишите его в DNS или в файле hosts на клиентах.
  • 📦 Дистрибутив. Платформа той же версии, что стоит у пользователей. Версия клиента и сервера должна совпадать до последней цифры.

На одной машине можно держать несколько версий сервера 1С одновременно. Главное — развести их по разным портам, об этом ниже.

Установка сервера 1С на Linux

На Linux сервер 1С ставят из единого установщика setup-full-8.3.xx.xxx-x86_64.run. Для Debian и Ubuntu, для РЕД ОС и Astra Linux порядок одинаковый, отличаются только команды пакетного менеджера.

Шаг 1. Подготовка системы

  1. Задайте имя хоста и проверьте, что оно разрешается в IP-адрес сервера, а не в 127.0.1.1. Это частая причина того, что клиенты с других машин не подключаются.
  2. Установите русскую локаль ru_RU.UTF-8. Без неё возможны ошибки сортировки и проблемы при создании базы.
  3. Поставьте шрифты Microsoft Core Fonts: они нужны для формирования печатных форм на сервере.
hostnamectl set-hostname srv1c
echo "192.168.1.10 srv1c" >> /etc/hosts
locale-gen ru_RU.UTF-8

Шаг 2. Запуск установщика

Скопируйте архив платформы на сервер, распакуйте и запустите установщик от root. Для сервера без графики удобен тихий режим:

chmod +x setup-full-8.3.xx.xxx-x86_64.run
./setup-full-8.3.xx.xxx-x86_64.run --mode unattended --enable-components server,server_admin

Компонент server — сам сервер 1С, server_admin — сервер администрирования ras и утилита rac. Платформа встаёт в /opt/1cv8/x86_64/<версия>/. Установщик создаёт пользователя usr1cv8, от его имени и работает служба.

Шаг 3. Регистрация службы в systemd

В современных версиях платформы в каталоге установки лежит шаблонный юнит systemd. Его подключают и запускают так (подставьте свою версию):

systemctl link /opt/1cv8/x86_64/8.3.xx.xxx/srv1cv8-8.3.xx.xxx@.service
systemctl enable srv1cv8-8.3.xx.xxx@
systemctl start srv1cv8-8.3.xx.xxx@default
systemctl status srv1cv8-8.3.xx.xxx@default

Рядом с ним лежит юнит для ras. Подключите его так же, если собираетесь управлять кластером через rac или консоль с Windows-машины.

Данные кластера по умолчанию хранятся в /home/usr1cv8/.1cv8/1C/1cv8/. Там каталог reg_1541 с реестром кластера и сеансовыми данными.

Если включён межсетевой экран (ufw, firewalld), откройте TCP 1540, 1541 и 1560–1591. Порт 1545 открывайте только для машин администраторов.

Установка и настройка сервера 1С на Windows Server

На Windows Server 2016 и новее запустите setup.exe из дистрибутива «Технологическая платформа 1С:Предприятия (64-bit) для Windows».

Компоненты и служба

  1. В списке компонентов отметьте «Сервер 1С:Предприятия 8» и «Администрирование сервера 1С:Предприятия». Клиент на сервер можно не ставить, но для первой проверки он удобен.
  2. Включите флажок установки сервера как сервиса Windows.
  3. Укажите пользователя, от имени которого будет работать служба. По умолчанию установщик создаёт локального USR1CV8. Если базы или файлы выгрузки лежат на сетевых ресурсах, лучше сразу использовать доменную учётную запись с нужными правами.
  4. Завершите установку и проверьте в services.msc, что служба «Агент сервера 1С:Предприятия 8.3» запущена.

Строка запуска службы выглядит так:

"C:\Program Files\1cv8\8.3.xx.xxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

Здесь видно всё, что пригодится при диагностике: порты, диапазон рабочих процессов и каталог srvinfo, где лежит реестр кластера.

Консоль администрирования

Консоль кластера — оснастка MMC. Ярлык на неё появляется в меню «Пуск» после установки компонента администрирования. Если консоль пишет, что класс не зарегистрирован, зарегистрируйте библиотеку той версии, что установлена на сервере:

regsvr32 "C:\Program Files\1cv8\8.3.xx.xxx\bin\radmin.dll"

После обновления платформы это действие повторяют: консоль должна совпадать по версии с сервером.

Порты в брандмауэре

netsh advfirewall firewall add rule name="1C Server" dir=in action=allow protocol=TCP localport=1540-1541,1560-1591

Две версии на одном сервере

Вторую версию ставят без регистрации службы, а службу создают вручную со сдвинутыми портами: -port 2540 -regport 2541 -range 2560:2591 и свой каталог -d. В строке подключения к базе такой сервер указывают с портом: srv1c:2541.

Регистрация кластера и создание информационной базы

При первом запуске агент сам создаёт кластер «Локальный кластер» на порту 1541. Отдельно регистрировать его не нужно, достаточно подключиться к серверу в консоли.

Подключение в консоли

  1. Откройте консоль администрирования серверов 1С.
  2. На узле «Central 1C:Enterprise 8.3 servers» через контекстное меню создайте новый центральный сервер.
  3. Укажите имя компьютера, протокол TCP и порт 1540.
  4. Раскройте сервер → «Кластеры» → «Локальный кластер».

Создание базы

Перед созданием базы заведите в СУБД пользователя с правом создавать базы данных. Для MS SQL это логин с ролью dbcreator или sysadmin, для PostgreSQL — роль с правом CREATEDB или суперпользователь postgres.

В консоли откройте «Информационные базы» → «Создать» → «Информационная база» и заполните:

ПолеЧто указать
Имякороткое имя базы в кластере, латиницей, например buh_main
Сервер баз данныхимя сервера СУБД (для MS SQL — с именем экземпляра, если он не по умолчанию)
Тип СУБДMSSQLServer или PostgreSQL
База данныхимя базы в СУБД, удобно такое же, как имя в кластере
Пользователь и парольучётная запись СУБД
Создать базу данных в случае её отсутствиявключить
Блокировка регламентных заданийвключить для копий, тестовых баз и баз в процессе переноса

То же можно сделать без консоли. В окне запуска 1С нажмите «Добавить» → «Создание новой информационной базы», на шаге выбора расположения укажите «На сервере 1С:Предприятия» и заполните те же поля.

На Linux базу удобно создавать из командной строки через ras и rac:

rac cluster list
rac infobase --cluster=<uuid> create --create-database --name=buh_main \
  --dbms=PostgreSQL --db-server=localhost --db-name=buh_main \
  --locale=ru --db-user=postgres --db-pwd=<пароль>

UUID кластера берут из вывода rac cluster list. Если какой-то параметр не принимается, сверьтесь со справкой rac help infobase: набор ключей зависит от версии платформы.

Перенос рабочей базы: выгрузите её в .dt в Конфигураторе файловой базы (Администрирование → Выгрузить информационную базу), создайте пустую базу на сервере и загрузите туда файл. На время загрузки нужен монопольный доступ к новой базе.

Рабочие процессы rphost и лимиты памяти

Большинство жалоб на «кластер падает» и «всё виснет к обеду» связано с памятью рабочих процессов. Настройки лежат в двух местах, и их легко перепутать.

Свойства рабочего сервера

Откройте «Локальный кластер» → «Рабочие серверы» → свойства сервера. Ключевые параметры:

  • ⚙️ Количество ИБ на процесс и Количество соединений на процесс. Определяют, когда кластер поднимет новый rphost. Значение 0 — без ограничений. Для 2–3 тяжёлых баз удобно ставить 1 ИБ на процесс, чтобы одна база не влияла на другую.
  • 📈 Временно допустимый объём памяти процессов. Порог суммарной памяти всех rphost. При превышении дольше заданного интервала кластер помечает процессы на перезапуск: новые соединения уходят в свежий процесс, старый завершается, когда его покинут сеансы.
  • 🛑 Критический объём памяти процессов. Аварийный порог: при его достижении кластер прерывает самые «прожорливые» вызовы, а не ждёт.
  • 🧮 Безопасный расход памяти за один вызов. Ограничивает отдельную операцию: тяжёлый отчёт с ошибкой в запросе прервётся сам, а не съест память всего сервера.
  • 🔌 Диапазон IP-портов. По умолчанию 1560:1591, его же открывают в брандмауэре.

Пример расчёта для сервера с 64 ГБ памяти, где на той же машине работает MS SQL. Под СУБД ограничиваем 32 ГБ параметром max server memory, 4 ГБ оставляем системе. Временно допустимый объём для 1С — около 24 ГБ, критический — около 28 ГБ. Итого 32 + 4 + 28 = 64 ГБ: даже на аварийном пороге память не уходит в своп.

Свойства кластера

В свойствах самого кластера задаются:

  • Интервал перезапуска — плановый перезапуск рабочих процессов, например раз в сутки (86400 секунд). Помогает от медленных утечек памяти.
  • Режим распределения нагрузки — приоритет по производительности или по памяти. Для одного сервера разница мала.
  • Уровень отказоустойчивости — сколько серверов могут выйти из строя без остановки работы. Имеет смысл только при двух и более серверах.

Изменение параметров рабочих процессов и интервала перезапуска применяйте вне рабочего времени. При перезапуске rphost сеансы пользователей обрываются, а незаписанные данные теряются.

Второй сервер в кластере и балансировка нагрузки

Когда одного сервера мало, к кластеру добавляют второй рабочий сервер. На него ставят ту же версию платформы и запускают службу.

  1. В консоли на «Рабочих серверах» кластера создайте новый сервер с именем второй машины и портом 1540.
  2. Отметьте у него флаг центрального сервера, если он должен подстраховывать первый при отказе.
  3. Задайте уровень отказоустойчивости кластера равным 1.

Распределять функции по серверам помогают требования назначения функциональности в свойствах рабочего сервера. Например, регламентные задания и фоновые обмены можно закрепить за вторым сервером, чтобы пользователи на первом не ловили тормоза во время ночных выгрузок.

Балансировка не ускорит медленную СУБД. Если узкое место — диск или запросы к базе, второй сервер 1С не поможет: сначала смотрите на загрузку СУБД.

Диагностика и мониторинг кластера серверов 1С

Первое, что проверяют при любой проблеме: служба запущена, порты слушаются, имя сервера разрешается с клиента.

netstat -ano | findstr 154
ping srv1c

На Linux вместо netstat используйте ss -tlnp | grep 154 и systemctl status.

Диагностика: выберите симптом

Что смотреть в консоли

  • 👥 Сеансы — кто подключён, сколько вызовов и памяти расходует каждый сеанс. Здесь видно, кто «повесил» сервер.
  • 🔒 Блокировки — какие объекты заблокированы и каким сеансом.
  • ⚙️ Рабочие процессы — память, число соединений, средняя длительность вызова. Растущая память одного rphost без падения — признак утечки или тяжёлой операции.

Для массовой проверки удобен rac: rac session list --cluster=<uuid> выводит сеансы, а с ключом --licenses — выданные им лицензии.

Технологический журнал

Для разбора падений и медленных операций включают технологический журнал. Его настраивают файлом logcfg.xml в каталоге conf платформы: на Windows — C:\Program Files\1cv8\conf\, на Linux — /opt/1cv8/conf/. В нём указывают папку для логов, события (например, EXCP для исключений) и срок хранения.

Не включайте сбор всех событий без фильтра на рабочем сервере: журнал за час займёт десятки гигабайт и сам станет причиной тормозов.

Очистка сеансовых данных

Если после аварии кластер ведёт себя странно, остановите службу, удалите в каталоге reg_1541 папки snccntx* и запустите службу снова. Делайте это только в нерабочее время: остановка службы обрывает все сеансы. Файлы реестра кластера 1CV8Clst.lst и 1CV8Reg.lst не трогайте: в них список баз и настроек кластера.

Частые вопросы

Можно ли поставить сервер 1С и СУБД на одну машину?
Да, для 10–40 пользователей это обычная схема. Обязательно ограничьте память СУБД, иначе она займёт всю оперативку и вытеснит рабочие процессы 1С.
Нужна ли отдельная лицензия на сервер 1С?
Да. Серверная лицензия покупается отдельно от клиентских и активируется на компьютере, где работает служба сервера. Клиентские лицензии нужны дополнительно.
Что выбрать: MS SQL или PostgreSQL?
MS SQL проще в администрировании на Windows. PostgreSQL бесплатен и хорошо работает на Linux, но нужна сборка для 1С и настройка параметров под нагрузку.
Как обновить платформу на сервере кластера?
Поставьте новую версию, остановите старую службу и запустите службу новой версии с тем же каталогом данных. Затем обновите платформу у пользователей и перерегистрируйте radmin.dll для консоли.
Почему консоль видит сервер, а пользователи нет?
Консоль часто запускают прямо на сервере. У клиентов закрыты порты рабочих процессов 1560–1591 или имя сервера разрешается в другой адрес.