Отказоустойчивый кластер 1С

Отказоустойчивый кластер 1С
Задать вопрос

Высокая доступность информационных систем — задача, актуальность которой возрастает по мере масштабирования бизнеса. Для предприятий, работающих на платформе 1С, отказоустойчивость становится критическим требованием. В этой статье мы рассмотрим архитектуру и пошаговые инструкции по настройке двух ключевых компонентов: отказоустойчивого кластера серверов 1С и отказоустойчивого кластера на СУБД Postgres Pro 18.

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

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

Для отказоустойчивой архитектуры 1С характерно:

  • Непрерывная работа пользователей при сбое одного сервера приложений;

  • Автоматическое переключение на резервный сервер СУБД;

  • Балансировка нагрузки между рабочими процессами;

  • Отсутствие потери данных (RPO) при аварийных ситуациях.

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

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

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

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

Дублируется не только кластер 1С, но и сервер базы данных с помощью механизмов репликации (например, PostgreSQL Streaming Replication)-2. При отказе основной базы система переключается на резервную.

Уровень 3: Катастрофоустойчивость

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


1. Кластер серверов 1С: установка и настройка

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

Для построения кластера серверов 1С потребуется минимум два сервера. Производительность зависит от количества пользователей:




Категория CPU (ядер) RAM (ГБ) Дисковая система
Малый бизнес 4 ядра 8 ГБ SSD 120 ГБ
Средний бизнес 8–16 ядер 32 ГБ SSD/NVMe 500 ГБ
Крупный бизнес 16–32 ядра 64–128 ГБ RAID на SSD/NVMe

Ключевая особенность 1С — плохое масштабирование на множество медленных ядер, поэтому предпочтение отдаётся процессорам с высокой тактовой частотой на ядро-46.

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

Установку платформы 1С следует выполнять на оба сервера, входящих в кластер. Важнейшее условие — версии платформы должны совпадать вплоть до номера релиза (например, 8.3.27.xxxx)-.

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

  1. Скачайте дистрибутив технологической платформы с портала releases.1c.ru (требуется активная подписка ИТС);

  2. Запустите setup.exe;

  3. Выберите тип установки «Сервер 1С:Предприятия»;

  4. Отметьте опцию «Установить сервер 1С:Предприятие 8 как сервис Windows»;

  5. Задайте порт кластера (по умолчанию 1541);

  6. Укажите пользователя для запуска служб (рекомендуется создать выделенного пользователя USR_1CV8).

Установка на Linux (на примере Debian/Ubuntu):

  1. Скачайте дистрибутив в виде .run файла;

  2. Сделайте файл исполняемым: chmod +x setup.run;

  3. Запустите установку в режиме сервера с указанием необходимых компонентов (server, server_admin, ws — для веб-сервисов, а также ru для русскоязычного интерфейса);

  4. Службы srv1cv83 и ras будут автоматически зарегистрированы.

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

После установки платформы на оба сервера необходимо создать единый кластер:

  1. Запустите оснастку «Консоль кластера» для администрирования сервера;

  2. Подключитесь к центральному серверу (например, Server-1C-01);

  3. Создайте новый кластер;

  4. Добавьте второй сервер в кластер:

    • Выберите один сервер в качестве образца, удалите на втором сервере собственный кластер;

    • Добавьте второй сервер в кластер соседа через консоль администрирования;

  5. Задайте уровень отказоустойчивости: значение «1» означает, что кластер остаётся работоспособным при отказе одного рабочего сервера-. Значение может варьироваться от 0 до 3 в зависимости от количества рабочих серверов в кластере;

  6. Установите флажок «Центральный сервер» в свойствах добавленного сервера — это укажет, кто управляет распределением нагрузок, не загружая master-сервер ad-hoc запросами.

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


2. Отказоустойчивый кластер Postgres Pro 18

Почему именно Postgres Pro 18 от 1С?

Postgres Pro в версии 18 с поддержкой от 1С — это специализированная сборка PostgreSQL, оптимизированная для работы с 1С:Предприятие. Она включает патчи и настройки, обеспечивающие максимальную производительность и стабильность для решений 1С.

Архитектура отказоустойчивого кластера PostgreSQL

