как настроить http uri healthcheck для балансировщика WS с Apache Httpd
Мне нужно настроить проверку работоспособности для моего балансировщика нагрузки ws в Apache httpd. Я использую mod_proxy_wstunnel для туннелирования веб-сокетов и mod_balancer для балансировки нагрузки между двумя серверами. Я использую дополнительно mod_proxy_hcheck для проверки, доступны ли 2 сервера. конфигурация следующая:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
ProxyHCExpr ok2 {%{REQUEST_STATUS} =~ /^[2]/}
<Proxy balancer://trackingwsbalancer>
BalancerMember wss://{{ rpa_fqdn_tracking1 }}:8443 route=1 hcmethod=GET hcexpr=ok2 hcuri=/trackingproxy_advanced/actuator
BalancerMember wss://{{ rpa_fqdn_tracking2 }}:8443 route=2 hcmethod=GET hcexpr=ok2 hcuri=/trackingproxy_advanced/actuator
ProxySet stickysession=ROUTEID
ProxySet lbmethod=bybusyness
</Proxy>
проблема в том, что проверка работоспособности всегда завершается ошибкой, потому что следующий запрос:
wss ://{{ rpa_fqdn_tracking1 }}:8443/trackingproxy_advanced/actuator.
и я хочу, чтобы это было
htpps ://{{ rpa_fqdn_tracking1 }}:8443/trackingproxy_advanced/actuator
чтобы иметь возможность правильно обрабатывать ответ для проверки работоспособности с помощью hcexpr
Я буду очень признателен за любую идею по настройке протокола для проверки работоспособности uri.
1 ответ
В документации модуля mod_proxy_hcheck сказано, что он выполняет HTTP-запрос. После проверки файла mod_proxy_hcheck.c( Apche 2.4.39) выяснилось, что этот случай не рассматривается. Код не проверяет, является ли схема ws, и не заменяет ее при создании запроса.
Было бы здорово иметь возможность добавлять абсолютный uri для hckeck или автоматически заменять используемый протокол, если это не http.