HAProxy負載均衡器的配置與算法

雖然咱們看HAProxy的官方文檔確實配置內容比較多,但其實咱們用於線上環境,僅此幾條就夠用了,這也是你們說HAProxy簡單的緣由,HAProxy的對應配置文件以下所示: html

global   linux

        log 127.0.0.1   local0   web

        maxconn 4096   redis

        chroot /usr/local/haproxy   算法

        uid 99    vim

        gid 99   後端

        daemon   服務器

        nbproc 1   cookie

        pidfile /usr/local/haproxy/logs/haproxy.pid   架構

        debug  

 

defaults  

        log     127.0.0.1       local3  

        mode    http  

        option httplog  

        option httpclose  

        option dontlognull  

        option forwardfor  

        option redispatch  

        retries 2  

        maxconn 2000  

        balance source  

        stats   uri     /haproxy-stats  

        contimeout      5000  

        clitimeout      50000  

        srvtimeout      50000  

 

 listen 1paituan_proxy 203.93.236.149:80  

        option httpchk HEAD /index.jsp HTTP/1.0  

        server web1  203.93.236.147:80 cookie app1inst1 check inter 2000 rise 2 fall 1  

     server web2  203.93.236.146:80 cookie app1inst2 check inter 2000 rise 2 fall 1 

加上日誌支持,以下所示:

#vim /etc/syslog.conf  

 

添加:  

 

local3.*        /var/log/haproxy.log  

local0.*        /var/log/haproxy.log  

 

#vim /etc/sysconfig/syslog  

 

修改:  

 

SYSLOGD_OPTIONS="-r -m 0" 

service syslog restart 

這裏要注意的幾個地方是:

1、HAProyx採用的是balance source機制,它跟LVS的persistent和Nginx的ip_hash同樣,是讓客戶機訪問時始終訪問後端的某一臺真實的web服務器;

2、203.93.236.149是個人網站經過Keepalived生成的VIP地址;

3、 option httpchk HEAD /index.jsp HTTP/1.0 是網頁臨近,若是HAProxy檢測不到Web的根目錄下沒有index.jsp,就會產生503報錯。

HAProxy+keepalived/Heartbeat是我網站的第二套方案,由於剛開始網站上的LVS+Keepalived高可用架構,後來幾個朋友說用手機測試時,轉發很慢,有時打不開,甚有的電腦也是這樣,我嘗試瞭如下確實如此;因此用了Nginx+Keepalived之後發現轉發速度確實快多了,手機上一拍網也沒有這個問題了,因爲Nginx+Keepalived在東莞的客戶那裏已經部署得很成功了,因此後期我也考慮將此網站設計成HAProyx+Keepalived這種架構的。

HAProxy的算法有以下8種:

1、roundrobin,表示簡單的輪詢,這個很少說,這個是負載均衡基本都具有的;

2、static-rr,表示根據權重,建議關注;

3、leastconn,表示最少鏈接者先處理,建議關注;

4、source,表示根據請求源IP,建議關注;

5、uri,表示根據請求的URI;

6、url_param,表示根據請求的URl參數'balance url_param' requires an URL parameter name

7、hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;

8、rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。

其實這些算法各有各的用法,咱們平時應用得比較多的應該是roundrobin、source和lestconn,你們能夠重點關注下。這裏我用HAProxy+Keepalived時沒有考慮HAProxy進程級別的高HA,一來是由於淘寶也在用它做爲負載均衡器,穩定性確定不須要懷疑;二來在測試時發現確實至關的穩定,殺掉HAProxy進程還必須用kill -9,因此沒有在這上面浪費時間了;在測試時也確實考慮過用HAProxy+Keepalived作雙主架構,後來發現不是太好維護就算了。

有一點要提醒你們,HAProxy是支持虛擬主機的,我之前看過有些朋友說它是不支持的,這個其實很好驗證,咱們作個1+1的架構,後面隨便放臺Nginx或Aapceh的web服務器就可能驗證這種說法了;另外,通過與Nginx的正則對比,咱們也確實發現HAProxy的正則處理能力上不如Nginx的強大和靈活的,咱們這裏也能夠採起一個折衷的方案,後面的web服務器咱們都用Nginx來做,若是是jsp應用,能夠用Nginx+tomat,若是是跑PHP的,能夠用Nginx+FastCGI(PHP5)。

餘洪春(撫琴煮酒),《構建高性能的Linux服務器》一書做者,一拍網系統架構師、資深項目管理工程師,ChinaUnix集羣和高可用版版主。

REF: 

基於Keepalived+Haproxy搭建四層負載均衡器

http://www.linuxde.net/2013/04/13263.html

相關文章
相關標籤/搜索