Стандартная поставка PostgreSQL не предоставляет готовых механизмов для автоматического переключения на резервный сервер, в отличие от MS SQL Server Always On. Для построения отказоустойчивого кластера применяются дополнительные инструменты:

  • Patroni — менеджер кластера, обеспечивающий автоматическое переключение ролей между узлами и управляющий репликацией;

  • etcd или Consul — распределённое хранилище конфигурации (DCS), где Patroni сохраняет информацию о состоянии кластера и роли ведущего узла;

  • HAProxy — единая точка входа для клиентских подключений, балансирующая трафик к актуальному мастер-серверу-.

Схема кластера (минимальная конфигурация)

    +------------------+     +------------------+     +----------------+
    |   Сервер СУБД 1  |     |   Сервер СУБД 2  |     |   Сервер 1С    |
    |  (Patroni + etcd)|<--->| (Patroni + etcd) |<--->|   (etcd)       |
    +---------+--------+     +---------+--------+     +--------+-------+
              |                        |                       |
              +------------------------+-----------------------+
                                       |
                            +----------+-----------+
                            |       HAProxy        |
                            | (единая точка входа) |
                            +----------+-----------+
                                       |
                             1С:Предприятие (СУБД)

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

Пошаговая настройка отказоустойчивого кластера PostgreSQL

Шаг 1. Установка Postgres Pro 18 на серверы СУБД

Для получения дистрибутива Postgres Pro 18, специально адаптированного для 1С, перейдите на официальный сайт 1c.postgres.ru.

  1. Ответьте на три вопроса мастера (выберите версию PostgreSQL и операционную систему);

  2. Укажите адрес электронной почты для получения инструкции по установке и прямых ссылок на загрузку;

  3. Выполните установку через пакетный менеджер:

    wget https://repo.postgrespro.ru/pg1c-18/keys/pgpro-repo-add.sh
    sh pgpro-repo-add.sh
    apt-get install postgrespro-1c-18

  4. Проверьте статус сервиса: systemctl status postgrespro-1c-18.service.

Шаг 2. Базовая настройка PostgreSQL

-- Задание пароля для пользователя postgres (обязательно)
ALTER USER postgres WITH PASSWORD 'strong_password';

-- Создание БД и пользователя для тестовой информационной базы 1С
CREATE USER 1c_user WITH PASSWORD '1c_password';
CREATE DATABASE 1c_database OWNER 1c_user;

Шаг 3. Настройка потоковой репликации

На мастере (/etc/postgrespro/1c-18/data/postgresql.conf):

listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_size = '1GB'

На реплике сначала остановите сервис и очистите каталог данных:

