参考链接如下:
https://www.jianshu.com/p/95eae6ddfdc4
https://www.cnblogs.com/liang-wei/p/6726487.html
一 TCP层健康检查
Haproxy的默认的tcp层健康检查机制是利用TCP的三次握手。
1、首先由Haproxy向代理的服务器发起SYN握手协商,默认是与代理的端口建立链接,比如说8080。
2、等待代理服务器确认第一次SYN,并响应ACK,与发起SYN的第二次握手。
3、Haproxy收到确认ACK之后,会向代理服务器发送TCP链接重置的报文,已经确认代理的服务器健康。
配置示例:
listen haproxy 172.18.0.14:345
balance roundrobin
server web1 10.3.1.54:345 check
server web2 10.3.1.55:456 check
stick-table type ip size 200k expire 30m
stick on src
//check代表开启了tcp健康检查
二 HTTP层健康检查
1、通过监听端口进行健康检测 。这种检测方式,haproxy只会去检查后端server的端口,并不能保证服务的真正可用。
配置示例:
listen http_proxy 0.0.0.0:80
mode http
cookie SERVERID
balance roundrobin
option httpchk
server web1 192.168.1.1:80 cookie server01 check
server web2 192.168.1.2:80 cookie server02 check inter 500 rise 1 fall 2
2、通过URI获取进行健康检测 。检测方式,是用过去GET后端server的的web页面,基本上可以代表后端服务的可用性。
配置示例:
listen http_proxy 0.0.0.0:80
mode http
cookie SERVERID
balance roundrobin
option httpchk GET /index.html
server web1 192.168.1.1:80 cookie server01 check
server web2 192.168.1.2:80 cookie server02 check inter 500 rise 1 fall 2
3、通过request获取的头部信息进行匹配进行健康检测 。这种检测方式,则是基于高级,精细的一些监测需求。通过对后端服务访问的头部信息进行匹配检测。
配置示例:
listen http_proxy 0.0.0.0:80
mode http
cookie SERVERID
balance roundrobin
option httpchk HEAD /index.jsp HTTP/1.1\r\nHost:\ www.xxx.com
server web1 192.168.1.1:80 cookie server01 check
server web2 192.168.1.2:80 cookie server02 check inter 500 rise 1 fall 2
转载请注明原文!