При администрировании многосерверного кластера 1С:Предприятие 8.3 можно столкнуться с ситуацией, когда в консоли управления кластером и в списке активных пользователей информационной базы каждый пользователь отображается дважды. При этом фактически пользователь запускает только один клиентский сеанс, а при его закрытии из списка пропадают сразу обе строки.
Проанализируем архитектурные причины такого поведения платформы, выясним влияние на лицензирование и рассмотрим варианты настройки инфраструктуры.
Основная причина появления парных записей кроется в настройках отказоустойчивости кластера серверов. Разберем механизм репликации подробнее:
Уровень отказоустойчивости установлен в значение 1 или выше, платформа переходит в режим резервирования состояния работающих пользователей.Session Data Service) начинает автоматически реплицировать контекст и состояние каждого активного сеанса с основного центрального сервера на резервный.rmngr) на всех доступных центральных серверах. В ряде версий платформы утилита выводит в единый список как основной рабочий экземпляр сеанса, так и его теневую реплику, ожидающую на резервном узле. Это штатное поведение отказоустойчивого контура, а не ошибка в базе данных.Рассмотрим, как дублирование строк сеансов влияет на подсчет лицензий:
Выясним частую причину сбоев при настройке отказоустойчивости. При построении кластера только из двух серверов, где оба назначены центральными, возникает архитектурное ограничение:
N платформе требуется минимум 2N + 1 центральных серверов. Для уровня отказоустойчивости 1 необходимо не менее трех центральных серверов.Разберем по шагам регламентные действия и варианты конфигурации кластера.
Если в консоли остаются неудаляемые фантомные сеансы, которые мигрируют между серверами и не дают выполнить монопольные операции, выполним полную очистку контекста:
1C:Enterprise Server Agent на всех серверах, входящих в кластер.srvinfo\reg_1541\snccntx\ (номер порта соответствует рабочему порту кластера).snccntx. Базы данных и настройки кластера при этом не пострадают, но временная таблица активных сеансов будет очищена.Чтобы исключить конфликты синхронизации между процессами rmngr, оптимизируем распределение сервисов:
1С:Предприятие.Требования назначения функциональности явно закрепим сервис сеансовых данных за узлами, участвующими в резервировании.Если в распоряжении есть только два физических или виртуальных сервера 1С, надежнее отключить внутреннюю репликацию сеансов:
Уровень отказоустойчивости равным 0.rphost.