⑨.服务器状态检测
检测的三种方式:
- 基于端口做状态检测 此为默认方式
- 基于指定URI做状态检测
- 基于指定URI的request请求头部内容做状态检测
1.httpchk参数 - option httpchk指令基于http协议来做健康检查,只有返回状态码为
2xx
或3xx
的才认为是健康,其余状态码都认为不健康 - 如果不设置该选项是,默认采用tcp做健康检查,只要能建立tcp连接就表示健康
- option httpchk语法:
1.option httpchk
2.option httpchk: 检查的uri路径,默认为/. 接受带有查询参数的uri
3.option httpchk: http检查使用的方法,建议采用HEAD方法
4.option httpchk: 检查的HTTP协议版本,默认为HTTP/1.0,如果改为HTTP/1.1,还强制要求指定HOST,中间使用\r\n隔离
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
HEAD 头部检查
listen http_proxy 0.0.0.0:80
mode http
balance roundrobin
option httpchk HEAD / HTTP/1.1\r\nHOST:\ proxy.yangyijing.cn #head 减少网络消耗
server web1 172.16.1.7:80 check port 80
server web2 172.16.1.7:80 check port 80
2.基于端口进行检测
- 通过监听端口进行健康检测
- 这种检测方式 haproxy只会去检查后端server的端口,并不能保证服务的真正可用
backend app
balance roundrobin
server app1 192.168.1.254:80 check
server app2 192.168.1.254:81 check