###########HAProxy的日誌記錄內容配置##########
capture request header Host len 40
capture request header Content-Length len 10
capture request header Referer len 200
capture response header Server len 40
capture response header Content-Length len 10
capture response header Cache-Control len 8
####################acl策略定義#########################
#如果請求的域名滿足正則表達式返回true -i是忽略大小寫
acl denali_policy hdr_reg(host) -i ^(www.gemini.taobao.net|my.gemini.taobao.net|auction1.gemini.taobao.net)$
#如果請求域名滿足trade.gemini.taobao.net 返回 true -i是忽略大小寫
acl tm_policy hdr_dom(host) -i trade.gemini.taobao.net
##在請求url中包含sip_apiname=,則此控制策略返回true,否則爲false
acl invalid_req url_sub -i sip_apiname=
##在請求url中存在timetask作爲部分地址路徑,則此控制策略返回true,否則返回false
acl timetask_req url_dir -i timetask
#當請求的header中Content-length等於0時返回 true
acl missing_cl hdr_cnt(Content-length) eq 0
######################acl策略匹配相應###################
##當請求中header中Content-length等於0 阻止請求返回403
block if missing_cl
##block表示阻止請求,返回403錯誤,當前表示如果不滿足策略invalid_req,或者滿足策略timetask_req,則阻止請求。
block if !invalid_req || timetask_req
#當滿足denali_policy的策略時使用denali_server的backend
use_backend denali_server if denali_policy
#當滿足tm_policy的策略時使用tm_server的backend
use_backend tm_server if tm_policy
#reqisetbe關鍵字定義,根據定義的關鍵字選擇backend
reqisetbe ^Host:\ img dynamic
reqisetbe ^[^\ ]*\ /(img|css)/ dynamic
reqisetbe ^[^\ ]*\ /admin/stats stats
#以上都不滿足的時候使用默認mms_server的backend
default_backend mms_server
#HAProxy錯誤頁面設置
errorfile 400 /home/admin/haproxy/errorfiles/400.http
errorfile 403 /home/admin/haproxy/errorfiles/403.http
errorfile 408 /home/admin/haproxy/errorfiles/408.http
errorfile 500 /home/admin/haproxy/errorfiles/500.http
errorfile 502 /home/admin/haproxy/errorfiles/502.http
errorfile 503 /home/admin/haproxy/errorfiles/503.http
errorfile 504 /home/admin/haproxy/errorfiles/504.http
##########backend的設置##############
backend mms_server
#http的7層模式
mode http
#負載均衡的方式,roundrobin平均方式
balance roundrobin
#允許插入serverid到cookie中,serverid後面可以定義
cookie SERVERID
#心跳檢測的URL,HTTP/1.1¥r¥nHost:XXXX,指定了心跳檢測HTTP的版本,XXX爲檢測時請求
#服務器的request中的域名是什麼,這個在應用的檢測URL對應的功能有對域名依賴的話需要設置
option httpchk GET /member/login.jhtml HTTP/1.1\r\nHost:member1.gemini.taobao.net
#服務器定義,cookie 1表示serverid爲1,check inter 1500 是檢測心跳頻率
#rise 3是3次正確認爲服務器可用,fall 3是3次失敗認爲服務器不可用,weight代表權重
server mms1 10.1.5.134:80 cookie 1 check inter 1500 rise 3 fall 3 weight 1
server mms2 10.1.6.118:80 cookie 2 check inter 1500 rise 3 fall 3 weight 2
backend denali_server
mode http
#負載均衡的方式,source根據客戶端IP進行哈希的方式
balance source
#但設置了backup的時候,默認第一個backup會優先,設置option allbackups後
#所有備份服務器權重一樣
option allbackups
#心跳檢測URL設置
option httpchk GET /mytaobao/home/my_taobao.jhtml HTTP/1.1\r\nHost:my.gemini.taobao.net
#可以根據機器的性能不同,不使用默認的連接數配置而使用自己的特殊的連接數配置
#如minconn 10 maxconn 20
server denlai1 10.1.5.114:80 minconn 4 maxconn 12 check inter 1500 rise 3 fall 3
server denlai2 10.1.6.104:80 minconn 10 maxconn 20 check inter 1500 rise 3 fall 3
#備份機器配置,正常情況下備機不會使用,當主機的全部服務器都down的時候備備機會啓用
server dnali-back1 10.1.7.114:80 check backup inter 1500 rise 3 fall 3
server dnali-back2 10.1.7.114:80 check backup inter 1500 rise 3 fall 3
backend tm_server
mode http
#負載均衡的方式,leastconn根據服務器當前的請求數,取當前請求數最少的服務器
balance leastconn
option httpchk GET /trade/itemlist/prepayCard.htm HTTP/1.1\r\nHost:trade.gemini.taobao.ne
server tm1 10.1.5.115:80 check inter 1500 rise 3 fall 3
server tm2 10.1.6.105:80 check inter 1500 rise 3 fall 3
######reqisetbe自定義關鍵字匹配backend部分#######################
backend dynamic
mode http
balance source
option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.taobao.net
server denlai1 10.3.5.114:80 check inter 1500 rise 3 fall 3
server denlai2 10.4.6.104:80 check inter 1500 rise 3 fall 3
backend stats
mode http
balance source
option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.taobao.net
server denlai1 10.5.5.114:80 check inter 1500 rise 3 fall 3
server denlai2 10.6.6.104:80 check inter 1500 rise 3 fall 3
3. HA-Proxy的壓力測試結果
簡單的壓力測試採用Apache ab,500併發用戶,10w的請求總數。
總耗時(s)
TPS(#/sec)
HA-2Node
21.387
4675.61
HA-5Node
27.371
3653.37
HA-2Node爲配置了兩個節點作爲後段的服務節點,HA-5Node爲配置了5個節點作爲後端的服務處理節點。上面結果看到2個節點的HA比5個節點的速度來的快。可以確定的是
HAProxy的性能是跟隨backend的數量增加而下降,所以當backend節點過多時可以考慮通過拆分到多臺HAProxy來提高性能。
5. 相關資源
HAProxy官方網站: http://haproxy.1wt.eu
HAProxy 中文網站 http://cn.haproxy.org/
(Budichina.COM 編號 #194 創建於 2010-03-15 12:07:56)