Как настроить отказоустойчивый кластер 1С на двух серверах и какие подводные камни нужно учесть?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При росте нагрузки на информационные базы 1С:Предприятие перед системными администраторами и архитекторами неизбежно встает вопрос обеспечения высокой доступности и отказоустойчивости (High Availability). Классический сценарий, с которого начинают многие компании — построение кластера из двух физических или виртуальных серверов приложений. В этой статье мы подробно разберем, насколько жизнеспособна схема из двух серверов, как правильно ее спроектировать, какие технические и лицензионные ограничения накладывает платформа, и как защитить систему от критических сбоев.

Архитектура отказоустойчивого кластера 1С: формула и правила

Для начала разберем базовое понятие платформы 1С:Предприятие — Центральный сервер кластера. Центральный сервер отвечает за управление кластером, хранение реестра кластера и координацию работы всех рабочих процессов. В стандартной (неотказоустойчивой) конфигурации центральный сервер в кластере всего один. Если он выходит из строя, вся работа пользователей прекращается.

Чтобы защитить систему от падения центрального сервера, платформа позволяет назначить роль центрального нескольким серверам в составе одного кластера. Для расчета необходимого количества таких серверов используется классическая формула платформы:

Количество центральных серверов = Уровень отказоустойчивости + 1

Разберем, как это работает на практике в конфигурации из двух серверов приложений:

  1. Если уровень отказоустойчивости равен «0»: В этом режиме мы можем настроить два центральных сервера. При падении одного из них «бесшовного» переключения сеансов не произойдет. Сеансы пользователей, которые в этот момент выполняли транзакции на упавшем сервере, будут аварийно завершены с ошибкой связи. Однако, благодаря наличию второго центрального сервера, реестр кластера останется доступен. При повторном запуске ярлыка 1С пользователи смогут мгновенно зайти в систему — платформа автоматически перенаправит их на второй (выживший) сервер. Для многих компаний этот вариант является достаточным и наименее ресурсоемким.
  2. Если уровень отказоустойчивости равен «1»: При такой настройке платформа пытается обеспечить бесшовный переход пользователей в режиме реального времени. Данные активных сеансов постоянно реплицируются между серверами. Если один сервер отключается, второй мгновенно подхватывает его пользователей, и они продолжают работу без прерывания сеанса.

Рассмотрим детальнее риски использования уровня отказоустойчивости «1» на двух серверах. Постоянная репликация данных сеансов по сети создает колоссальную нагрузку. При возникновении малейших сетевых задержек между двумя серверами система может начать «застревать», генерируя системные ошибки формата потока или сообщения о потере сеанса. Именно поэтому для полноценного бесшовного перехода рекомендуется закладывать в архитектуру не менее трех серверов приложений.

Лицензионные требования КОРП: почему ПРОФ не подойдет

Проанализируем важнейший юридический и технический аспект построения кластера. Начиная с версии платформы 8.3.14, фирма 1С жестко разграничила функционал лицензий уровней ПРОФ и КОРП на техническом уровне. Попытка настроить отказоустойчивый кластер на обычных лицензиях ПРОФ заблокирована платформой.

Если у вас установлены лицензии уровня ПРОФ, для вас действуют следующие жесткие ограничения:

Таким образом, для реализации любой схемы отказоустойчивости (даже с уровнем 0 на двух серверах) вам в обязательном порядке потребуются серверные и клиентские лицензии уровня КОРП.

Проблема разделения сети (Split-Brain) в двух узловых системах

Выясним причину, почему классические кластерные системы избегают четного количества узлов без внешних арбитров. Представим ситуацию: у нас есть Сервер А и Сервер Б. Между ними неожиданно пропадает сетевой линк (например, из-за сбоя коммутатора), но оба сервера продолжают физически работать.

В этот момент возникает ситуация Split-Brain (расщепление мозга):

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

Как настроить распределение ролей через Требования назначения функциональности (ТНФ)

Рассмотрим по шагам, как правильно настроить совместную работу двух серверов в составе одного кластера с помощью консоли администрирования. Одним из главных преимуществ КОРП-лицензий является возможность тонкого распределения нагрузки с помощью механизма ТНФ. Это позволяет решить проблему «тяжелых» отчетов и фоновых заданий, которые могут монополизировать ресурсы одного из серверов.

Для создания правил распределения выполните следующие действия в консоли администрирования кластера:

  1. Откройте консоль администрирования кластеров 1С:Предприятия.
  2. Перейдите к ветке Рабочие серверы и выберите свойства первого сервера (например, Server-App-1).
  3. Откройте пункт Требования назначения функциональности.
  4. Добавьте новое требование. Например, мы хотим, чтобы этот сервер обрабатывал только интерактивные сеансы пользователей (клиентские подключения):
    • Объект требования: Клиентское соединение.
    • Тип требования: Назначать (сервер будет приоритетно принимать эти соединения).
  5. Для второго сервера (например, Server-App-2) настроим обработку тяжелых фоновых и регламентных задач:
    • Объект требования: Фоновое задание (или Регламентное задание).
    • Тип требования: Назначать.

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

Устранение критических точек отказа: СУБД и лицензирование

Построение отказоустойчивого кластера серверов приложений 1С бессмысленно, если у вас остаются другие единые точки отказа (Single Point of Failure). Разберем, как защитить смежные компоненты системы.

1. Сервер баз данных (СУБД)

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

2. Сервер лицензирования

Программные лицензии 1С привязываются к конкретным аппаратным характеристикам сервера. Если вы активировали лицензии на Сервере А, при его падении Сервер Б не сможет раздавать лицензии пользователям. Существует два основных способа решения этой проблемы:

Ограничение потребления памяти процессами rphost

Чтобы защитить сервера от падения из-за утечек памяти или неоптимального кода, в настройках кластера обязательно нужно задать лимиты потребления ресурсов рабочими процессами rphost. Посмотрим на параметры конфигурации, которые необходимо задать в свойствах вашего кластера:

Пример настройки лимитов позволяет платформе своевременно реагировать на перегрузку: «провинившийся» процесс помечается как выключаемый, новые соединения на него не направляются, а активные пользователи постепенно и незаметно переносятся на новые, чистые процессы rphost.

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

← На главную