При построении отказоустойчивых и масштабируемых систем на базе платформы 1С:Предприятие часто возникает вопрос: можно ли объединить в один кластер центральный сервер с разрядностью x64 и дополнительные серверы с 32-разрядной архитектурой? Рассмотрим подробнее, как устроено межсерверное взаимодействие в кластере 1С, с какими специфическими проблемами можно столкнуться и как их правильно решать.
С точки зрения сетевого взаимодействия, кластер 1С прекрасно функционирует на узлах с различной архитектурой и операционными системами. Главный менеджер кластера (rmngr) общается с рабочими процессами (rphost) на рабочих серверах по сетевым протоколам. При этом процессы не обращаются напрямую к адресному пространству оперативной памяти соседних узлов.
Таким образом, схема с 64-разрядным центральным сервером и 32-разрядными рабочими серверами является полностью рабочей. Однако при эксплуатации такой конфигурации важно учитывать существенные ограничения 32-битных процессов и особенности балансировки нагрузки.
Проанализируем основные риски и узкие места, с которыми можно столкнуться при использовании 32-битных рабочих серверов в составе кластера:
rphost максимальный объем адресного пространства ограничен 2 ГБ (в редких случаях до 3–3,2 ГБ при специальной настройке ОС). Если балансировщик кластера направляет тяжелое фоновое задание или ресурсоемкий отчет на 32-битный рабочий процесс, происходит исчерпание памяти (ошибка Out of Memory), что приводит к аварийному завершению процесса.rmngr распределяет сеансы пользователей на основе замеряемых показателей производительности и количества сеансов, но не учитывает разрядность процесса и лимиты памяти в 2 ГБ для 32-битных узлов..dll) или COM-соединений привязан к разрядности исполняемого процесса rphost. Запуск 32-битной компоненты на 64-битной службе сервера (или наоборот) приводит к ошибке выполнения.Рассмотрим реальную проблему, с которой сталкиваются администраторы при тонкой настройке рабочих процессов. Для предотвращения разрастания 32-битных процессов по памяти в настройках кластера часто задают жесткое ограничение по количеству сеансов на один процесс (например, не более 25 сеансов на рабочий процесс).
При такой настройке платформа 1С автоматически порождает множество новых процессов rphost при росте числа подключений пользователей. Для каждого нового процесса rphost требуется выделение отдельного сетевого порта из диапазона IP-портов кластера. Если диапазон доступных портов ограничен, то при попытке открыть очередной процесс у сервера банально заканчиваются свободные порты. Это проявляется в виде зависания сеансов, нереагирования пользователей и ошибок переподключения.
Разберем по шагам, какие настройки необходимо выполнить для обеспечения стабильной работы кластера:
rphost.rphost с ограничением количества сеансов и регулярным интервалом перезапуска рабочих процессов для борьбы с фрагментацией памяти.rphost.