haproxy 到 IIS 服务器

haproxy 到 IIS 服务器

我们有 2 台 IIS 服务器,上面有多个网站。我想检查每个网站是否仍在运行。如果我进行简单的端口检查,即使 20 个网站中有 19 个已关闭,IIS 也会回复。所以这对我没什么帮助。

我有这个 curl,它可以做我想做的事情,但我不知道如何将它放在 HAProxy 中,甚至不知道是否可行。

curl --connect-to 'website':443:'internalserverip':443 'https://website' -k

curl 命令不需要 ''

我现在正在使用 tcp 检查,但这还不够。

global
        log /dev/log   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    tcp
        option  dontlognull
        retries 3
        option redispatch
        maxconn 2000
        contimeout     5000
        clitimeout     50000
        srvtimeout     50000

frontend 10_20_1_129_443
    bind 10.20.1.129:443
    option tcplog
    option logasap
    mode tcp
    default_backend 10_20_1_129_nodes_443

backend 10_20_1_129_nodes_443
    mode tcp
    balance roundrobin
    option log-health-checks
    server web01 10.20.1.50:443 check
    server web02 10.20.1.128:443 check

frontend 10_20_1_129_80
    bind 10.20.1.129:80
    option tcplog
    option logasap
    mode tcp
    default_backend 10_20_1_129_nodes_80

backend 10_20_1_129_nodes_80
    mode tcp
    balance roundrobin
    option log-health-checks
    server web01 10.20.1.50:80 check
    server web02 10.20.1.128:80 check

答案1

同事能够查明问题所在。上述问题的解决方法是,我从未使用证书解密标头 http 流量。安装证书后,我能够读取标头:

    defaults
    log     global
    mode    tcp
    option  dontlognull
    retries 3
    option redispatch
    maxconn 2000
    contimeout     5000
    clitimeout     50000
    srvtimeout     50000

    frontend 10_20_1_129_443
    bind *:443 ssl crt /etc/haproxy/wildcard.pem
    option tcplog
    option logasap
    mode http
    option http-server-close
    use_backend backend_site 1 if { hdr_beg(host) -i site 1 }
    use_backend backend_site 2 if { hdr_beg(host) -i site 2 }
    default_backend 10_20_1_129_nodes_443


    backend backend_site 2
    mode http
    balance roundrobin
    option log-health-checks
    server web01 10.20.1.50:443 check ssl verify none
    server web02 10.20.1.128:443 check ssl verify none

    backend backend_site 1
    mode http
    balance roundrobin
    option log-health-checks
    option httpchk HEAD / HTTP/1.1\r\nHost:\ site 1
    server web01 10.20.1.50:443 check ssl verify none
    server web02 10.20.1.128:443 check ssl verify none

    backend 10_20_1_129_nodes_443
    mode http
    balance roundrobin
    option log-health-checks
    server web01 10.20.1.50:443 check ssl verify none
    server web02 10.20.1.128:443 check ssl verify none

相关内容