1

我需要在 Apache httpd 中为我的 ws 负载均衡器配置运行状况检查。我正在使用 mod_proxy_wstunnel 进行 websocket 隧道和 mod_balancer 用于两台服务器之间的负载平衡。我正在使用additionnaly 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 正确处理 healthcheck 的响应

我将非常感谢为 uri 健康检查配置协议的任何想法。

4

1 回答 1

0

mod_proxy_hcheck 模块的文档说它执行 HTTP 请求。在检查了 mod_proxy_hcheck.c(Apche 2.4.39)之后,似乎没有涵盖这种情况。该代码不检查方案是否为 ws 并且在创建请求时不替换它。

能够为 hckeck 添加绝对 uri 或自动替换使用的协议(如果它不是 http)应该很棒。

于 2020-02-17T09:10:20.973 回答