Горизонтальное масштабирование с использованием HAProxy
В bpm’online существует возможность повысить производительность крупных проектов (до нескольких тысяч пользователей) за счет горизонтального масштабирования — увеличения количества серверов, на которых развернуто приложение и распределения нагрузки между ними.
Балансировщик может быть аппаратным или программным. Для работы в отказоустойчивом режиме используется балансировщик HTTP/HTTPS-трафика с поддержкой протокола WebSocket. Работа приложения тестировалась на программном балансировщике нагрузки HAProxy. Известны случаи успешного использования других балансировщиков Citrix, Cisco, NginX, FortiGate, MS ARR.
Данный документ рассматривает вариант горизонтального масштабирования bpm’online с иcпользованием бесплатного open-source балансировщика HAProxy для распределения нагрузки на серверы сессий.
Общий порядок развертывания
Общий порядок развертывания приложения bpm’online с горизонтальным масштабированием следующий:
1.Развернуть необходимое количество экземпляров приложения bpm’online в web-ферме.
Параметры и необходимое количество серверов сессий для различных кейсов масштабирования указаны в статье “Системные требованиях к серверам (on-site)”.
Порядок развертывания приложения on-site доступен в статье “Установка bpm’online”.
На заметку
Рекомендуется, чтобы у всех экземпляров приложения имена в IIS и настройки Application pool совпадали.
2.В файле ConnectionStrings.config для всех экземпляров указать одинаковые базы данных SQL и Redis.
<add name=”redis” connectionString=”host=DOMAIN.COM;db=0;port=6379;maxReadPoolSize=10;maxWritePoolSize=500”/>
<add name=”db” connectionString=”Data Source=DOMAIN.COM;Initial Catalog=DatabaseName;Integrated Security=SSPI; MultipleActiveResultSets=True;Pooling-true;Max Pool Size=100”/>
3.В конфигурационном файле (Web.config) каждого приложения, в блоке <appSettings> добавить ключ:
<add key="TenantId" value="1" />
Номер “value” должен быть одинаковым у всех экземпляров приложения в web-ферме.
Важно
Начиная с версии 7.14.1 ключ <add key="TenantId" value="..." /> нужно добавить только во внутренний конфигурационный файл Web.config (путь к файлу Terrasoft.WebApp\Web.config). Добавление ключа во внешний конфигурационный файл может привести к ошибкам в работе приложения.
4.В конфигурационном файле (Web.config) каждого приложения указать одинаковые значения machineKey для всех сайтов.
5.Раздать права на созданные директории приложений пользователю IUSR и пользователю, под которым запущен Application pool в IIS.
6.Настроить балансировщик (например, HAproxy) для распределения нагрузки между развернутыми серверами приложения.
7.При необходимости настроить балансировку нагрузки для серверов баз данных и сессий.
На заметку
Информация о настройке кластеризации доступна в документации MSSQL и Oracle. Настройка отказоустойчивости системы при помощи Redis Sentinel рассмотрена в статье “Работа bpm’online с Redis Sentinel”.