HAProxy的日志配置以及ACL規則實現負載均衡


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

 


免責聲明!

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



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