Свой кластер 1С с нуля: от выбора железа до регламентного обслуживания
Содержание
Сервер 1С:Предприятия 8.3 настраивают в пять этапов: ставят компонент «Сервер 1С:Предприятия» той же версии, что у клиентов, запускают службу агента на портах 1540, 1541 и диапазоне 1560:1591, поднимают СУБД (PostgreSQL или MS SQL), создают базу в кластере через консоль администрирования и задают лимиты памяти рабочих процессов. Потом остаётся настроить администраторов кластера и регулярные копии на уровне СУБД.
Файловая база начинает тормозить уже на 10–15 одновременных пользователях, а сервер с неправильными настройками — на 30. Ниже порядок, при котором клиент-серверная 1С работает ровно и не падает в конце месяца, когда все закрывают период.
Готовим машину: железо, операционная система, учётная запись
Начните с оценки нагрузки. Точных формул нет, но для типовых конфигураций (БП, ЗУП, УТ) работают такие ориентиры:
| Пользователей | Процессор | Память | Диски |
|---|---|---|---|
| до 20 | 4 ядра с высокой частотой | 16 ГБ | SSD, база и журнал СУБД можно на одном |
| 20–60 | 8 ядер | 32–48 ГБ | NVMe под данные, отдельный SSD под журнал транзакций |
| 60–150 | 12–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
- Запустите
setup.exeи в списке компонентов отметьте «Сервер 1С:Предприятия 8», «Администрирование сервера 1С:Предприятия» и «Модули расширения веб-сервера», если планируете публикацию. - Включите флажок «Установить 1С:Предприятие 8 как сервис Windows
» и укажите учётную запись
USR1CV8с паролем. - На вопрос об установке драйвера защиты HASP ответьте «да», только если используете аппаратные ключи. Для программной лицензии он не нужен.
- После установки проверьте в
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С сам данные не хранит, он работает поверх СУБД. Выбор обычно сводится к двум вариантам:
| Критерий | PostgreSQL | MS SQL Server |
|---|---|---|
| Лицензии | Бесплатно (сборки для 1С) | Платные лицензии Microsoft |
| ОС | Linux и Windows | Windows (есть версия для 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С на одной машине с 32 ГБ, оставьте СУБД 16–18 ГБ, иначе SQL займёт всю память и рабочие процессы 1С начнут уходить в подкачку.
- Установите
max degree of parallelism = 1: так рекомендует 1С, параллельные планы на её запросах чаще мешают. - Вынесите
tempdbна быстрый диск и разбейте на 4–8 файлов одинакового размера. - Создайте для 1С отдельный SQL-логин с ролью
dbcreator, чтобы не давать кластеру праваsa.
Создаём информационную базу в кластере
Базу создают двумя путями: из консоли администрирования или прямо из окна запуска 1С. В консоли:
- Раскройте «Локальный кластер», правой кнопкой по ветке «Информационные базы» выберите
Создать → Информационная база. - Заполните имя базы в кластере (латиница без пробелов, например
buh_main), тип СУБД, адрес сервера СУБД, имя базы данных, логин и пароль. - Смещение дат поставьте
2000для MS SQL. Для PostgreSQL оставьте0. - Отметьте «Создать базу данных в случае её отсутствия».
- Для копии рабочей базы включите «Установить блокировку регламентных заданий», иначе копия начнёт отправлять отчётность, загружать банк и обмениваться с ЭДО от имени организации.
Из окна запуска то же самое: Добавить → Создание новой информационной базы → На сервере 1С:Предприятия, дальше те же поля. Пустую базу затем наполняют загрузкой выгрузки .dt в конфигураторе.
💡 Не забудьте лицензию. Для клиент-серверного режима нужна лицензия на сервер 1С (программная активируется прямо на сервере) плюс клиентские лицензии по числу одновременных пользователей. Без серверной лицензии кластер не обслуживает клиентов.
Настраиваем производительность рабочих процессов
Основные лимиты задают в свойствах рабочего сервера: в консоли раскройте Локальный кластер → Рабочие серверы, откройте свойства сервера.
| Параметр | Что делает | Ориентир |
|---|---|---|
| Количество ИБ на процесс | Сколько баз обслуживает один rphost | 1, если баз немного: одна тяжёлая база не тормозит соседей |
| Количество соединений на процесс | Порог для запуска нового рабочего процесса | 25–50 |
| Максимальный объём памяти рабочих процессов | Общий потолок памяти всех rphost | 60–70% памяти, свободной от СУБД |
| Безопасный расход памяти за один вызов | Лимит на один серверный вызов | 2–5 ГБ, чтобы кривой отчёт не съел сервер |
В свойствах самого кластера есть автоматический перезапуск рабочих процессов: «Интервал перезапуска», «Допустимый объём памяти» и «Интервал превышения допустимого объёма памяти». Перезапуск идёт мягко, новые соединения переходят в свежий процесс, но длинные операции на старом процессе могут оборваться. Интервал в 86400 секунд (раз в сутки) обычно приходится на ночь и не мешает.
Признаки, что лимиты подобраны неудачно:
- 🐢 Один rphost держит 90% памяти, остальные простаивают — уменьшите число соединений на процесс.
- 💥 Пользователи жалуются на внезапные обрывы сеанса — проверьте «Безопасный расход», возможно, его превышает тяжёлый отчёт.
- 📈 Память рабочих процессов растёт неделями — включите перезапуск по допустимому объёму.
Ограничиваем доступ: администраторы, права, профили безопасности
Свежий кластер открыт любому, кто достучится до порта 1540. Порядок закрытия такой:
- Администратор агента. В консоли раскройте сервер, ветку «Администраторы», создайте пользователя с паролем. Затем то же сделайте в ветке «Администраторы» внутри кластера. Без этих учёток посторонний может удалить базу из кластера.
- Пароль к базе в кластере. При создании базы с учёткой SQL пароль СУБД хранится в настройках кластера, поэтому доступ к консоли равен доступу к данным.
- Пользователи 1С. В каждой базе заведите пользователей и роли, отключите вход без пароля. Ограничение доступа на уровне записей (RLS) включают внутри конфигурации: в БП 3.0 это
Администрирование → Настройки пользователей и прав → Группы доступас флажком ограничения по организациям. На сервере RLS не настраивается. - Профили безопасности. В кластере есть ветка «Профили безопасности»: профиль запрещает внешним обработкам и расширениям доступ к файловой системе, COM-объектам и внешним сайтам. Назначьте его базе, если пользователи запускают сторонние обработки.
Отладку на сервере (ключ -debug в параметрах службы) включайте только на тестовом кластере. На рабочем она замедляет вызовы и открывает лишний порт.
Учётная запись службы должна иметь доступ только к своему каталогу и сетевым ресурсам для копий. Права администратора ОС ей не нужны.
Регламентное обслуживание и резервное копирование
Резервную копию клиент-серверной базы делают средствами СУБД, а не выгрузкой .dt. Выгрузка требует монопольного режима и на большой базе идёт часами. СУБД умеет копировать без остановки работы.
| Задача | MS SQL | PostgreSQL | Как часто |
|---|---|---|---|
| Полная копия | План обслуживания, BACKUP DATABASE | pg_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 платформы. Он пишет события вызовов, блокировок и исключений. Включайте его на время диагностики с фильтром по длительности и выключайте: без фильтров журнал быстро забивает диск.