6、Haproxy高级功能
6.4、服务器状态监测
基于端口做状态检测,此为默认方式
基于指定URI做状态检测
基于指定URI的request请求头部内容做状态检测
6.4.1、httpchk参数
option httpchk指令给予http协议来做健康检查,只有返回状态码为2XX或3XX的才认为是健康,其余所有状态码都认为不健康
如果不设置该选项时,默认采用tcp做健康检查。只要能建立tcp就表示健康
option httpchk语法:
option httpchk
option httpchk <uri>:检查的uri路径,默认为/,接受带有查询参数的uri
option httpchk <method> <uri>:http检查使用的方法,建议采用HEAD方法
option httpchk <method> <uri> <version>:检查的HTTP协议版本,默认为HTTP/1.0,如果修改为HTTP/1.1,还强制要求指定HOST,中间使用\r\n隔离
6.4.2、基于端口检测
通过监听端口进行健康检测
这种检测方式,haproxy只会去检查后端server的端口,并不能保证服务的真正可用
vim /etc/haproxy/haproxy.cfg
listen http_proxy 0.0.0.0:80
mode http
balance roundrobin
server web1 172.16.1.7:80 check #基于tcp检测端口
server web2 172.16.1.7:80 check
6.4.3、基于URI检测
通过URI获取进行健康检测,通过GET后端服务的web页面,基本上可以代表后端服务的可用性
vim /etc/haproxy/haproxy.cfg
listen http_proxy 0.0.0.0:80
mode http
balance roundrobin
option httpchk GET /index.html # 基于URI,会消耗网络带宽
server web1 172.16.1.7:80 check port 80
server web2 172.16.1.7:80 check port 80
6.4.4、基于URI头检测
通过request获取的头部信息进行匹配,然后进行健康检测
将健康检查的请求发送至后端节点的80端口,然后与Host进行匹配,用来确定该后端节点是否正常
vim /etc/haproxy/haproxy.cfg
listen http_proxy 0.0.0.0:80
mode http
balance roundrobin
option httpchk HEAD / HTTP/1.1\r\nHost:\ proxy.qingchen.com # head减少网络消耗
server web1 172.16.1.7:80 check port 80
server web2 172.16.1.8:80 check port 80