HAProxy的高級配置選項-配置haproxy的狀態頁


               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 ~]# 
[root@node102.yinzhengjie.org.cn ~]# cat /etc/haproxy/haproxy.cfg           #生產環境中配置haproxy狀態頁實戰案例(別忘記重啟haproxy使得配置生效,可以看到如下圖所示的效果)
  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 狀態

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM