HAProxy的高級配置選項-配置haproxy的狀態頁
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
HAProxy的狀態頁要比nginx的狀態頁要好看點。不僅如此,HAProxy的狀態頁顯示的內容也要比Nginx豐富喲,接下來就跟着我來配置一下吧。
一.配置HAProxy狀態頁相關參數
stats enable
基於默認的參數啟用狀態頁(stats page)
一旦啟用了狀態頁功能,咱們就可以自定義狀態頁的一些基礎配置,常見的配置參數如下所示: stats hide-version
隱藏版本,即不添加該參數默認會顯示haproxy的版本信息喲。
stats refresh <delay>
設定自動刷新時間間隔,即設置狀態頁面自動刷新的間隔時間,若不配置可能就得我們手動刷新當前頁面了。
stats uri <prefix>
自定義訪問狀態也的uri(stats page uri),默認值:/haproxy?stats
stats realm <realm>
賬戶認證時的提示信息,例如:stats realm : HAProxy\Statistics
stats auth <user>:<passwd>
認證時的賬號和密碼,可使用多次,默認不啟用認證方式(no authentication)。
stats refresh 5s
定義頁面自動刷新間隔時間。
stats admin { if | unless } <cond>
啟用stats page中的管理功能,即我們可以通過網頁的點鼠標的方式來管理后端的服務器。
二.配置HAProxy狀態頁實戰
1>.編輯haproxy的配置文件
[root@node102.yinzhengjie.org.cn ~]# cat /etc/haproxy/haproxy.cfg global maxconn 100000 chroot /yinzhengjie/softwares/haproxy stats socket /yinzhengjie/softwares/haproxy/haproxy.sock mode 600 level admin user haproxy group haproxy daemon nbproc 2 cpu-map 1 0 cpu-map 2 1 nbthread 2 pidfile /yinzhengjie/softwares/haproxy/haproxy.pid log 127.0.0.1 local5 info defaults option http-keep-alive option forwardfor option redispatch option abortonclose maxconn 100000 mode http timeout connect 300000ms timeout client 300000ms timeout server 300000ms listen status_page bind 172.30.1.102:8888 stats enable stats uri /haproxy-status stats auth admin:yinzhengjie stats realm "Welcome to the haproxy load balancer status page of YinZhengjie" listen WEB_PORT_80 bind 172.30.1.102:80 balance roundrobin cookie HAPROXY-COOKIE insert indirect nocache server web01 172.30.1.106:80 cookie httpd-106 check inter 3000 fall 3 rise 5 server web02 172.30.1.107:80 cookie httpd-107 check inter 3000 fall 3 rise 5 server web03 172.30.1.108:80 cookie httpd-107 check inter 3000 fall 3 rise 5 backup [root@node102.yinzhengjie.org.cn ~]#
2>.啟動haproxy服務
[root@node102.yinzhengjie.org.cn ~]# ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 128 :::22 :::* [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# systemctl start haproxy [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 172.30.1.102:80 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 172.30.1.102:8888 *:* LISTEN 0 128 :::22 :::* [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]#
三.驗證HAProxy狀態頁
1>.通過瀏覽器訪問"http://node102.yinzhengjie.org.cn:8888/haproxy-status"並輸入在haproxy配置文件中定義的認證用戶名和密碼,如下圖所示。
2>.狀態頁面參數說明-General process information
pid = 12190 (process #1, nbproc = 2, nbthread = 2) pid為當前pid號,process為當前進程號,nbproc和nbthread為一共多少進程和每個進程多少個線程 uptime = 0d 0h11m18s 啟動了多長時間 system limits: memmax = unlimited; ulimit-n = 200041 系統資源限制:內存/最大打開文件數/ maxsock = 200041; maxconn = 100000; maxpipes = 0 最大socket連接數/單進程最大連接數/最大管道數maxpipes。 溫馨提示:這里顯示的最大連接數是在配置haproxy參數中設定的,但千萬別忘記了在Linux操作系統中修改最大連接數(使用ulimit命令)喲~ current conns = 1; current pipes = 0/0; conn rate = 1/sec 當前連接數/當前管道數/當前連接速率 溫馨提示:生產環境中我們應該監控haproxy當前連接數的值(current conns)。 Running tasks: 1/8; idle = 100 % 運行的任務/當前空閑率 active UP: 在線服務器,如下圖所示,web01和web02是在線狀態(注意觀察這兩行的背景顏色)。 backup UP: 標記為backup的服務器,如下圖所示,web03是backup狀態(這是因為我們在配置文件中使用backup關鍵字標記了它為備份狀態,注意觀察改行的背景顏色),也就是說當web01和web02同時掛掉后web03才會被響應客戶請求。 active UP, going down: 監測未通過正在進入down過程,我們是通過check指令來對后端服務器進行狀態監測的。 backup UP, going down: 備份服務器監測未通過正在進入down過程。 active DOWN, going up: down的服務器正在進入up過程。 backup DOWN, going up: 備份服務器正在進入up過程。 active or backup DOWN: 在線的服務器或者是backup的服務器已經轉換成了down狀態。 not checked: 標記為不監測的服務器,我們可以手動將check指令的參數注釋掉,則表示當前節點被標記為不監測的服務器狀態啦。 active or backup DOWN for maintenance (MAINT) active或者backup服務器認為下線的。 溫馨提示:我們可以通過socat工具(echo "disable server WEB_PORT_80/web01" | socat stdio /yinzhengjie/softwares/haproxy/haproxy.sock)來讓haproxy節點下線,但是在多進程的情況下我們發現有的進程將后端服務器標記為down狀態,有的進程卻沒有將后端服務器標記為down狀態,這是為什么呢?(解決辦法就是通知每一個進程將指定的后端服務器標記為down狀態,在這里請允許我先賣個關子,在后面的筆記會為大家揭曉答案)。 active or backup SOFT STOPPED for maintenance active或者backup被認為軟下線(我們可以通過使用socat命令對haproxy的套接字發送指令讓某台節點的權重為0,從而該節點將變為down狀態。但是只要重啟haproxy服務那么通過socat工具的所有操作都會被清空,即還原到haproxy配置文件的狀態)。 關於后端服務器檢測相關參數,博主推薦閱讀: https://www.cnblogs.com/yinzhengjie/p/12114081.html
3>.反向代理節點的相關參數說明

[root@node102.yinzhengjie.org.cn ~]# cat /etc/haproxy/haproxy.cfg #生產環境中配置haproxy狀態頁實戰案例 global maxconn 100000 chroot /yinzhengjie/softwares/haproxy stats socket /yinzhengjie/softwares/haproxy/haproxy.sock mode 600 level admin user haproxy group haproxy daemon nbproc 2 cpu-map 1 0 cpu-map 2 1 nbthread 2 pidfile /yinzhengjie/softwares/haproxy/haproxy.pid log 127.0.0.1 local5 info defaults option http-keep-alive option forwardfor option redispatch option abortonclose maxconn 100000 mode http timeout connect 300000ms timeout client 300000ms timeout server 300000ms listen status_page bind 172.30.1.102:8888 stats enable stats uri /haproxy-status stats auth admin:yinzhengjie stats realm "Welcome to the haproxy load balancer status page of YinZhengjie" stats hide-version stats admin if TRUE stats refresh 5s listen WEB_PORT_80 bind 172.30.1.102:80 balance roundrobin cookie HAPROXY-COOKIE insert indirect nocache server web01 172.30.1.106:80 cookie httpd-106 check inter 3000 fall 3 rise 5 server web02 172.30.1.107:80 cookie httpd-107 check inter 3000 fall 3 rise 5 server web03 172.30.1.108:80 cookie httpd-107 check inter 3000 fall 3 rise 5 backup [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# systemctl restart haproxy #別忘記重啟haproxy使得配置文件生效。 [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]#

session rate:
每秒的連接會話信息,它還包括了以下詳細參數:
cur:
每秒的當前會話數量
max:
每秒新的最大會話數量
limit:
每秒新的會話限制量
sessions:
會話信息,它還包括了以下詳細參數:
cur:
當前會話量
max:
最大會話量
limit:
限制會話量
Total:
總共會話量
LBTot:
選中一台服務器所用的總時間
Last:
和服務器的持續連接時間
Bytes:
流量統計,它還包括了以下詳細參數:
In:
網絡的字節輸入總量
Out:
網絡的字節輸出總量
Denied:
拒絕統計信息,它還包括了以下詳細參數:
Req:
拒絕請求量
Resp:
拒絕回復量
Errors:
錯誤統計信息,它還包括了以下詳細參數:
Req:
錯誤請求量
conn:
錯誤鏈接量
Resp:
錯誤響應量
Warnings:
警告統計信息,它還包括了以下詳細參數:
Retr:
重新嘗試次數
Redis:
再次發送次數
Server:
后端服務器(real server)監控信息,它還包括了以下詳細參數:
Status:
后端機的狀態,包括UP和DOWN
LastChk:
持續檢查后端服務器的時間
Wght:
權重
Act:
活動鏈接數量
Bck:
備份的服務器數量
Chk:
心跳檢測時間
Dwn:
后端服務器連接后都是DOWN的數量
Dwntme:
總的downtime時間
Thrtle:
server 狀態