Versions Compared
compared with
Key
- This line was added.
- This line was removed.
- Formatting was changed.
При одновременной балансировке сервер HAProxy будет принимать запросы и как веб-сервер на адреса api, и как RDS сервер.
Необходимо указать адрес HAProxy в файлах:
| Code Block | ||||
|---|---|---|---|---|
|
...
"apiServer": {
"url": "https://haproxy.indeed-id.local/api"
},
|
...
| Code Block | ||||
|---|---|---|---|---|
|
...
"apiServer": {
"url": "https://haproxy.indeed-id.local/api"
},
"gatewayServer": {
"address": "haproxy.indeed-id.local"
},
|
...
| Code Block | ||||
|---|---|---|---|---|
|
...
<pamProxy ApiUrl="https://haproxy.indeed-id.local/api" IdpUrl="https://pam1.indeed-id.local/idp" ... FileCopyMinBytesToSave="1048576" />
|
...
Таким образом, в конфигурации HAProxy должны быть настроены отдельные frontend и backend для каждого сервиса.
Для двух PAM Core и двух PAM Gateway конфигурация HAProxy
...
представлена ниже:
| Code Block | ||
|---|---|---|
| ||
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 # Запустить процесс в фоновом режиме
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private |
...
|
...
defaults
log global # параметры лога берутся из секции global
mode tcp # режим работы экземпляра HAProxy
option dontlognull # отключить логи для фиктивных подключений
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
retries 3 # кол-во попыток до того, как понизить статус сервера
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
# Stats
frontend stats
bind *:8404 # настройка интерфейса для просмотра статистики
stats enable # включение вывода статистики
stats hide-version # скрытие версии HAProxy на странице статистики
stats realm Haproxy\ Statistics # установка authentication realm
stats uri /haproxy # установка ссылки на страницу статистики
stats auth stat:stat # логин и пароль от страницы статистики
stats refresh 3s # период обновления страницы статистики
frontend ft_rdp
mode tcp # режим работы frontend
bind 192.168.48. |
...
140:3389 # Адрес и порт на HAProxy для подключения |
...
клиентов timeout client 1h log global option tcplog # настройка логов TCP подключений с состояниями и таймерами tcp-request inspect-delay 2s # установка максимального времени анализа входящего соединения tcp-request content accept if RDP_COOKIE # сессия открывается при наличии RDP протокола default_backend bk_rdp # название backend, обрабатывающего запросы backend bk_rdp mode tcp # режим работы backend balance leastconn # выбор сервера с наименьшим числом активных соединений timeout server 1h timeout connect 4s log global option tcp-check # Выполнить проверку доступности по TCP, tcp-check connect port 3389 ssl # открывая зашифрованное соединение на порт 3389. stick-table type ip size 1m expire 12h # настраиваем таблицу привязки по ip размером 1 млн записей и временем жизни записи 1 час stick on src # использование ip-адреса клиента для привязки default-server inter 3s rise 2 fall 3 # Установить интервал проверки у серверов backend 3 сек. Сервер будет считаться активным после 2 успешных проверок и недоступным после 3 неудачных проверок. server gw1 192.168. |
...
10. |
...
145:3389 weight 10 check verify none |
...
# Сервера PAM Gateway: веса серверов равны относительно друг друга,
server |
...
gw2 192.168. |
...
10. |
...
146:3389 weight 10 check verify none # проверка доступности включена, сертификат не проверяется frontend frontend_http mode http # режим работы frontend bind *:443 ssl crt /etc/ssl/certs/ubuntu.test.com.pem # настройка интерфейса для входящих запросов option forwardfor # передать оригинальный ip адрес клиента серверу default_backend backend_http # название backend, обрабатывающего запросы backend backend_http mode http # режим работы backend option prefer-last-server # попытка повторно использовать тоже соединение к серверу option redispatch balance roundrobin 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 15s # отключена проверка сертификатов, проверка доступности 15 сек server |
...
pam1 |
...
192.168. |
...
10. |
...
121:443 ssl verify none check inter 15s |
...
##
|