HAProxy配置日志策略
默認情況下,HAProxy是沒有配置日志的
在centos6.3下默認管理日志的是rsyslog,可以實現UDP日志的接收,將日志寫入文件,寫入數據庫
先檢測rsyslog是否安裝
rpm -q rsyslog
安后在/etc/rsyslog.d/下創建haproxy.conf,內容如下:
1 $ModLOad imudp 2 $UDPServerRun 514 3 local3.* /usr/local/haproxy/logs/haproxy.log 4 local10.* /usr/local/haproxy/logs/haproxy.log
說明下:
imup是模塊名,支持UDP協議
第二行准許514端口接收使用UDP和TCP協議轉發過來的日志,rsyslog默認514端口監聽UDP,也可以將上面的內容寫入/etc/rsyslog文件中
然后修改下/etc/sysconfig/rsyslog文件,修改為:
SYSLOGD_OPTIONS='-c 2 -r -m 0'
-r接收遠程日志
重啟即可 service rsyslog restart
通過HAProxy的ACL規則實現智能負載均衡主要兩個功能
1,通過設置ACL規則檢查客戶端請求是否合法,符合ACL規則,放行,不符合直接中斷請求.
2,符合ACL要求的請求將被提交到后端的backend服務器集群,進而實現基於ACL規則的負載均衡
HAProxy的ACL規則經常使用在frontend段中,語法如下
1 acl 自定義acl名稱 acl方法 -i [匹配的路徑或者方法]
acl方法,HAProxy定義了很多ACL方法,經常使用的有hdr_reg(host),hdr_dom(host),hdr_beg(host),url_sub,url_dir,path_beg,path_end
-i表示不區分大小寫,后邊跟上匹配的路徑或文件或正則表達式
與ACL一起使用的參數還有use_backend,usebackend后面需要跟上一個backend實例名,表示在滿足ACL規則后去請求哪個backend實例,與use_backend對應的還有default_backend參數,表示在沒有滿足ACL條件的時候默認使用哪個backend后端
例如:
1 acl www_policy hdr_reg(host) -i ^(www.z.cn|z.cn) 2 acl bbs_policy hdr_dom(host) -i bbs.z.cn 3 acl url_sub url_sub(host) -i buy_sid= 4 5 6 use_backend server_www if www_policy 7 use_backend server_bbs if bbs_policy 8 use_backend server_app if url_policy 9 default_backend server_cache
這里只是列出了HAProxy配置文件中的ACL部分
說明下:
這里定義了三個ACL規則第一條規則表示客戶端以www.z.cn或者z.cn開頭的域名發送請求的時候則此規則返回true,同理后兩條的意思也這樣
第四第五第六規則定義了三個ACL規則返回true 的時候要調度到哪個后端的backend,例如當用戶請求滿足www_policy規則的時候HAProxy會將用戶的請求直接發往名為server_www的后端,以此類推
不滿足任何一個ACL規則的時候,直接發往default_backend
第四第五第六規則定義了三個ACL規則返回true 的時候要調度到哪個后端的backend,例如當用戶請求滿足www_policy規則的時候HAProxy會將用戶的請求直接發往名為server_www的后端
1 acl url_static path_end .gif .png .jgp .js 2 acl host_www hdr_beg(host) -i www 3 acl host_statuc hdr_beg(host) -i img.video.download.ftp. 4 5 use_backend static if host_static || host_www url_static 6 use_backend www if host_www 7 default-backend server_cache
本實例也是定義了三個ACL規則,其中第一條規則通過psth_end參數定義了如果客戶端在請求的URL中以.gif,.png,.jgp,.js結尾時返回true
第二條說如果以www開頭的域名發送請求時返回true,同理第三條
第四五條規則定義了滿足當前規則的時候調度到哪個后端的backend