正所謂,沒有軟體敢說沒有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集群搭建也簡單聊了下,
1global
: 全域性配置引數段,主要用來控制haproxy啟動前的程序及系統相關設定
2defaults: 配置一些預設引數,如果frontend,backend,listen等段未設定則使用defaults段設定
3listen: 監聽配置
4frontend: 用來匹配接收客戶所請求的網域名稱,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是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 監控頁面的訪問位址
檢視狀態
contimeout
5000
#連線超時時間
clitimeout
50000
#客戶端連線超時時間
srvtimeout
50000
#伺服器端連線超時時間
stats auth admin:admin #設定監控頁面的使用者和密碼:frank
stats hide-version #隱藏統計頁面的haproxy版本資訊
#前台
.cn #acl後面是規則名稱,-i是要訪問的網域名稱,如果訪問www.9888
.cn 這個網域名稱就分發到下面的webserver1 的作用域。
use_backend webserver1
ifweb1
backend webserver1 #後台
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/rsyslogsyslogd_options=」-c 2 -r -m 0″
5.配置完成後,配置完成後重啟haproxy和rsyslog服務
/etc/init.d/rsyslog restart
/etc/init.d/haproxy restart
請注意:採用的linux 系統版本是centos 6.5
至此,可以正常的輸出haproxy執行日誌,在出現故障或檢視運**況時,可檢視該日誌檔案;另外我們可以根據需要靈活的調整日誌輸出級別及輸出目錄。
haproxy日誌配置
aproxy配置日誌策略 預設情況下,haproxy是沒有配置日誌的 在centos6.3下預設管理日誌的是rsyslog,可以實現udp日誌的接收,將日誌寫入檔案,寫入資料庫 先檢測rsyslog是否安裝 rpm q rsyslog 安後在 etc rsyslog.d 下建立haproxy.con...
HAProxy的日誌配置策略
預設情況下,haproxy是沒有配置日誌的,在centos7.2 下預設管理日誌的是rsyslog,可以實現udp日誌的接收,將日誌寫入檔案,寫入資料庫 先檢測rsyslog是否安裝 root localhost rpm q rsyslog rsyslog 7.4.7 12.el7.x86 64 安...
haproxy安裝及配置
一 haproxy簡介 haproxy是乙個使用c語言編寫的自由及開放源 軟體 1 其提供 高可用性 負載均衡 以及基於 tcp和 http 的應用程式 haproxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。haproxy執行在當前的硬體上,完全可以支援數以萬計的 ...