1C:SRE-Suite — разворачиваем отказоустойчивый кластер PostgreSQL на базе Patroni и etcd с помощью Ansible без HAProxy

11.09.26

База данных - Администрирование СУБД

В четвёртой части серии 1C:SRE-Suite мы переходим к практической автоматизации развёртывания отказоустойчивого кластера PostgreSQL для высоконагруженных систем 1С на Linux. В материале подробно разбирается инженерное решение без HAProxy — с использованием виртуального IP-адреса и vip-manager от CYBERTEC, обеспечивающего прямое подключение к активному мастеру без лишних задержек и точек отказа. Показана структура Ansible-модуля: подготовка ОС, развёртывание etcd, настройка Patroni с параметрами для больших нагрузок 1С. В конфигурационный шаблон Patroni автоматически закладываются параметры, критически важные для высоконагруженных баз данных, запуск vip-manager и полная автоматизация создания трёхнодового кластера. В конце — пошаговый Quick Start и планы развития модуля, включая резервное копирование, оптимизацию ОС Linux и rolling updates PostgreSQL.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
1C:SRE-Suite разворачиваем отказоустойчивый кластер PostgreSQL на базе Patroni и etcd с помощью Ansible без HAProxy:
.zip 5,64Mb
0 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.
1C:SRE-Suite — разворачиваем отказоустойчивый кластер PostgreSQL на базе Patroni и etcd с помощью Ansible без HAProxy
Практическая реализация высокодоступного отказоустойчивого кластера СУБД для 1С:Предприятие с акцентом на Linux, исключение лишних прокси-узлов и инженерный подход к SRE-администрированию.
Авторы проекта: Нинель и Николай Щербаковы
Репозиторий проекта: NickScherbakov/1c-sre-suite

В предыдущих частях нашего цикла публикаций мы подробно разобрали автоматизацию сборки приложений, развертывание сквозного CI/CD конвейера и безопасное потоковое маскирование баз данных для сред разработки. Все эти шаги позволяют исключить человеческий фактор на этапе подготовки и доставки кода.

Однако наивысший приоритет в борьбе за показатель доступности систем 99,9% имеет надежность самого уровня хранения данных. Любой непредвиденный сбой на стороне СУБД способен мгновенно парализовать работу сотен пользователей и привести к потере транзакций.

Важно: все механизмы, описанные в статье, действуют исключительно на уровне целого экземпляра СУБД (физическая потоковая репликация PostgreSQL, штатный механизм pg_rewind, сетевой virtual IP) и являются стандартной, документированной функциональностью PostgreSQL и официально рекомендуемыми параметрами для 1С. Материал не выполняет прямых SQL-обращений к таблицам информационной базы 1С, не изменяет поведение платформы и не подменяет регламентные процедуры платформы SQL-скриптами — вся работа с объектами конфигурации по-прежнему выполняется исключительно средствами сервера 1С:Предприятие.

В четвертой части нашей серии мы перейдем к автоматизации развертывания отказоустойчивой СУБД. Мы детально разберем структуру нашего Ansible-плейбука для автоматического создания трехнодового высокодоступного кластера PostgreSQL под управлением Patroni и etcd, а также покажем, как избавиться от лишнего и ненадежного звена в виде HAProxy с помощью утилиты vip-manager.

Архитектурный выбор: почему мы отказываемся от схемы с HAProxy

Классическая и наиболее распространенная схема построения высокой доступности PostgreSQL, рекомендуемая во многих учебных материалах, включает в себя три ключевых компонента: СУБД с агентами Patroni, распределенный реестр etcd и балансировщик HAProxy в качестве точки входа.

При такой архитектуре HAProxy непрерывно опрашивает REST API агентов Patroni на портах 8008, определяет текущего лидера и перенаправляет на него весь входящий трафик от сервера приложений 1С.

