Полезное

Отказоустойчивость в 1С: уровни и как их настроить

Вадим Заплетин 1 мин чтения
Отказоустойчивость в 1С: уровни и как их настроить

Платформа 1С:Предприятие 8.3 поддерживает работу в режиме кластера — группы серверов, которые распределяют нагрузку и подменяют друг друга при сбоях. Отказоустойчивость в 1С означает, что система продолжает функционировать даже при отказе отдельных компонентов: серверов приложений, СУБД или сетевого оборудования. Это критически важно для крупных компаний, где простой учётной системы приводит к финансовым потерям.

В этой статье разбираем уровни отказоустойчивости 1С, требования к инфраструктуре и пошаговую настройку отказоустойчивого кластера 8.3.

Что такое отказоустойчивость в 1С

Отказоустойчивость — способность информационной системы сохранять работоспособность при отказе одного или нескольких компонентов. Для 1С:Предприятие это означает:

  • Непрерывную работу пользователей при выходе из строя одного сервера приложений
  • Автоматическое переключение на резервную СУБД при сбое основной базы данных
  • Балансировку нагрузки между несколькими рабочими процессами
  • Отсутствие потери транзакций и данных при аварийных ситуациях

Кластер 1С состоит из центрального сервера (агента кластера), серверов приложений (рабочих процессов) и сервера базы данных. Если один из рабочих процессов зависает или падает, пользователи автоматически перераспределяются на оставшиеся серверы — без разрывов сеансов и потери введённых данных.

Уровни отказоустойчивости 1С

Платформа 1С:Предприятие 8.3 поддерживает три уровня отказоустойчивости, которые различаются по стоимости реализации, сложности настройки и степени защиты от сбоев.

Уровень 1: отказоустойчивость серверов приложений

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

Компоненты:

  • Центральный сервер (агент кластера) — управляет распределением нагрузки
  • Два и более рабочих сервера — обрабатывают запросы клиентов
  • Один сервер СУБД — хранит данные

Защита от: отказа серверов приложений, перегрузки отдельных процессов.

Не защищает от: отказа СУБД, потери данных на уровне базы данных.

Уровень 2: отказоустойчивость серверов приложений и СУБД

Расширенный уровень. Дублируется как кластер 1С, так и сервер базы данных. СУБД разворачивается в режиме репликации (например, SQL Server Always On, PostgreSQL Streaming Replication). При отказе основной базы система переключается на резервную.

Компоненты:

  • Два и более рабочих сервера 1С
  • Основной сервер СУБД
  • Резервный сервер СУБД с синхронной или асинхронной репликацией
  • Механизм автоматического переключения (failover)

Защита от: отказа серверов приложений, отказа сервера СУБД.

Не защищает от: потери данных при одновременном отказе обоих серверов СУБД, отказа сетевой инфраструктуры.

Уровень 3: географически распределённый кластер

Максимальный уровень. Серверы приложений и СУБД размещаются в разных дата-центрах или физических локациях. Защита от катастрофических сбоев: пожара, затопления, отключения электричества в одном здании.

Компоненты:

  • Кластер 1С в первом дата-центре
  • Кластер 1С во втором дата-центре
  • Репликация СУБД между дата-центрами
  • Балансировщик нагрузки или DNS failover для переключения пользователей

Защита от: отказа всех компонентов в одной локации.

Требования: выделенный канал связи между площадками (минимум 100 Мбит/с), синхронизация времени, сложная настройка репликации.

Уровень Компоненты От чего защищает Сложность
1 Кластер серверов 1С, одна СУБД Отказ серверов приложений Низкая
2 Кластер 1С, репликация СУБД Отказ серверов приложений и СУБД Средняя
3 Кластер в двух дата-центрах Катастрофический отказ локации Высокая

Требования к серверному оборудованию

Отказоустойчивый кластер 1С требует производительного и надёжного серверного оборудования. Ключевые требования:

Процессор

Рабочие процессы 1С:Предприятие активно нагружают CPU. Для кластера на 50–100 пользователей рекомендуются серверные процессоры Intel Xeon Scalable второго или третьего поколения (Silver 4210R, Gold 5220R и выше) или AMD EPYC 7002/7003. Количество ядер — от 8 на сервер приложений, от 16 на сервер СУБД.

Оперативная память

Платформа 1С кэширует метаданные и часто запрашиваемые данные в RAM. Минимум для сервера приложений — 16 ГБ, рекомендуется 32–64 ГБ. Для сервера СУБД — от 64 ГБ и выше, в зависимости от объёма базы данных. Используйте серверную оперативную память с коррекцией ошибок ECC.

Дисковая подсистема

СУБД генерирует интенсивные операции чтения и записи. Для базы данных обязательно используйте SSD-накопители с интерфейсом NVMe или SAS. RAID-массивы RAID 10 обеспечивают баланс скорости и отказоустойчивости. Для серверов приложений достаточно SATA SSD или даже HDD (платформа не хранит данные локально).

