HAProxy 日志輸出及配置


正所謂,沒有軟件敢說沒有bug,人無完人,software is  not perfect software。是軟件就可能存在bug,那么如果出現bug,我們就要分析對我們業務的影響及可能如何避免bug的再現。

HAProxy也不例外,也可能在特殊場景下出現bug,因此我們就有必要記錄下必要的日志信息。今天來聊下HAProxy的日志輸出及對應參數配置。

HAProxy支持兩種主要的代理模式:"tcp"也即4層(大多用於郵件服務器、內部協議通信服務器等),和7層(HTTP)。在4層模式 下,HAproxy僅在客戶端和服務器之間轉發雙向流量。7層模式下,HAProxy會分析協議,並且能通過允許、拒絕、交換、增加、修改或者刪除請求 (request)或者回應(response)里指定內容來控制協議,這種操作要基於特定規則。    

說到四層模式及七層模式,我們就要回憶下,在RabbitMQ集群搭建過程中,有沒有使用到四層模式呢?答案是有的,使用TCP協議  進行雙向的通信代理 使用的就是四層協議。

HAProxy配置文件可以分為五部分,在上次RabbitMQ集群搭建也簡單聊了下,

1 global:    全局配置參數段,主要用來控制Haproxy啟動前的進程及系統相關設置
2 defaults:  配置一些默認參數,如果frontend,backend,listen等段未設置則使用defaults段設置
3 listen: 監聽配置
4 frontend:  用來匹配接收客戶所請求的域名,uri等,並針對不同的匹配,做不同的請求處理 
5 backend:  定義后端服務器集群,以及對后端服務器的一些權重、隊列、連接數等選項的設置

 

HAProxy的安裝我們不再介紹,在安裝完畢以后,進行的日志輸出配置:

根據實際需求,更改配置文件,我的配置如下
        global                                    #全局設置
       log 127.0.0.1 local3     #local3是設備,對應於 /etc/rsyslog.conf中的配置,默認回收info的日志級別 
       #log loghost    local0 info
       maxconn 4096                         #最大連接數
       chroot /usr/local/haproxy
       uid 99                                #所屬運行的用戶uid
       gid 99                                #所屬運行的用戶組
       daemon                               #以后台形式運行haproxy
       nbproc 2                             #啟動2個haproxy實例
       pidfile /usr/local/haproxy/haproxy.pid     #將所有進程寫入pid文件
       #debug
       #quiet
 
    defaults                           #默認設置
 
       #log    global
 
       log     127.0.0.1 local3     #日志文件的輸出定向
 
       mode    http                        #默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
 
       option  httplog                     #日志類別,采用httplog
 
       option  dontlognull
 
       option  forwardfor                  #如果后端服務器需要獲得客戶端真實ip需要配置的參數,可以從Http Header中獲得客戶端ip
 
       option  httpclose                   #每次請求完畢后主動關閉http通道,haproxy不支持keep-alive,只能模擬這種模式的實現
 
       retries 3                           #3次連接失敗就認為服務器不可用,主要通過后面的check檢查
 
       option  redispatch                  #當serverid對應的服務器掛掉后,強制定向到其他健康服務器
 
       maxconn 2000                        #最大連接數
 
       stats uri /stats                    #haproxy 監控頁面的訪問地址
                                         瀏覽器中輸入haproxy監控地址:http://10.10.100.39/stats查看狀態
 
       contimeout      5000                #連接超時時間
 
       clitimeout      50000               #客戶端連接超時時間
 
       srvtimeout      50000               #服務器端連接超時時間
 
      stats auth  admin:admin              #設置監控頁面的用戶和密碼:Frank
 
      stats hide-version                   #隱藏統計頁面的HAproxy版本信息
 
 
 
frontend http-in                            #前台
 
       bind *:80
 
       mode    http
 
       option  httplog
 
       log     global
       
       acl web1 hdr(host) -i www.9888.cn 9888.cn
      #acl后面是規則名稱,-i是要訪問的域名,如果訪問www.9888.cn 這個域名就分發到下面的webserver1 的作用域。
       
        use_backend webserver1 if web1

backend webserver1                                #后台
     mode http
     balance   roundrobin                         #負載均衡算法
     option  httpchk /index.html                  #健康檢查
     server     web01 10.10.100.41:80  check cookie 1 inter 2000 fall 3 weight 30
     server     web02 10.10.100.18:80  check cookie 2 inter 2000 fall 3 weight 30
  #cookie 1表示serverid為1,check inter 1500 是檢測心跳頻率
  #rise 2是2次正確認為服務器可用,fall 3是3次失敗認為服務器不可用,weight代表權重.   

 

對於Centos,日志級別分別為:

Centos6.x中變成了:/etc/init.d/rsyslog
在配置前,我們先來了解下日志的level: local0~local7 16~23保留為本地使用
emerg 0       系統不可用
alert 1       必須馬上采取行動的事件
crit 2        關鍵的事件
err 3        錯誤事件
warning 4      警告事件
notice 5      普通但重要的事件
info 6       有用的信息
debug 7      調試信息

 

2.編輯系統日志文件配置 vim /etc/rsyslog.conf

在文件末尾追加:local0.*                      /var/log/haproxy/haproxy.log

3、創建HAProxy記錄日志文件 並授權

mkdir /var/log/haproxy && chmod a+w /var/log/haproxy

4.配置rsyslog的配置文件,開啟遠程日志

vim /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS=”-c 2 -r -m 0

5.配置完成后,配置完成后重啟haproxy和rsyslog服務
/etc/init.d/rsyslog restart
/etc/init.d/haproxy restart

請注意:采用的Linux 系統版本是Centos 6.5

 

至此,可以正常的輸出HAProxy運行日志,在出現故障或查看運行情況時,可查看該日志文件;另外我們可以根據需要靈活的調整日志輸出級別及輸出目錄。


免責聲明!

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



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