Данная схема имеет два фундаментальных недостатка в контексте эксплуатации систем «1С:Предприятие»:

  • Снижение производительности: рабочие процессы 1С не поддерживают разделение транзакционного трафика на чтение и запись на уровне платформы. Весь поток запросов всегда идет на мастер-ноду. В этих условиях HAProxy выполняет роль простого переключателя трафика, который, по результатам тестов в высоконагруженных средах, вносит дополнительную задержку на сетевом уровне в размере от 1% до 10% в зависимости от характеристик оборудования.
  • Дополнительная точка отказа: сам узел балансировщика HAProxy становится критическим элементом инфраструктуры. Для обеспечения его отказоустойчивости приходится разворачивать еще одну пару серверов с утилитами Keepalived и виртуальным IP-адресом, что лавинообразно увеличивает сложность администрирования и вероятность ошибок при эксплуатации.

Мы предлагаем использовать более элегантное и производительное инженерное решение: исключить HAProxy из цепочки прохождения запросов и организовать прямую маршрутизацию трафика.

🎯 Инженерное решение: виртуальный IP-адрес и vip-manager от CYBERTEC

Для создания единой точки входа без использования внешних балансировщиков мы интегрировали в наш SRE-пакет утилиту vip-manager (мы используем современную версию v5.0.0, переведенную на etcd v3 API).

Принцип работы этой схемы предельно прост и надежен:

  1. Для кластера СУБД выделяется один свободный виртуальный IP-адрес (VIP) в локальной сети.
  2. Демон vip-manager запускается на каждом сервере баз данных в кластере и непрерывно опрашивает распределенное хранилище etcd по ключу /db/cluster-1c/leader.
  3. Узел, который в данный момент признан etcd активным лидером Patroni, получает сигнал от локального vip-manager, и утилита мгновенно вешает виртуальный IP-адрес на свой сетевой интерфейс.
  4. В случае аварии лидера и переключения роли мастера на другой узел, vip-manager на упавшем сервере мгновенно удаляет виртуальный адрес со своего интерфейса (в версии v5.0.0 это происходит автоматически даже при полной потере связи с DCS), а на новом мастере локальный демон vip-manager поднимает этот же IP-адрес на сетевом интерфейсе.
  5. Сервер приложений 1С всегда подключается к базе данных по единому виртуальному IP-адресу, не замечая физических переключений серверов «под капотом» СУБД.

Такой подход гарантирует прямое сетевое соединение с активным сервером СУБД с нулевыми задержками на проксирование.

📂 Структура автоматизации: обзор Ansible-модуля развертывания

Наш готовый модуль развертывания полностью автоматизирует процесс установки и конфигурации всех элементов ОУК на операционных системах Linux (включая Astra Linux, Ред ОС и Ubuntu). Вся логика плейбука разделена на детерминированные стадии:

1. Подготовка операционной системы

Для корректной работы виртуального IP-адреса на всех серверах СУБД необходимо разрешить демонам связываться с адресами, которые физически еще не подняты на локальных сетевых картах. Плейбук автоматически прописывает параметр ядра net.ipv4.ip_nonlocal_bind = 1 в системный файл /etc/sysctl.conf и немедленно применяет изменения. Также на этом этапе устанавливаются базовые системные утилиты, включая транслятор сетевых имен, менеджер пакетов pip и драйверы СУБД.

2. Развертывание кластера etcd

Плейбук устанавливает службу etcd, генерирует уникальные токены инициализации для каждого сервера и настраивает конфигурационные файлы. Настройки etcd жестко выверены: интервал отправки сигналов активности (heartbeat) зафиксирован на уровне 1000 мс, а таймаут выборов лидера (election timeout) равен 5000 мс. Это исключает ложные срабатывания кластера при кратковременных сетевых колебаниях.

3. Установка СУБД и инициализация Patroni

Наш скрипт останавливает и полностью отключает стандартную системную службу PostgreSQL (например, postgrespro-1c-16), так как отныне управлением жизненным циклом процессов СУБД будет заниматься исключительно агент Patroni.

В конфигурационный шаблон Patroni автоматически закладываются параметры, критически важные для высоконагруженных баз данных 1С:

  • max_connections: 250 — для обеспечения бесперебойной работы большого пула фоновых заданий и сеансов пользователей.
  • max_locks_per_transaction: 256 — для исключения переполнения таблицы блокировок при проведении тяжелых документов.
  • use_pg_rewind: true — для автоматического восстановления согласованности данных при возврате упавшего мастера в кластер в роли реплики.

На уровне СУБД автоматически создаются три выделенные учетные записи с четким разграничением прав: patroni_superuser (администратор), patroni_replication (пользователь репликации) и patroni_rewind (пользователь с точечными правами на системные функции для автоматического отката расходящихся транзакций). Все три учетные записи используются исключительно служебными процессами Patroni для оркестрации кластера (запуск, остановка, переключение ролей, ресинхронизация реплик) — ни одна из них не применяется для чтения или изменения данных информационной базы 1С, эта область по-прежнему остается зоной ответственности платформы.

4. Запуск vip-manager и настройка автозапуска

Ansible скачивает официальный релиз vip-manager, устанавливает его в систему, генерирует конфигурационный файл с указанием целевого виртуального IP-адреса и маски подсети, связывает его с ключами etcd и регистрирует службу в менеджере systemd с настроенным автозапуском.

🛠 Quick Start: практическое руководство по запуску

Весь описанный инфраструктурный код уже оформлен в виде готового плейбука и шаблонов в файле ansible-patroni-ha.txt в нашем репозитории. Чтобы запустить автоматическое развертывание в своей сети, выполните три простых шага:

  1. Подготовьте три виртуальные или физические машины с установленной ОС Linux и настройте SSH-доступ по ключам.
  2. Отредактируйте файл инвентаря hosts.ini, указав IP-адреса ваших серверов, имя сетевого интерфейса и целевой виртуальный IP-адрес, который станет точкой входа для 1С.
  3. Запустите выполнение плейбука:
ansible-playbook -i hosts.ini deploy-cluster.yml

Ansible последовательно пройдет по всем узлам, настроит параметры ядра, соберет кластер etcd, инициализирует Patroni, настроит пользователей базы данных и запустит vip-manager. На выходе вы получите отказоустойчивую среду хранения данных «под ключ».

🤝 Roadmap: развитие инфраструктурного модуля

Развертывание кластера по декларативным сценариям — это важная часть концепции Infrastructure as Code (IaC) нашего открытого проекта 1C:SRE-Suite.

В наших ближайших планах по развитию этого модуля:

  • Интеграция автоматического резервного копирования на базе утилиты pg_probackup с хранением архивов в S3-совместимых облачных хранилищах.
  • Добавление сценариев оптимизации операционной системы Linux на серверах СУБД (настройка параметров работы с виртуальной памятью, отключение Transparent Huge Pages) — речь идет исключительно о штатных параметрах ядра ОС, а не о внутренних объектах СУБД.
  • Разработка плейбуков автоматического обновления версий СУБД PostgreSQL в кластере с нулевым простоем системы (Rolling Updates).

Вы можете найти готовый сборочный файл ansible-patroni-ha.txt со всеми конфигурациями в репозитории проекта. Приглашаем вас тестировать решение на своих стендах, делиться результатами, открывать новые Issue и присылать свои пул-реквесты в наш репозиторий NickScherbakov/1c-sre-suite!

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.6.1.53
  • Бухгалтерия предприятия КОРП, редакция 3.0, релизы 3.0.204.22
  • Управление торговлей, редакция 11, релизы 11.6.1.56

Вступайте в нашу телеграмм-группу Инфостарт

PostgreSQL Patroni etcd Ansible отказоустойчивость кластер 1С:Предприятие SRE VIP‑manager виртуальный IP HAProxy Linux автоматизация CI/CD репликация high availability net.ipv4.ip_nonlocal_bind pg_probackup rolling updates Infrastructure as Code

См. также

DevOps и автоматизация разработки Тестирование QA Групповая разработка (Git, хранилище) Программист 1С:Предприятие 8 Бесплатно (free)

