HAProxy有三種狀態檢測方式:
1.基於四層的傳輸端口作狀態監測
2.基於指定的uri作狀態監測
3.基於指定的URI的resquest請求頭部內容作狀態監測php
四層傳輸時能夠基於ip或者port作監測,也能夠將ip和port監測在後端服務器上的另外一個地址和端口用來實現數據通道和監測通道的分離
示例:
1.修改配置文件html
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg frontend web bind 172.20.27.20:80 mode tcp use_backend web_server backend web_server server web1 192.168.27.21 check addr 192.168.27.21 port 80 inter 3s fall 3 rise 5 server web2 192.168.27.22 check addr 192.168.27.22 port 80 inter 3s fall 3 rise 5
測試
將web1的nginx服務中止nginx
[root@localhost ~]# nginx -s stop
查看狀態頁面
web
指定uri作狀態監測是,在後端服務器上創建一個用戶沒法訪問到的頁面,而後再haproxy上對此頁面作監測,若是能訪問到此頁面則表示後端服務器正常
示例:
1.在web2上建立一個moniter-page,僅用於探測,不給用戶鏈接vim
[root@web2 ~]# mkdir /apps/nginx/html/monitor-page [root@web2 ~]# echo ojbk > /apps/niginx/html/monitor-page/index.php #網頁文件建立在用戶沒法訪問到的地方
2.修改haproxy配置文件後端
frontend web bind 172.20.27.20:80 mode http use_backend web_server option httpchk GET /monitor-page/index.html HTTP/1.0 #添加須要監測的uri backend web_server server web1 192.168.27.21 check addr 192.168.27.21 port 80 inter 3s fall 3 rise 5 server web2 192.168.27.22 check addr 192.168.27.22 port 80 inter 3s fall 3 rise 5
查看狀態頁面
GET的監測方式存在一點問題,若是頁面文件很大,頁面每隔幾面就須要完整的傳輸一次,這樣就形成了沒必要要的了網絡消耗,因此將探測方式改成只查看請求頭部內容作狀態監測bash
基於uri的request請求頭部的狀態作監測和url作監測相似
示例:
1.修改haproxy的配置文件服務器
listen web bind 172.20.27.20:80 mode http option httpchk HEAD /monitor-page/index.html HTTP/1.0 #改成監測HEAD只監測頁面的狀態 server web1 192.168.27.21:80 weight 1 check inter 3s fall 3 rise 5 server web2 192.168.27.22:80 weight 1 check inter 3s fall 3 rise 5
2.在web1上建立監測文件網絡
[root@web1 ~]# echo ojbk > /apps/nginx/html/monitor-page/index.html
3.查看狀態
注意:用於探測的頁面須要和開發進行協商,不然可能形成頁面的丟失,將後端服務器所有down形成事故app