systemctl stop postgrespro-1c-18
rm -rf /var/lib/pgpro/1c-18/data/*

Создайте реплику от мастера:

pg_basebackup -h <master_ip> -U postgres -D /var/lib/pgpro/1c-18/data -P -R

Шаг 4. Установка и настройка Patroni

Компонент для автоматического управления failover. Установите Patroni и etcd на всех узлах:

apt-get install patroni etcd

Пример конфигурации Patroni (/etc/patroni.yml):

scope: postgres
name: node1
restapi:
  listen: 0.0.0.0:8008
  connect_address: <node_ip>:8008
etcd:
  hosts: <etcd_node1>:2379, <etcd_node2>:2379, <etcd_node3>:2379
bootstrap:
  dcs:
    ttl: 30
    loop_wait: 10
    retry_timeout: 10
    maximum_lag_on_failover: 1048576
    postgresql:
      use_pg_rewind: true
      parameters:
        wal_level: replica
        max_wal_senders: 10
postgresql:
  listen: 0.0.0.0:5432
  connect_address: <node_ip>:5432
  data_dir: /var/lib/pgpro/1c-18/data
  bin_dir: /usr/lib/postgrespro/1c-18/bin

Параметр ttl (Time To Live) задаёт время жизни лидер-блокировки, loop_wait — интервал проверки состояния кластера, retry_timeout — таймаут повторных попыток. Эти значения следует корректировать при появлении ложных срабатываний из-за пиковых нагрузок.

Шаг 5. Установка HAProxy как единой точки входа

Настройте HAProxy на отдельном сервере или одном из существующих узлов:

frontend postgres
    bind *:5432
    default_backend postgres_servers

backend postgres_servers
    option httpchk
    server node1 <node1_ip>:5432 check port 8008
    server node2 <node2_ip>:5432 check port 8008

В настройках 1С:Предприятие в строке подключения к СУБД нужно указывать сервер, где установлен HAProxy (или использовать расширенную строку подключения с указанием нескольких хостов).


Архитектура и взаимодействие компонентов: пути сетевого трафика

Для ясного понимания, как работает вся система, рассмотрим пути прохождения сетевых запросов между компонентами и используемые порты.

Взаимодействие между клиентом, кластером 1С и СУБД

[Клиент 1С (Толстый/Тонкий клиент)]
            │
            │ TCP 1540-1541 (основной трафик к кластеру)
            ▼
[Центральный сервер (Агент ragent)]
   порт 1540 (администрирование)
   порт 1541 (основной трафик)
            │
            │ Внутреннее распределение нагрузки
            ▼
[Рабочие серверы 1С]
            │
            │ TCP 5432 (через HAProxy)
            ▼
[HAProxy (единая точка входа в СУБД)]
            │
            │ Балансировка и мониторинг через порт 8008 (Patroni API)
            ▼
[Postgres Pro 18 Кластер]
   Мастер (чтение/запись) ←→ Реплика (чтение)

Сетевые порты и протоколы

Компонент Порты Назначение Ключевые настройки
Сервер 1С (ragent) TCP 1540 Администрирование кластера и RAS (Remote Administration Server) Обязательно открыть для управления кластером из консоли
Сервер 1С TCP 1541 Основной трафик между клиентами и кластером, обмен данными с СУБД Главный рабочий порт сервера 1С
Рабочие серверы 1С Процессы rmngr и rphost слушают динамические порты Управляются центральным агентом
Postgres Pro TCP 5432 Стандартный порт для подключений клиентов к БД И HAProxy, и прямое 1С-подключение
Patroni API TCP 8008 HTTP-эндпоинт для мониторинга состояния узлов и healthcheck Используется HAProxy для проверки, какой узел является мастером
etcd TCP 2379 Клиентские запросы к распределённому хранилищу Используется Patroni для координации
etcd TCP 2380 Peer-коммуникация между узлами etcd Требуется для внутреннего общения узлов DCS

Также важны настройки таймаутов для надёжности сетевого взаимодействия. Сервер 1С имеет параметры SRV1CV8_PINGPERIOD (по умолчанию 2000 мс) и SRV1CV8_PINGTIMEOUT (по умолчанию 10000 мс), которые управляют проверкой доступности рабочих серверов и определяют длительность ожидания ответа от них.


Резервное копирование и мониторинг

Резервное копирование

Построение резервной копии в отказоустойчивой архитектуре должно быть продумано отдельно:

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

  2. Настройте автоматический бэкап средствами pg_dump или pg_basebackup с регламентным заданием;

  3. Храните резервные копии на отдельном сетевом хранилище или облачном сервисе.

Мониторинг кластера

  • Кластер 1С: встроенная консоль администрирования, Zabbix с шаблоном для 1С, RAS (Remote Administration Server) для программного доступа;

  • Кластер PostgreSQL: Patroni API на порту 8008 (healthcheck), PostgreSQL системные view (pg_stat_replication), Prometheus + Grafana с экспортёром PostgreSQL.


Заключение

Построение отказоустойчивой архитектуры 1С на базе платформы 8.3.27/8.5 и СУБД Postgres Pro 18 — задача, требующая тщательного планирования и квалифицированной реализации. Кластер 1С обеспечивает резервирование серверов приложений и балансировку нагрузки, а кластер PostgreSQL на основе Patroni гарантирует сохранность данных и автоматическое переключение при сбоях СУБД.

При проектировании системы рекомендуется:

  • Выбрать подходящий уровень отказоустойчивости в соответствии с бизнес-требованиями и бюджетом;

  • Запланировать минимум 3 узла для etcd при высоких требованиях к надёжности DCS кластера;

  • Рассмотреть возможность использования Postgres Pro Enterprise с BiHA для получения коммерческой технической поддержки;

  • Тщательно настраивать параметры таймаутов Patroni для предотвращения ложных переключений;

  • Регулярно тестировать сценарии отказов и восстановления.

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