При проектировании высокодоступных систем на базе 1С:Предприятие 8.3 одним из самых критичных вопросов является расчет необходимого количества клиентских лицензий. Часто возникает ситуация, когда после включения механизмов отказоустойчивости привычное количество лицензий внезапно исчерпывается. Проанализируем, почему это происходит, как работает механизм резервирования сеансов и на что следует обратить внимание при настройке кластера.
Для начала разберем базовый принцип работы отказоустойчивого кластера 1С. В платформе 8.3 отказоустойчивость реализована через дублирование данных сеанса. Уровень отказоустойчивости — это параметр в настройках кластера, который определяет, какое количество рабочих серверов может одновременно выйти из строя без прерывания работы пользователей.
Рассмотрим стандартную логику: если мы устанавливаем уровень отказоустойчивости равным 1, система должна гарантировать, что при падении любого одного сервера пользователь продолжит работу. Для этого для каждого активного сеанса кластер автоматически создает резервную копию на другом рабочем сервере. Таким образом, на каждый вход пользователя в систему фактически открывается 2 сеанса: один основной (активный) и один резервный. Если уровень отказоустойчивости равен 2, то будут созданы 1 основной и 2 резервных сеанса (всего 3).
Проанализируем влияние этой настройки на расход лицензий. В случае использования программных лицензий, которые выдаются сервером «1С», каждое соединение с информационной базой считается отдельно. Это означает, что при уровне отказоустойчивости 1 расход лицензий увеличивается ровно в два раза. Рассмотрим пример: если у вас 100 пользователей и включена отказоустойчивость 1, сервер попытается списать 200 лицензий.
Важно понимать, что кратный расход лицензий проявляется не всегда. Выясним, как ведут себя разные типы ключей защиты:
Резервные сеансы — это не просто записи в базе данных, это живые объекты, которые требуют ресурсов. Проанализируем, на что еще, кроме лицензий, влияет отказоустойчивость:
Во-первых, это потребление оперативной памяти. Каждый резервный сеанс на рабочих серверах (rphost) потребляет память для хранения состояния переменных, открытых форм и временных таблиц. В среднем, включение уровня отказоустойчивости 1 увеличивает потребление RAM кластером на 70–100%.
Во-вторых, это нагрузка на сеть. Между рабочими серверами постоянно происходит синхронизация данных сеанса. Рассмотрим процесс: пользователь меняет значение реквизита на форме — эта информация должна быть мгновенно передана на все серверы, где хранятся резервные копии этого сеанса. При большом количестве пользователей и высоком уровне отказоустойчивости это может создать значительный трафик внутри кластера.
Разберем важную зависимость между уровнем отказоустойчивости и количеством физических машин. Существует правило: уровень отказоустойчивости не может быть больше, чем (Количество центральных серверов - 1).
Центральный сервер — это узел, на котором запущен менеджер кластера (rmngr), управляющий реестром сеансов. Если у вас всего один центральный сервер, то установка уровня отказоустойчивости в значение 1 не имеет смысла: при падении этого сервера упадет весь кластер целиком, независимо от наличия резервных сеансов на рабочих серверах.
Посмотрим на практический пример из экспертных тестов: в кластере 2 центральных сервера и 1 рабочий сервер. Мы устанавливаем уровень отказоустойчивости 2. Сколько будет создано соединений? Теоретически — 3. Однако на практике система ограничит количество резервных копий физически доступными узлами. Поскольку менеджер кластера старается разносить копии сеансов на разные машины, для полноценной работы уровня 2 нам потребовалось бы минимум 3 центральных сервера.
Не забудем про серверные лицензии. Для работы полноценного отказоустойчивого кластера с несколькими центральными серверами необходимо, чтобы на каждом сервере, где запущен rmngr, была доступна серверная лицензия 1С (32-разрядная или 64-разрядная). В случае с программными лицензиями их необходимо активировать на каждом узле кластера отдельно.
Подводя итог, при планировании инфраструктуры с отказоустойчивостью следует придерживаться следующих шагов:
КоличествоПользователей * (УровеньОтказоустойчивости + 1).rphost, что обесценит саму идею отказоустойчивости.В современных версиях платформы (8.3.20 и выше) механизмы работы с сеансовыми данными постоянно оптимизируются, однако фундаментальный принцип избыточности остается неизменным. Отказоустойчивость в 1С — это всегда компромисс между надежностью и стоимостью владения системой.