Сетевые адаптеры

Серверы кластера обмениваются данными постоянно. Рекомендуются сетевые адаптеры 10 GbE для связи между серверами 1С и СУБД. Для подключения клиентов достаточно 1 GbE.

Блоки питания и охлаждение

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

Настройка отказоустойчивого кластера 1С 8.3

Рассмотрим настройку кластера уровня 1 (два сервера приложений, одна СУБД). Это базовая конфигурация для компаний с 20–100 пользователями.

Шаг 1: Установка платформы 1С на серверы

  1. Подготовьте две физические или виртуальные машины под серверы приложений (например, Server-1C-01 и Server-1C-02) и одну машину под СУБД (Server-DB-01). ОС — Windows Server 2019/2022 или Linux (Ubuntu Server, CentOS).

  2. Установите платформу 1С:Предприятие 8.3 на Server-1C-01 и Server-1C-02 в режиме сервера. Укажите один и тот же каталог установки и порт (по умолчанию 1540). Версия платформы должна совпадать на всех серверах.

  3. Установите СУБД на Server-DB-01. Поддерживаются PostgreSQL (бесплатно), MS SQL Server, IBM DB2. Создайте пустую базу данных (например, 1c_production) с кодировкой UTF-8.

  4. Проверьте сетевую связность. Все серверы должны иметь статические IP-адреса и доступ друг к другу по TCP. Откройте порт 1540 (1С) и порт СУБД (5432 для PostgreSQL, 1433 для MS SQL).

Шаг 2: Создание кластера через консоль администрирования

  1. Запустите консоль администрирования серверов 1С:Предприятие на любом компьютере с установленной платформой. Путь: Пуск → 1С:Предприятие 8.3 → Администрирование → Консоль кластеров серверов.

  2. Добавьте центральный сервер. В консоли выберите Действия → Добавить центральный сервер. Укажите IP-адрес Server-1C-01 и порт 1540. Кластер создаётся автоматически при первом подключении.

  3. Добавьте второй рабочий сервер. Раскройте узел центрального сервера → Рабочие серверы → Создать → Рабочий сервер. Укажите имя Server-1C-02, IP-адрес, порт 1540. Требуемые роли: Сервер 1С:Предприятия.

  4. Настройте балансировку. Перейдите в свойства кластера → вкладка Функциональность → Балансировка нагрузки. Включите опцию Адаптивная балансировка по производительности. Кластер будет распределять пользователей равномерно.

Шаг 3: Создание информационной базы в кластере

  1. В консоли кластеров выберите узел кластера → Информационные базы → Создать. Укажите имя базы (например, Production).

  2. Настройте подключение к СУБД. Тип СУБД — PostgreSQL (или ваш выбор). Сервер СУБД — IP-адрес Server-DB-01. Имя базы данных — 1c_production. Логин и пароль — учётные данные владельца базы.

  3. Разрешите создание базы данных. Установите флаг Создать базу данных, если не существует. Платформа автоматически создаст структуру таблиц в СУБД.

  4. Назначьте рабочие серверы. На вкладке Назначение функциональности укажите оба сервера (Server-1C-01 и Server-1C-02). Режим запуска рабочих процессов — Автоматически.

  5. Сохраните настройки. Кластер запустит рабочие процессы на обоих серверах. Проверьте статус: в консоли должны отображаться два активных процесса.

Шаг 4: Проверка отказоустойчивости

  1. Подключите клиента 1С к информационной базе через веб-интерфейс или толстый клиент. Укажите адрес центрального сервера: http://Server-1C-01:1540/Production.

  2. Запустите несколько сеансов от разных пользователей. В консоли кластеров откройте узел Активные соединения — вы увидите распределение сеансов между серверами.

  3. Остановите один рабочий процесс. В консоли выберите один из рабочих серверов → Действия → Остановить. Пользователи автоматически переподключатся к оставшемуся серверу. Время переключения — до 30 секунд.

  4. Проверьте журнал событий. В консоли кластеров перейдите в Журнал регистрации. Найдите события Сервер недоступен и Перераспределение пользователей. Ошибок быть не должно.

Настройка отказоустойчивости СУБД (уровень 2)

Для защиты от отказа сервера базы данных настройте репликацию СУБД. Рассмотрим пример на PostgreSQL.

Потоковая репликация PostgreSQL

PostgreSQL поддерживает асинхронную и синхронную репликацию. Мастер-сервер передаёт изменения на реплику в режиме реального времени.

  1. Установите PostgreSQL на два сервера: master (Server-DB-01) и replica (Server-DB-02). Версии должны совпадать.
  2. На мастере откройте файл postgresql.conf. Установите параметры:
    wal_level = replica
    max_wal_senders = 3
    wal_keep_segments = 64
    
  3. Создайте пользователя репликации на мастере:
    CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'password';
    
  4. На реплике выполните начальное копирование базы данных с мастера:
    pg_basebackup -h Server-DB-01 -D /var/lib/postgresql/12/main -U replicator -P -v
    
  5. Создайте файл recovery.conf на реплике:
    standby_mode = on
    primary_conninfo = 'host=Server-DB-01 port=5432 user=replicator password=password'
    
  6. Запустите PostgreSQL на реплике. Проверьте статус репликации командой SELECT * FROM pg_stat_replication; на мастере. Должна отображаться одна строка с состоянием streaming.

