我有两个服务器,每个服务器运行一个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
不健康。
答案 0 :(得分:2)
两条线做了诀窍:
option httpchk /server
httpchk
告诉HAProxy发送http请求并检查响应状态/server
指定我服务的URI /子域名server backend1 wildfly:8443 check check-ssl verify none
check-ssl
告诉HAProxy通过https而不是http verify none
告诉HAProxy信任该服务的ssl证书(或者可以指定.pem文件)完整的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