Схема размещения компонентов
При большом количестве одновременно открытых сессий к размещению 2 целесообразно добавить дополнительные серверы доступа.
Пусть их имена будут gw2 gw3 gw4 и т.д., настройка производится аналогично
IP адреса дополнительных серверов доступа необходимо перечислить в настройках Indeed PAM Core в файле c:\inetpub\wwwroot\api\Web.config в секции PamProxyIpAddresses
<add key="PamProxyIpAddresses" value="192.168.48.16, 192.168.48.155, 192.168.48.202" />
В настройках User Console в файле C:\inetpub\wwwroot\uc\assets\config\config.prod.json в секции Gateway Server необходимо ввести адрес балансировщика, например так:
"gatewayServer": {
"address": "haproxy.indeed-id.local"
},
Настиройки 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 3s
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 ft_rdp
mode tcp
bind 192.168.10.140:3389 name rdp # Адрес и порт на HAProxy для подключения клиентов
timeout client 1h
log global
option tcplog
tcp-request inspect-delay 2s
tcp-request content accept if RDP_COOKIE
default_backend bk_rdp # указываем какой backend обрабатывает запросы
backend bk_rdp
mode tcp
balance leastconn
timeout server 1h
timeout connect 4s
log global
option tcp-check
tcp-check connect port 3389 ssl
stick-table type ip size 1m expire 1h # настраиваем таблицу привязки по ip
stick on src # используем ip-адрес клиента для привязки
default-server inter 3s rise 2 fall 3
server gw4 192.168.10.148:3389 weight 10 check verify none ####################
server gw3 192.168.10.147:3389 weight 10 check verify none #Сервера PAM Gateway
server gw2 192.168.10.146:3389 weight 10 check verify none #
server gw1 192.168.10.145:3389 weight 10 check verify none #