Свой кластер 1С с нуля: от выбора железа до регламентного обслуживания

· 10 мин

Содержание

Сервер 1С:Предприятия 8.3 настраивают в пять этапов: ставят компонент «Сервер 1С:Предприятия» той же версии, что у клиентов, запускают службу агента на портах 1540, 1541 и диапазоне 1560:1591, поднимают СУБД (PostgreSQL или MS SQL), создают базу в кластере через консоль администрирования и задают лимиты памяти рабочих процессов. Потом остаётся настроить администраторов кластера и регулярные копии на уровне СУБД.

Файловая база начинает тормозить уже на 10–15 одновременных пользователях, а сервер с неправильными настройками — на 30. Ниже порядок, при котором клиент-серверная 1С работает ровно и не падает в конце месяца, когда все закрывают период.

Готовим машину: железо, операционная система, учётная запись

Начните с оценки нагрузки. Точных формул нет, но для типовых конфигураций (БП, ЗУП, УТ) работают такие ориентиры:

ПользователейПроцессорПамятьДиски
до 204 ядра с высокой частотой16 ГБSSD, база и журнал СУБД можно на одном
20–608 ядер32–48 ГБNVMe под данные, отдельный SSD под журнал транзакций
60–15012–16 ядер64–128 ГБРаздельные массивы под данные, журнал, tempdb

💡 Для 1С частота ядра важнее их количества. Код одного серверного вызова выполняется в одном потоке, поэтому 8 ядер по 3,8 ГГц дадут больше, чем 16 ядер по 2,2 ГГц.

Операционная система. Подходит Windows Server 2016 и новее либо Linux (Ubuntu, Debian, RHEL-совместимые, Astra, РЕД ОС). На Linux сервер 1С и PostgreSQL обходятся без лицензий Microsoft, на Windows проще администрирование и выбор MS SQL.

Что сделать до установки:

  • 🖥 Задать серверу постоянный IP-адрес и понятное имя. Клиенты подключаются по имени, поэтому оно должно резолвиться с каждого рабочего места (DNS или запись в hosts).
  • ⏱ Включить в BIOS и в схеме электропитания ОС режим максимальной производительности. Режим энергосбережения снижает частоту и заметно замедляет проведение документов.
  • 💾 Выделить под данные кластера отдельный диск или каталог, например D:\srvinfo. По умолчанию каталог лежит в профиле службы на системном диске.
  • 👤 Завести учётную запись службы (обычно USR1CV8) без прав администратора. Ей нужны право «Вход в качестве службы», членство в группе «Пользователи системного монитора» и полный доступ к каталогу srvinfo.

Ставим сервер 1С Предприятия и запускаем службу агента

Дистрибутив «Технологическая платформа 1С:Предприятия (64-bit) для Windows» или для Linux берут на портале обновлений по договору ИТС. Версия сервера и клиентов должна совпадать до последней цифры: клиент 8.3.24.1586 не подключится к серверу 8.3.24.1548.

Установка на Windows

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

Если служба не создалась или её нужно пересоздать с другими параметрами, регистрируют вручную из каталога bin нужной версии:

cd "C:\Program Files\1cv8\8.3.24.1586\bin"
ragent.exe -instsrvc -usr .\USR1CV8 -pwd Пароль -regport 1541 -port 1540 -range 1560:1591 -d "D:\srvinfo"
ragent.exe -start

Ключ -d переносит данные кластера на выбранный диск. Это решение лучше принять сразу, а не переносить каталог на работающем сервере.

Установка на Linux

С версии 8.3.20 дистрибутив для Linux — один установщик setup-full-*.run. Запустите его от root в пакетном режиме или с графическим мастером, выберите сервер и компоненты администрирования. Затем подключите юнит systemd, который лежит в каталоге платформы:

systemctl link /opt/1cv8/x86_64/8.3.24.1586/srv1cv8-8.3.24.1586@.service
systemctl enable --now srv1cv8-8.3.24.1586@default
systemctl status srv1cv8-8.3.24.1586@default

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

Кластер, порты и консоль администрирования

При первом старте агент сам создаёт кластер «Локальный кластер» на порту 1541. Схема обмена такая:

ПортКто слушаетЗачем
1540Агент сервера (ragent)Первичное обращение клиента и консоли
1541Менеджер кластера (rmngr)Распределение соединений по рабочим процессам
1560–1591Рабочие процессы (rphost)Основной обмен данными с клиентами
1545Сервер администрирования (ras)Утилита rac и сторонние консоли

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

Если на одном сервере работают две версии платформы, второй агент запускают на других портах, например 2540, 2541 и 2560:2591. В строке подключения клиента тогда указывают сервер вместе с портом: srv1c:2541.

