在https 404状态代码上以tcp模式检查HAProxy运行状况

时间:2016-07-26 08:32:01

标签: ssl https load-balancing wildfly haproxy

我有两个服务器,每个服务器运行一个Wildfly应用程序服务器,其中一个服务可通过https运行。该服务正在处理https加密。在两台服务器的前面,我有一台HAProxy作为tcp模式的负载均衡器,将ssl流量传递给两个服务。

HAProxy运行状况检查仅检查服务器是否在线,而不是服务。如果服务没有运行Wildfly返回:

<html><head><title>Error</title></head><body>404 - Not Found</body></html>

HAProxy将其解释为健康。

HAProxy config:

global  
    maxconn 2000

defaults
    log     global
    mode    http
    option  dontlognull
    retries 3
    option redispatch
    timeout connect  5000
    timeout client  10000
    timeout server  10000

listen backend
    bind *:8443
    mode tcp
    balance roundrobin
    option httpclose
    server backend1 wildfly:8443 check
    server backend2 xxx.xxx.xxx.xxx:8443 check

如何让HAProxy明白404 - Not Found 健康。

1 个答案:

答案 0 :(得分:2)

两条线做了诀窍:

  1. option httpchk /server
    • httpchk告诉HAProxy发送http请求并检查响应状态
    • /server指定我服务的URI /子域名
  2. server backend1 wildfly:8443 check check-ssl verify none
    • check-ssl告诉HAProxy通过https而不是http
    • 进行检查
    • verify none告诉HAProxy信任该服务的ssl证书(或者可以指定.pem文件)
  3. 完整的HAProxy配置:

    global  
        maxconn 2000
    
    defaults
        log     global
        mode    http
        option  dontlognull
        retries 3
        option redispatch
        timeout connect  5000
        timeout client  10000
        timeout server  10000
    
    listen backend
        bind *:8443
        mode tcp
        balance roundrobin
        option httpchk /server
        server backend1 xxx.xxx.xxx.xxx:8443 check check-ssl verify none
        server backend2 xxx.xxx.xxx.xxx:8443 check check-ssl verify none