通過HAProxy的ACL規(guī)則實現智能負載均衡
由于HAProxy可以工作在七層模型下尖阔, 因此恢共,要實現HAProxy的強大功能浸锨,一定要使用強大靈活的ACL規(guī)則唇聘,通過ACL規(guī)則可以實現基于HAProxy的智能負載均衡系統(tǒng)。HAProxy通過ACL規(guī)則完成兩種主要的功能柱搜,分別是:
1)通過設置的ACL規(guī)則檢查客戶端請求是否合法迟郎。如果符合ACL規(guī)則要求,那么就將放行聪蘸,反正宪肖,如果不符合規(guī)則,則直接中斷請求健爬。
2)符合ACL規(guī)則要求的請求將被提交到后端的backend服務器集群控乾,進而實現基于ACL規(guī)則的負載均衡。
HAProxy中的ACL規(guī)則經常使用在frontend段中娜遵,使用方法如下:
acl??自定義的acl名稱??acl方法??-i??[匹配的路徑或文件]
其中:
acl:是一個關鍵字蜕衡,表示定義ACL規(guī)則的開始。后面需要跟上自定義的ACL名稱 设拟。
acl方法:這個字段用來定義實現ACL的方法慨仿,HAProxy定義了很多ACL方法,經常使用的方法有hdr_reg(host)纳胧、hdr_dom(host)镰吆、hdr_beg(host)、url_sub跑慕、url_dir万皿、path_beg、path_end等相赁。
-i:表示忽略大小寫相寇,后面需要跟上匹配的路徑或文件或正則表達式。
與ACL規(guī)則一起使用的HAProxy參數還有use_backend钮科,use_backend后面需要跟上一個backend實例名唤衫,表示在滿足ACL規(guī)則后去請求哪個backend實例,與use_backend對應的還有default_backend參數绵脯,它表示在沒有滿足ACL條件的時候默認使用哪個后端backend佳励。
下面列舉幾個常見的ACL規(guī)則例子:
acl?www_policy?hdr_reg(host)?-i?^(www.z.cn|z.cn)
acl?bbs_policy?hdr_dom(host)?-i??bbs.z.cn
acl?url_policy?url_sub?-i??buy_sid=
use_backend?server_wwwifwww_policy
use_backend?server_appifurl_policy
use_backend?server_bbsifbbs_policy
default_backend?server_cache
一個動靜分離的例子
acl url_static path_beg -i/data/static/images/javascript/stylesheets#url開頭為這些的靜態(tài)內容
acl?url_static?path_end?-i?.jpg?.gif?.png?.css?.js?.html?.ico#url結尾帶為這些的靜態(tài)內容
use_backend?staserifurl_static#如果靜態(tài)內容符合url_static的條件休里,就調度到staser中的服務器
default_backend?????????????dyser#其他默認調度到dyser中的服務器