Консоль администрирования. На Windows это оснастка «Администрирование серверов 1С Предприятия». Если при открытии она выдаёт ошибку загрузки компонента, перерегистрируйте библиотеку той версии, что установлена на сервере:

regsvr32 "C:\Program Files\1cv8\8.3.24.1586\bin\radmin.dll"

На Linux удобнее работать через сервер администрирования ras и утилиту rac. На Windows ras тоже можно поставить службой:

sc create "1C:Enterprise 8.3 Remote Server" binPath= "\"C:\Program Files\1cv8\8.3.24.1586\bin\ras.exe\" cluster --service --port=1545 localhost:1540" start= auto

Проверочная команда — rac cluster list: она выводит идентификатор кластера, нужный для остальных команд. Полный список параметров показывает rac help.

Подключаем СУБД: PostgreSQL или MS SQL

Сервер 1С сам данные не хранит, он работает поверх СУБД. Выбор обычно сводится к двум вариантам:

КритерийPostgreSQLMS SQL Server
ЛицензииБесплатно (сборки для 1С)Платные лицензии Microsoft
ОСLinux и WindowsWindows (есть версия для Linux)
НастройкаНужно править postgresql.confБольшая часть — мастером и в SSMS
Поддержка 1СТолько сборки с патчами для 1СШтатная

PostgreSQL

Ставьте сборку с патчами для 1С (от фирмы 1С или Postgres Pro для 1С), а не PostgreSQL из стандартного репозитория. Кластер базы инициализируйте с русской локалью: initdb --locale=ru_RU.UTF-8.

Стартовые значения в postgresql.conf для сервера с 32 ГБ памяти, где СУБД и 1С живут вместе:

shared_buffers = 8GB
effective_cache_size = 20GB
work_mem = 64MB
maintenance_work_mem = 1GB
max_connections = 300
max_locks_per_transaction = 256

max_locks_per_transaction поднимают потому, что 1С создаёт много временных таблиц, и при значении по умолчанию длинные отчёты падают на нехватке блокировок.

MS SQL Server

  1. В свойствах сервера ограничьте «Максимальный объём памяти сервера». Если СУБД и 1С на одной машине с 32 ГБ, оставьте СУБД 16–18 ГБ, иначе SQL займёт всю память и рабочие процессы 1С начнут уходить в подкачку.
  2. Установите max degree of parallelism = 1: так рекомендует 1С, параллельные планы на её запросах чаще мешают.
  3. Вынесите tempdb на быстрый диск и разбейте на 4–8 файлов одинакового размера.
  4. Создайте для 1С отдельный SQL-логин с ролью dbcreator, чтобы не давать кластеру права sa.

Создаём информационную базу в кластере

Базу создают двумя путями: из консоли администрирования или прямо из окна запуска 1С. В консоли:

  1. Раскройте «Локальный кластер», правой кнопкой по ветке «Информационные базы» выберите Создать → Информационная база.
  2. Заполните имя базы в кластере (латиница без пробелов, например buh_main), тип СУБД, адрес сервера СУБД, имя базы данных, логин и пароль.
  3. Смещение дат поставьте 2000 для MS SQL. Для PostgreSQL оставьте 0.
  4. Отметьте «Создать базу данных в случае её отсутствия».
  5. Для копии рабочей базы включите «Установить блокировку регламентных заданий», иначе копия начнёт отправлять отчётность, загружать банк и обмениваться с ЭДО от имени организации.

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

💡 Не забудьте лицензию. Для клиент-серверного режима нужна лицензия на сервер 1С (программная активируется прямо на сервере) плюс клиентские лицензии по числу одновременных пользователей. Без серверной лицензии кластер не обслуживает клиентов.

Настраиваем производительность рабочих процессов

Основные лимиты задают в свойствах рабочего сервера: в консоли раскройте Локальный кластер → Рабочие серверы, откройте свойства сервера.

ПараметрЧто делаетОриентир
Количество ИБ на процессСколько баз обслуживает один rphost1, если баз немного: одна тяжёлая база не тормозит соседей
Количество соединений на процессПорог для запуска нового рабочего процесса25–50
Максимальный объём памяти рабочих процессовОбщий потолок памяти всех rphost60–70% памяти, свободной от СУБД
Безопасный расход памяти за один вызовЛимит на один серверный вызов2–5 ГБ, чтобы кривой отчёт не съел сервер

В свойствах самого кластера есть автоматический перезапуск рабочих процессов: «Интервал перезапуска», «Допустимый объём памяти» и «Интервал превышения допустимого объёма памяти». Перезапуск идёт мягко, новые соединения переходят в свежий процесс, но длинные операции на старом процессе могут оборваться. Интервал в 86400 секунд (раз в сутки) обычно приходится на ночь и не мешает.