Автоматическое переключение (failover)

При отказе мастера реплику нужно повысить до мастера. Это делается вручную командой pg_ctl promote или автоматически через решения типа Patroni, repmgr.

После настройки репликации в консоли кластеров 1С укажите адрес реплики как резервный сервер СУБД. При недоступности основного сервера платформа переключится на резервный.

Типовые ошибки при настройке

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

Рабочие серверы не видят друг друга

Симптом: в консоли кластеров отображается только один сервер, второй не добавляется или отображается как недоступный.

Причина: блокировка портов файрволом, неправильные DNS-имена, разные версии платформы на серверах.

Решение: проверьте доступность порта 1540 командой telnet Server-1C-02 1540 с первого сервера. Временно отключите файрвол для диагностики. Убедитесь, что версии платформы идентичны (команда 1cv8 --version).

Пользователи не переключаются при остановке сервера

Симптом: при остановке одного рабочего сервера пользователи теряют соединение, а не переподключаются к оставшемуся.

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

Решение: в строке подключения клиента указывайте адрес центрального сервера (агента кластера), а не рабочего сервера. Формат: Srvr="Server-1C-01";Ref="Production";. Центральный сервер автоматически перенаправит клиента на доступный рабочий процесс.

Падение производительности после добавления второго сервера

Симптом: после создания кластера скорость работы 1С снизилась, хотя серверов стало больше.

Причина: узкое место на сервере СУБД, недостаточная пропускная способность сети, блокировки в базе данных из-за одновременного доступа.

Решение: увеличьте производительность сервера СУБД (больше RAM, SSD-диски). Настройте пул соединений в PostgreSQL (max_connections, shared_buffers). Проверьте нагрузку на сеть — для кластера нужен канал 1 Гбит/с и выше между серверами.

Ошибки репликации СУБД

Симптом: реплика PostgreSQL отстаёт от мастера, в логах ошибки requested WAL segment has already been removed.

Причина: мастер удаляет архивные журналы транзакций быстрее, чем реплика их забирает. Недостаточное значение wal_keep_segments.

Решение: увеличьте параметр wal_keep_segments на мастере (например, до 128). Настройте архивирование WAL-файлов в отдельное хранилище. Проверьте скорость сети между мастером и репликой.

FAQ по отказоустойчивости 1С

Сколько серверов нужно для отказоустойчивого кластера 1С?

Минимум два сервера приложений для уровня 1. Для уровня 2 добавляется резервный сервер СУБД (итого три машины). Для географического резервирования — два полных кластера в разных локациях (шесть и более серверов).

Можно ли использовать виртуальные машины для кластера 1С?

Да, виртуализация поддерживается и рекомендуется. Главное — размещать виртуальные машины серверов кластера на разных физических хостах. Если обе ВМ работают на одном сервере, отказоустойчивость теряется при его выходе из строя.

Как проверить, что кластер действительно отказоустойчив?

Выполните тестовое отключение одного из серверов приложений во время рабочего дня. Пользователи должны автоматически переподключиться к оставшемуся серверу в течение 30 секунд. Проверьте журнал событий 1С — там не должно быть ошибок соединения. Для проверки СУБД остановите мастер-сервер PostgreSQL и убедитесь, что реплика автоматически повышается до мастера.

Когда нужен отказоустойчивый кластер 1С

Решение о внедрении кластера зависит от требований бизнеса и допустимого времени простоя. Отказоустойчивость критична, если:

  • В системе 1С работают более 50 пользователей одновременно
  • Простой учётной системы блокирует операционную деятельность (склад, торговый зал, производство)
  • Компания теряет более 100 000 рублей за каждый час простоя
  • 1С интегрирована с внешними системами (CRM, интернет-магазин, банк-клиент)
  • Требования регуляторов или аудита предписывают непрерывность учёта

Для компаний с 5–20 пользователями достаточно регулярного резервного копирования и плана восстановления. Развёртывание кластера в таком случае избыточно и экономически не оправдано.

Стоимость и окупаемость

Минимальная конфигурация отказоустойчивого кластера (уровень 1) требует:

  • Два сервера приложений — от 150 000 рублей за единицу
  • Один сервер СУБД — от 300 000 рублей
  • Сетевое оборудование (коммутаторы, кабели) — от 50 000 рублей
  • Лицензии 1С:Предприятие на сервер — от 13 000 рублей за 1 пользователя
  • Работы по настройке — от 80 000 рублей