При подготовке к экзаменам "1С:Эксперт по технологическим вопросам" или при реальном проектировании архитектуры корпоративных систем часто возникает путаница. Документация говорит одно, опытные администраторы советуют другое, а формулы расчета кажутся противоречивыми. Давайте разберем этот вопрос подробно, совместив теорию платформы и суровую практику эксплуатации.
Давайте сначала сформулируем вопрос, который волнует многих специалистов. В документации к платформе 1С:Предприятие указано, что количество работающих центральных серверов в кластере должно быть на единицу больше, чем настроенный уровень отказоустойчивости. Формула выглядит так:
Количество серверов = Уровень отказоустойчивости + 1
Если мы хотим установить уровень отказоустойчивости равный «1» (чтобы система пережила падение одного сервера), то по формуле нам нужно:
1 + 1 = 2 сервера
Однако на форумах и в профессиональных сообществах часто звучит рекомендация использовать минимум три сервера. Почему возникает это расхождение? Зачем нужен третий сервер, если математически достаточно двух? Давайте проанализируем архитектуру кластера и поймем логику.
Разберем, как работает механизм отказоустойчивости с точки зрения платформы 1С версии 8.3.
Для обеспечения уровня отказоустойчивости со значением N действительно требуется наличие в кластере N+1 работоспособных серверов. Это официальный технический минимум.
Если у вас есть два физических (или виртуальных) сервера и вы настраиваете уровень отказоустойчивости «1», происходит следующее:
В этом сценарии, если один сервер падает, пользователи могут заметить кратковременное "подвисание" (обычно 2–3 секунды), но их сеансы не прервутся, ошибки не выскочат, и работа продолжится. То есть, формально задача выполнена: отказ одного узла не привел к остановке сервиса. Для сдачи экзамена на знание платформы правильным ответом будет именно два сервера.
Теперь давайте посмотрим на ситуацию глазами системного администратора, отвечающего за непрерывность бизнеса (Business Continuity). Почему опытные коллеги настаивают на трех серверах?
Рассмотрим сценарий катастрофы на кластере из двух серверов (Уровень отказоустойчивости = 1):
Ответ неутешительный: уровень отказоустойчивости стал равен нулю. У нас остался всего один живой сервер (Сервер Б). Кластер превратился в обычный одиночный сервер ("single point of failure"). Если в этот момент (пока мы чиним Сервер А) произойдет сбой на Сервере Б — вся работа встанет.
Теперь рассмотрим сценарий с тремя серверами (Уровень отказоустойчивости = 1):
В этом случае, даже после аварии одного узла, наш кластер сохраняет статус отказоустойчивого (Уровень = 1). Мы можем спокойно, без паники ремонтировать первый сервер, зная, что у нас все еще есть запас прочности. Именно поэтому для построения надежной системы ("High Availability") рекомендуется схема из трех узлов.
Давайте углубимся в технические детали, которые часто упускают. Кластер 1С состоит из различных процессов. Ключевыми для нас являются:
rphost — рабочий процесс, который выполняет код 1С.rmngr — менеджер кластера, который управляет всем кластером.Отказоустойчивость кластера критически зависит от отказоустойчивости процесса rmngr. Если у вас настроен уровень отказоустойчивости, но сервис менеджера кластера назначен только на один "Центральный" сервер, то при падении этого сервера кластер развалится, сколько бы рабочих серверов rphost у вас ни было на других машинах.
Для реализации схемы с тремя серверами необходимо убедиться, что служба менеджера кластера может запускаться на всех узлах. В консоли администрирования серверов 1С это настраивается через требования назначения функциональности.
Давайте представим, как это выглядит в настройках:
У нас есть три сервера: Server1, Server2, Server3. На каждом из них мы должны разрешить запуск сервиса лицензирования и сервиса сеансовых данных. Если мы жестко привяжем rmngr только к Server1, то наличие Server2 и Server3 не спасет нас от падения именно Server1.
Важный аспект, о котором стоит помнить при планировании: включение отказоустойчивости не бесплатно с точки зрения ресурсов.
При уровне отказоустойчивости «1» каждое изменение сеансовых данных записывается дважды: на активный сервер и на резервный. Это создает дополнительный сетевой трафик и нагрузку на процессоры (сериализация данных).
Давайте проанализируем разницу в нагрузке:
В процессе обсуждения важно не путать отказоустойчивость сервера приложений 1С и отказоустойчивость базы данных. Это две разные, независимые настройки, которые должны работать в тандеме.
Кластер 1С (на уровне платформы) спасает сеанс пользователя.
Его задача — сделать так, чтобы окно программы не закрылось, переменные в оперативной памяти сервера не потерялись, а временные таблицы сохранились.
Кластер СУБД (MS SQL AlwaysOn или PostgreSQL Patroni) спасает данные.
Его задача — гарантировать, что транзакция, которая была закоммичена, физически записана на диск и не пропадет при сгорании сервера БД.
Для полноценной защиты инфраструктуры (Enterprise уровня) мы рекомендуем следующую схему:
Подведем итог нашему исследованию. Ответ зависит от того, какую задачу вы решаете.
Ситуация 1: Вы сдаете экзамен "1С:Эксперт".
Правильный ответ: Вам нужно 2 сервера.
Обоснование: Формула N + 1. Для уровня отказоустойчивости 1 достаточно одного дополнительного сервера.
Ситуация 2: Вы проектируете надежную систему для бизнеса (Production).
Правильный ответ: Вам нужно 3 сервера.
Обоснование: Чтобы при выходе из строя одного сервера система не переходила в аварийный режим без защиты, а сохраняла уровень отказоустойчивости N=1 на оставшихся двух узлах. Это дает вам время на ремонт и замену оборудования без риска полной остановки бизнеса при повторном сбое.
Резюме действий при настройке:
1.Центральный сервер и Сервис сеансовых данных могли функционировать на любом из узлов.Следуя этим рекомендациям, вы получите систему, которая не просто "соответствует документации", но и реально готова к нештатным ситуациям.