Четыре года в интеграторе я работал с git и EDT. Git после хранилища полюбил сразу: видно, кто и что менял. С EDT сложнее: тормозит, ошибки при обновлении ERP, автономный сервер внутри него работает только с файловой базой. На новой работе команда захотела перейти на git, я развернул EDT, и оно на второй день разрушило проект при загрузке расширения. Тогда я решил дать команде git с привычным Конфигуратором и инструмент, который за минуту доносит коммит до базы через ibcmd, вместо получасовой загрузки из файлов. На новой работе разрешили ИИ, и я написал это приложение с его помощью: от чтения документации и первого ТЗ до идей в электричке. Впервые за годы снова почувствовал себя творцом, а не закрывателем задач. По дороге приросли выгрузка, объединение и проверка конфигурации по коммитам, YAxUnit и режим MCP-сервера. В статье: схемы, скриншоты, грабли и честный список ограничений. Ссылки пока нет: хочу понять, нужно ли это кому-то, кроме меня.

03.09.2026    9926    KatanaDragon511    28    

37

DevOps и автоматизация разработки Мониторинг Тестирование QA Программист 1С:Предприятие 8 Бесплатно (free)

Платформа 1С давно вышла за рамки учетных систем. Сегодня это полноценная среда для создания сложных, высоконагруженных и распределенных приложений. А значит, и стек технологий современного разработчика кардинально изменился. Систематизируем весь инструментарий, который превращает 1С-программиста в инженера: от EDT и Git до автотестов на YAxUnit, контейнеризации приложений в Docker, мониторинга в Prometheus и организации шины данных на Kafka. Разберемся, зачем каждый инструмент нужен, как он вписывается в жизненный цикл разработки и с чего начать его внедрение.

25.08.2026    19987    mrXoxot    53    

81

Администрирование СУБД Системный администратор Программист Бесплатно (free)

5,5 тысячи пользователей в единой базе 1С, розница в режиме 24/7 и SLA 99,98% – в таких условиях любая авария быстро превращается в очереди на кассах, потерю денег и давление со стороны бизнеса. Показываем, как выстроить процесс аварийно-восстановительных работ: от первых алертов и базового скрининга системы до подключения команды, проверки гипотез и дебрифа после инцидента. Разбираем, как метрики, дашборды, техжурнал, Zabbix, Prometheus, Grafana, Telegram-боты и скрипты помогают не гадать, а быстро находить причину проблемы. На реальных авариях объясняем, почему «быстро» не должно означать «рискованно», как работа над ошибками снижает панику и почему каждая авария может сделать систему надежнее.

11.08.2026    2440    jul.dolganova    9    

23

Групповая разработка (Git, хранилище) EDT Программист 1С:Предприятие 8 Россия Бесплатно (free)

Синхронизируйте свой проект EDT с хранилищем конфигурации так же легко, как в git клиенте. По кнопке Pull в проект EDT подтягиваются изменения из хранилища, по кнопке Push ваш коммит из git репозитория проекта EDT улетает в хранилище конфигурации.

09.07.2026    6576    DmitryShehovtsev    14    

26

DevOps и автоматизация разработки Программист Бесплатно (free)

Хватит ограничивать себя родным и уютным стеком 1С. Пора расширять кругозор и осваивать смежные стеки! Разберемся, как Docker может упростить жизнь одинэснику: от сборки и тестирования 1С до запуска инфраструктуры и автоматизации CI/CD, причем быстро, воспроизводимо и без лишнего мусора в системе.

08.05.2026    6647    sleemp    81    

37

Администрирование СУБД Системный администратор Программист Бесплатно (free)

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

20.04.2026    9630    berserg    12    

27

DevOps и автоматизация разработки Мониторинг Системный администратор Программист Бесплатно (free)

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

06.04.2026    15335    vladimir-89    12    

33

DevOps и автоматизация разработки Программист 1С 8.3 1С:Библиотека стандартных подсистем Россия Бесплатно (free)

Расширение для VS Code, которое автоматизирует рутинные операции при разработке на платформе 1С:Предприятие 8. Позволяет выполнять все операции с конфигурацией, расширениями, информационными базами и тестами прямо из редактора, без необходимости запоминать команды и копировать их из блокнота.

13.01.2026    13289    0    johnnyshut23    37    

42
Для отправки сообщения требуется регистрация/авторизация