Признаки, что лимиты подобраны неудачно:

  • 🐢 Один rphost держит 90% памяти, остальные простаивают — уменьшите число соединений на процесс.
  • 💥 Пользователи жалуются на внезапные обрывы сеанса — проверьте «Безопасный расход», возможно, его превышает тяжёлый отчёт.
  • 📈 Память рабочих процессов растёт неделями — включите перезапуск по допустимому объёму.

Ограничиваем доступ: администраторы, права, профили безопасности

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

  1. Администратор агента. В консоли раскройте сервер, ветку «Администраторы», создайте пользователя с паролем. Затем то же сделайте в ветке «Администраторы» внутри кластера. Без этих учёток посторонний может удалить базу из кластера.
  2. Пароль к базе в кластере. При создании базы с учёткой SQL пароль СУБД хранится в настройках кластера, поэтому доступ к консоли равен доступу к данным.
  3. Пользователи 1С. В каждой базе заведите пользователей и роли, отключите вход без пароля. Ограничение доступа на уровне записей (RLS) включают внутри конфигурации: в БП 3.0 это Администрирование → Настройки пользователей и прав → Группы доступа с флажком ограничения по организациям. На сервере RLS не настраивается.
  4. Профили безопасности. В кластере есть ветка «Профили безопасности»: профиль запрещает внешним обработкам и расширениям доступ к файловой системе, COM-объектам и внешним сайтам. Назначьте его базе, если пользователи запускают сторонние обработки.

Отладку на сервере (ключ -debug в параметрах службы) включайте только на тестовом кластере. На рабочем она замедляет вызовы и открывает лишний порт.

Учётная запись службы должна иметь доступ только к своему каталогу и сетевым ресурсам для копий. Права администратора ОС ей не нужны.

Регламентное обслуживание и резервное копирование

Резервную копию клиент-серверной базы делают средствами СУБД, а не выгрузкой .dt. Выгрузка требует монопольного режима и на большой базе идёт часами. СУБД умеет копировать без остановки работы.

ЗадачаMS SQLPostgreSQLКак часто
Полная копияПлан обслуживания, BACKUP DATABASEpg_dump -FcКаждую ночь
Копия журналаМодель восстановления «Полная», бэкап журналаАрхивирование WALКаждые 15–60 минут
СтатистикаОбновление статистикautovacuum + ночной VACUUM ANALYZEЕжедневно
ИндексыРеорганизация или перестроениеREINDEX по необходимостиРаз в неделю

Пример ночной копии базы PostgreSQL:

pg_dump -U postgres -Fc -f /backup/buh_main_$(date +%F).dump buh_main
find /backup -name 'buh_main_*.dump' -mtime +14 -delete

Копию, которую ни разу не разворачивали, нельзя считать копией. Раз в месяц восстанавливайте её в отдельную базу на тестовом кластере и открывайте в 1С.

Очистка сеансовых данных. Если кластер ведёт себя странно после сбоя питания (зависшие сеансы, ошибки при входе), помогает очистка кэша сервера: остановка службы агента, удаление файлов snccntx* из каталога srvinfo\reg_1541, запуск службы. Остановка службы обрывает работу всех пользователей во всех базах кластера, поэтому делайте это вне рабочего времени и после предупреждения. Файл 1CV8Clst.lst в том же каталоге не трогайте: в нём список баз и настройки кластера, держите его копию.

Технологический журнал. Для расследования медленных операций включают файл logcfg.xml в каталоге conf платформы. Он пишет события вызовов, блокировок и исключений. Включайте его на время диагностики с фильтром по длительности и выключайте: без фильтров журнал быстро забивает диск.

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

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

Можно ли поставить сервер 1С и СУБД на одну машину?
Да, до 50–60 пользователей это нормальная схема. Главное — ограничить память СУБД, чтобы её хватало рабочим процессам 1С.
Нужен ли отдельный сервер для каждой базы?
Нет. Один кластер обслуживает десятки баз. Отдельный рабочий процесс на тяжёлую базу задаётся параметром «Количество ИБ на процесс».
Как обновить платформу на сервере без простоя?
Простоя не избежать полностью. Ставят новую версию рядом, вечером останавливают службу старой и запускают службу новой на тех же портах, затем обновляют клиентов.
Работает ли сервер 1С на виртуальной машине?
Работает. Закрепите за ВМ ресурсы без переподписки процессора и диск на SSD, иначе соседние машины будут отнимать производительность в пиковые часы.
Чем кластер отличается от рабочего сервера?
Кластер — логическая группа баз и настроек. Рабочий сервер — физическая машина с процессами rphost. В один кластер можно добавить несколько рабочих серверов для распределения нагрузки.