在Haproxy中有httpchk、ssl-hello-chk
下面来逐个介绍下这几种健康检查的使用,了解了这些就应该清楚知道怎么设置haproxy对后端服务的检查检查了。
一、option httpchk
从字面理解,我都能知道大概含义,http check,没错,这个设置表示开启后端服务器的http健康检查。下面来看下在haproxy中是如何设置的。
通用格式:
option httpchk option httpchk <uri> option httpchk <method> <uri> option httpchk <method> <uri> <version>
在default、backend、listen使用,禁止在frontend使用。
method:可以指定http协议中的方法,可参考:HTTP协议中的14种请求方法,默认使用 OPTIONS,然使用OPTIONS 对后端服务器的性能影响最小。
uri:默认 / ,也可以设置成其他的地址,也可以使用query的格式。
version:http的协议版本,可选项 HTTP/1.0和HTTP/1.1,默认HTTP/1.0,在有一些web服务中,需要加上HOST的信息,可以在HTTP/1.1后需要加上/r/n拼接HOST,例如:HTTP/1.1\r\nHost:www
例如:
option httpchk /chk.html option httpchk OPTIONS /chk.html option httpchk OPTIONS /chk.html HTTP/1.0 以上三个等同,只是写法不一样。 option httpchk OPTIONS /index.php?abc=abc HTTP/1.1\r\nHost:www
Tips 1:之前和一个朋友在谈及这个问题时,他使用如下的代码设置:
option httpchk GET http://www.baidu.com/ HTTP/1.0 #这个设置的也搞不清楚,原理是什么?这个还不算诡异,更诡异的是: option httpchk GET abc://aaaaaaaaaaa HTTP/1.0 ,这个依旧可以。在nginx的日志中, 依旧可以看到返回200
二、option ssl-hello-chk
check-ssl
option tcp-check
option redis-check
option smtpchk
option smtpchk <hello> <domain>
option mysql-check [ user <username> [ post-41 ] ]
option pgsql-check [ user <username> ]
http-check disable-on-404
http-check expect [!] <match> <pattern>
check-send-proxy
inter <delay>
fastinter <delay>
downinter <delay>
timeout check <timeout>
check
max-spread-checks <delay in milliseconds>
spread-checks <0..50, in percent>
a
Pingback引用通告: Haproxy中 global 部分的配置 | 精彩每一天