Для балансировки PAM Core рекомендуется к использованию схема Active-Passive.

Добавляются дополнительные сервера с установленными PAM Core.

Пусть их имена будут pam2, pam3 и т.д., настройка каждого PAM Core выполняется в точности как и первого, файлы конфигурации c:\inetpub\wwwroot\api\Web.config должны быть одинаковыми.

В качестве api будет выступать сам балансировщик, на него будут завязаны все PAM Core. Адрес балансировщика необходимо прописать в соответствующих секциях файлов конфигурации User Console, Management Console и Gateway:

Для файлов C:\inetpub\wwwroot\uc\assets\config\config.prod.json и C:\inetpub\wwwroot\mc\assets\config\config.prod.json

"apiServer": {
"url": "https://haproxy.domain.local/api"
},

Для файла C:\Program Files\Indeed PAM\Gateway\ProxyApp\Pam.Proxy.App.exe

<pamProxy ApiUrl="https://haproxy.domain.local/api" IdpUrl="https://pam1.domain.local/idp" ... FileCopyMinBytesToSave="1048576" />



Настройки HAProxy в случае с двумя серверами (первый - активный, второй - резервный) представлены ниже:

global
    log		/dev/haproxy/log local0			# см https://en.wikipedia.org/wiki/Syslog#Facility
    log		/dev/haproxy/log local1 notice	# notice - уровень ошибки. весь список: emerg, alert, crit, err, warning, notice, info, debug
    chroot	/var/lib/haproxy	# изменяем директорию выполнения для защиты от атак. папка пуста и нет прав.
    maxconn	256					# максимальное количество одновременных подключений. 
    stats socket /run/haproxy/admin.sock mode 660 level admin # связывает сокет с admin.sock
    stats timeout 30s
    
# Неизменяемые настройки HAPROXY
    user haproxy
    group haproxy 

    daemon 					# Запустить процесс в фоновом режиме

defaults
    log		global
    mode	http
    option	httplog
    option	dontlognull
    
# Таймауты
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms
    retries 3 				# кол-во попыток до того, как понизить статус сервера

# Статистика
    stats enable
    stats hide-version
    stats realm Haproxy\ Statistics
    stats uri /haproxy		#здесь указываем ссылку на страницу статистики
    stats auth stat:stat
    option httpchk HEAD / HTTP/1.0

# Настройки доступа 
    option redispatch		# Позволит пользователям пройти к другому серверу если сервер, на который ссылаются их куки, не работает
    balance roundrobin		# алгоритм выбора сервера (наименее загруженный по порядку)

frontend frontend_http
    bind *:443 ssl crt /etc/ssl/certs/haproxy.domain.local.pem # настройка интерфейса фронтенда с указанием пути к сертификату этого сервера
    option forwardfor				# передать оригинальный ip адрес клиента серверу
    default_backend backend_http	# указываем какой backend обрабатывает запросы

backend backend_http    
    option prefer-last-server         			 # попытка повторно использовать тоже соединение к серверу
    option httpchk GET /api/isHealthy			 # проверка доступности приложения PAM Core
    stick-table type string len 35 size 1m expire 1d  	 # Настройка, необходимая для связи gateway и core, иначе просмотр видеопотока работать не будет
    stick on path,word(2,/) if { path_beg /screencast/ } ##
    server pam2 192.168.10.122:443 ssl verify none check inter 5000ms	# названия серверов для HAProxy мониторинга, проверка доступности включена, сертификат не проверяется
    server pam1 192.168.10.121:443 backup ssl verify none check inter 5000ms	# backup-сервер неактивен пока основной сервер доступен для подключений