Балансировка компонента Messages Proxy при помощи Haproxy
Автор Kirill Osipov, Last modified by Kirill Osipov на 04 июля 2025 05:42 PM

Оглавление

  1. Настройка Haproxy
  2. Настройка Messages Proxy
  3. Демонстрация работы сценария

Предварительные требования

  • Установленный и настроенный Indeed AM 8.2.7.
  • Установленный и настроенный Indeed AM Messages Proxy.
  • Машина с установленным и настроенным сервером Haproxy (минимум версии 2.9!).

Настройка Haproxy

Полноценный конфигурационный файл Haproxy для балансировки только компонента Messages Proxy прикреплен во вложении.

Frontend:

frontend messages_proxy
    log 127.0.0.1 local0
    mode http
    bind *:443 ssl crt indeedbal.pem crt-ignore-err all verify optional ca-file domain_cert.cer ciphers ALL:@SECLEVEL=1
    option forwardfor
    http-request redirect scheme https unless { ssl_fc }
    http-request add-header X-IndeedAM-ClientCert %{+Q}[ssl_c_der,base64]
    default_backend backend_mp_servers_ssl

Здесь требуется наличие доменного сертификата в формате .pem (в примере indeedbal.pem), а также проверки запросов корневым доменным сертификатом в формате .cer (в примере domain_cert.cer).
При обращении Core к Messages Proxy, передается клиентский сертификат (который создается на этапе развертывания MP). Балансировщику требуется доменный корневой сертификат, чтобы организовать доверие к внешнему подключения и передать его во внутреннее.

Backend:

backend backend_mp_servers_ssl #Балансировка Messages Proxy
    mode http
    log 127.0.0.1 local0
    balance roundrobin
    option prefer-last-server
    option redispatch
    option forwardfor
    option httpchk
    http-check send meth POST uri /am/proxies/messages/health-check ver HTTP/1.1 hdr Host %[srv_name] hdr Content-Type application/json body "{}"
    http-check expect status 204
    option http-keep-alive
    default-server inter 10s downinter 5s fall 5 rise 2
    cookie IndeedIdProxy insert indirect nocache secure
    server MessagesProxy1 indeedam1.indeed-test.com:443 check inter 5000ms cookie MessagesProxy1 ssl verify required ca-file domain_cert.cer ciphers ALL:@SECLEVEL=1
    server MessagesProxy2 indeedam2.indeed-test.com:443 check inter 5000ms cookie MessagesProxy2 ssl verify required ca-file domain_cert.cer ciphers ALL:@SECLEVEL=1

Для корректной проверки Healthcheck Messages Proxy, требуется выполнять POST запрос, с обязательным наличием в Header имени хоста. Для этого используется динамическая  переменная (%[srv_name]), чтобы подставлять имя хоста прямо из перечисленных северов MP в бекенде. (в примере это indeedam1.indeed-test.com и indeedam2.indeed-test.com).
Для того чтобы сервер считался активным, требуется получить в ответ 204 код.
Наличие ver HTTP/1.1 обязательно, иначе будет использоваться HTTP версии 1.0, который не поддерживает динамические переменные.
Наличие Header Content-Type application/json body "{}" тоже обязательно.

Настройка Messages Proxy

В настройках Messages Proxy, которые расположены в реестре, в ServerUrl требуется указать адрес балансировщика (в примере это indeedbal.indeed-test.com).
В параметре ServerCertificateThumbprint требуется указать отпечаток сертификата балансировщика, который используется во Frontend (в  примере indeedbal.pem).

В параметр ClientCertificateThumbprint записывается отпечаток сертификата, который создается на данном этапе. Этот же отпечаток необходимо указывать в конфигурационом файле на всех нодах Messages Proxy. (C:\inetpub\wwwroot\am\proxies\messages\app-settings.Production.json)
Также, в этом конфигурационном файле требуется указать Header: "X-IndeedAM-ClientCert".

Конфигурационный файл будет идентичен на всех нодах Messages Proxy, за исключением пути до исполняемого скрипта, если он будет отличаться.

Пример:

  "Authentication": {
    "Certificate": {
      "Thumbprint": "e999402c324b713c8d966757a93770ade115a1bf",
	  "ForwardingHeader": "X-IndeedAM-ClientCert"
    }

 

Демонстрация работы Messages Proxy с использованием общего имени

В качестве тестового сценария используется аутентификация в User Console при помощи компонента IDP, в котором настроен провайдер SMS OTP + Messages proxy. 
В качестве скрипта, используется отправка с тестовую утилиту, которая принимает http запросы.

Успешная аутентификация в User Console

Событие об отправке СМС и успешном входе в UC.



Вложения 
 
 haproxy_only_messagesproxy.cfg (2.18 кБ)
(0 голос(а))
Эта статья полезна
Эта статья бесполезна

Комментарии (0)
Портал технической поддержки компании Индид