haproxy配置文件解釋(三)

網上找的。。抽空在看看

HAProxy的配置
HAProxy配置中分成五部分內容,當然這些組件不是必選的,可以根據需要選擇部分作爲配置。
global:參數是進程級的,通常和操作系統(OS)相關。這些參數一般只設置一次,如果配置無誤,就不需要再次配置進行修改
defaults:配置默認參數的,這些參數可以被利用配置到frontend,backend,listen組件
frontend:接收請求的前端虛擬節點,Frontend可以根據規則直接指定具體使用後端的      backend(可動態選擇)。
backend:後端服務集羣的配置,是真實的服務器,一個Backend對應一個或者多個實體服務器。
listen:Frontend和Backend的組合體。
 
下面是HAProxy的一些常用的配置,這個配置是用來說明HAProxy的一些常用功能的配置,具體詳細配置請查看安裝目錄下的doc目錄下的文檔文件,或者到” http://cn.haproxy.org/
下載中文配置說明文檔
 
配置文件例子:
global
    #全局的日誌配置 其中日誌級別是[err warning info debug]
    #local0 是日誌設備,必須爲如下24種標準syslog設備的一種:                     
    #kern   user   mail   daemon auth   syslog lpr    news   
    #uucp   cron   auth2  ftp    ntp    audit  alert  cron2  
    #local0 local1 local2 local3 local4 local5 local6 local7 
#但是之前在/etc/syslog.conf文件中定義的是local0所以
    #這裏也是用local0
    log 127.0.0.1 local0 info #[err warning info debug]
    #最大連接數
    maxconn 4096
#用戶
    user admin
    #組
    group admin
    #使HAProxy進程進入後臺運行。這是推薦的運行模式
    daemon
    #創建4個進程進入deamon模式運行。此參數要求將運行模式設置爲"daemon"
    nbproc 4
    #將所有進程的pid寫入文件<pidfile>啓動進程的用戶必須有權限訪問此文件。
    pidfile /home/admin/haproxy/logs/haproxy.pid
 
defaults                
    #默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
    mode http
    #採用http日誌格式
    option httplog
    #三次連接失敗就認爲是服務器不可用,也可以通過後面設置
    retries 3
    #如果cookie寫入了serverId而客戶端不會刷新cookie,
    #當serverId對應的服務器掛掉後,強制定向到其他健康的服務器
    option redispatch
    #當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接
    option abortonclose
    #默認的最大連接數
    maxconn 4096
    #連接超時
    contimeout 5000
    #客戶端超時
    clitimeout 30000
    #服務器超時
    srvtimeout 30000
    #=心跳檢測超時
    timeout check 2000
   
#注:一些參數值爲時間,比如說timeout。時間值通常單位爲毫秒(ms),但是也可以通過加#後綴,來使用其他的單位。
#- us : microseconds. 1 microsecond = 1/1000000 second
#- ms : milliseconds. 1 millisecond = 1/1000 second. This is the default.
#- s  : seconds. 1s = 1000ms
#- m  : minutes. 1m = 60s = 60000ms
#- h  : hours.   1h = 60m = 3600s = 3600000ms
#- d  : days.    1d = 24h = 1440m = 86400s = 86400000ms
 
########統計頁面配置############
listen admin_stats
    #監聽端口
    bind 0.0.0.0:1080
    #http的7層模式
    mode http
    #日誌設置
    log 127.0.0.1 local0 err #[err warning info debug]
    #統計頁面自動刷新時間
    stats refresh 30s
    #統計頁面url
    stats uri /admin?stats
    #統計頁面密碼框上提示文本
    stats realm  Gemini\ Haproxy
    #統計頁面用戶名和密碼設置
    stats auth admin:admin
    stats auth admin1:admin1
    #隱藏統計頁面上HAProxy的版本信息
    stats hide-version
 
#######網站檢測listen定義############
listen site_status
    bind 0.0.0.0:1081
    mode http
    log 127.0.0.1 local0 err #[err warning info debug]
    #網站健康檢測URL,用來檢測HAProxy管理的網站是否可以用,正常返回200,不正
#常返回500
    monitor-uri /site_status
    #定義網站down時的策略
    #當掛在負載均衡上的指定backend的中有效機器數小於1臺時返回true
    acl site_dead   nbsrv(denali_server) lt 1
    acl site_dead   nbsrv(tm_server) lt 1                                                                                                                   
    acl site_dead   nbsrv(mms_server) lt 1
    #當滿足策略的時候返回500
    monitor fail if site_dead
    #如果192.168.0.252或者192.168.0.31這兩天機器掛了
    #認爲網站掛了,這時候返回500,判斷標準是如果mode是
    #http返回200認爲是正常的,如果mode是tcp認爲端口暢通是好的
monitor-net 192.168.0.252/31
 
#############https的配置方法###############
 
listen login_https_server
#綁定HTTPS的443端口
bind 0.0.0.0:443
#https必須使用tcp模式
mode tcp
log global
balance roundrobin
option httpchk GET /member/login.jhtml HTTP/1.1\r\nHost:login.daily.taobao.net
##回送給server的端口也必須是443
server vm94f.sqa   192.168.212.94:443  check port 80 inter 6000 rise 3 fall 3
server v215120.sqa 192.168.215.120:443 check port 80 inter 6000 rise 3 fall 3

 
########frontend配置############
frontend http_80_in
    #監聽端口
    bind 0.0.0.0:80
    #http的7層模式
    mode http
    #應用全局的日誌配置
    log global
    #啓用http的log
    option httplog
    #每次請求完畢後主動關閉http通道,HA-Proxy不支持keep-alive模式
    option httpclose
#如果後端服務器需要獲得客戶端的真實IP需要配置次參數,將可以從Http Header中
#獲得客戶端IP
    option forwardfor
   
    ###########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 
 
 
HA-Proxy的壓力測試結果
簡單的壓力測試採用Apache ab,500併發用戶,10w的請求總數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章