Настройка балансировщика HAProxy при использовании Web-форм

Работа Web-форм осуществляется по протоколу WebSocket. Если для разрабатываемого приложения формируется кластер и предполагается использование Web-форм, то потребуется задать дополнительные настройки для балансировщика. Представленные ниже настройки предполагают работу балансировщика по протоколу HTTP. Настройки, которые необходимы для работы по протоколу HTTPS, представлены в отдельной инструкцией.

Предполагается, что развёртывание балансировщика и веб-приложения осуществляется на одном компьютере.

  1. Установите HAProxy:

sudo apt-get install haproxy

  1. Откройте файл настроек:

sudo nano /etc/haproxy/haproxy.cfg

В файле имеется четыре основных раздела: global, defaults, frontend и backend.

  1. В разделе defaults задайте время ожидания подключения, время бездействия клиента, время обработки запроса сервером. Также добавьте время работы в туннельном режиме, который используется при работе по протоколу WebSocket. Время без префикса задаётся в миллисекундах, время с префиксом s - в секундах:

defaults

...

timeout connect 5s

timeout client 300s

timeout server 300s

timeout tunnel 3600s

...

  1. Добавьте раздел frontend с настройками балансировщика для HTTP-запросов:

frontend ft_web_bi

bind *:555

bind-process all

acl bisom path -i -m sub /fpBI_App_v10.x/axis2/services

acl biproxy path -i -m sub /PPService.axd

use_backend bk_bi if  bisom || biproxy

default_backend bk_web

  1. Добавьте раздел backend с настройками веб-приложения:

backend bk_web

mode http

option forwardfor

server web <IP-адрес балансировщика>:8110 check #Адрес сервера с развёрнутым балансировщиком и веб-приложением

  1. Добавьте раздел backend с настройками для группы BI-серверов, между которыми будет осуществляться распределение нагрузки:

backend bk_bi

mode http

option forwardfor

balance roundrobin #Алгоритм балансировки

cookie IDBI insert indirect nocache

server bi1 <IP-адрес первого BI-сервера>:8810 cookie sb1

server bi2 <IP-адрес второго BI-сервера>:8810 cookie sb2

...

  1. Добавьте раздел frontend с настройками балансировщика для WebSocket:

frontend ft_ws_bi

bind *:8080

bind-process all

default_backend bk_ws_bi

  1. Добавьте раздел backend с настройками для группы BI-серверов при работе через WebSocket:

backend bk_ws_bi

option forwardfor

balance roundrobin

cookie IDBI insert indirect nocache

server bi1 <IP-адрес первого BI-сервера>:9091 cookie sb1

server bi1 <IP-адрес второго BI-сервера>:9092 cookie sb2

...

  1. Добавьте настройки для включения сбора статистики работы балансировщика, в дальнейшем статистика будет доступна по адресу http://<IP-адрес балансировщика>:8404/stat:

frontend stats

bind *:8404

stats enable

stats uri /stats

stats refresh 10s

  1. Перезапустите HAProxy:

sudo systemctl restart haproxy

На этом настройка HAProxy завершена. Также необходимо настроить веб-приложение и BI-сервера, чтобы вся работа осуществлялась через установленный балансировщик.

  1. В конфигурационном файле веб-приложения config.json укажите адрес балансировщика и порт для работы через WebSocket:

{

  "targetRepo": "",

  "serviceUrl": "http://<IP-адрес балансировщика>:555/fp10.x/app/PPService.axd",

  "locale": "ru",

  "locales": ["ru"],

  "title": "FAP10",

  "baseUrl": "",

  "themes": ["fap10"],

  "webSocketPort": 8080

}

В serviceUrl в адресе балансировщика указывается порт, который был указан в разделе ft_web_bi, а в webSocketPort указывается порт из раздела ft_ws_bi настроек балансировщика HAProxy.

  1. В реестре или файле настроек settings.xml каждого BI-сервера задайте собственный порт, через который будет осуществляться работа по протоколу WebSocket. Порты должны соответствовать тем портам, которые были указаны в разделе bk_ws_bi настроек балансировщика HAProxy:

<Configuration>

<Root>

<Key Name="PP">

<BIS>

<Key Name="System">

<WebForms Port="9091"/>

</Key>

</BIS>

</Key>

</Root>

</Configuration>

На этом настройка завершена. Если все сделано верно, то веб-приложение будет доступно по адресу http://<IP-адрес балансировщика>:555/fp10.x/r/#/.

См. также:

Создание кластера BI-серверов