HAProxy安裝配置

三大主流軟件負(fù)載均衡器對(duì)比(LVS VS Nginx VS Haproxy)

LVS:
1、抗負(fù)載能力強(qiáng)??关?fù)載能力強(qiáng)、性能高,能達(dá)到F5硬件的60%;對(duì)內(nèi)存和cpu資源消耗比較低
2、工作在網(wǎng)絡(luò)4層,通過(guò)vrrp協(xié)議轉(zhuǎn)發(fā)(僅作分發(fā)之用),具體的流量由linux內(nèi)核處理,因此沒(méi)有流量的產(chǎn)生
3、穩(wěn)定性、可靠性好,自身有完美的熱備方案;(如:LVS+Keepalived)
4、應(yīng)用范圍比較廣,可以對(duì)所有應(yīng)用做負(fù)載均衡;
5、不支持正則處理,不能做動(dòng)靜分離。
6、支持負(fù)載均衡算法:rr(輪循)、wrr(帶權(quán)輪循)、lc(最小連接)、wlc(權(quán)重最小連接)
7、配置 復(fù)雜,對(duì)網(wǎng)絡(luò)依賴(lài)比較大,穩(wěn)定性很高。
Ngnix:
1、工作在網(wǎng)絡(luò)的7層之上,可以針對(duì)http應(yīng)用做一些分流的策略,比如針對(duì)域名、目錄結(jié)構(gòu);
2、Nginx對(duì)網(wǎng)絡(luò)的依賴(lài)比較小,理論上能ping通就就能進(jìn)行負(fù)載功能;
3、Nginx安裝和配置比較簡(jiǎn)單,測(cè)試起來(lái)比較方便;
4、也可以承擔(dān)高的負(fù)載壓力且穩(wěn)定,一般能支撐超過(guò)1萬(wàn)次的并發(fā);
5、對(duì)后端服務(wù)器的健康檢查,只支持通過(guò)端口來(lái)檢測(cè),不支持通過(guò)url來(lái)檢測(cè)。
6、Nginx對(duì)請(qǐng)求的異步處理可以幫助節(jié)點(diǎn)服務(wù)器減輕負(fù)載;
7、Nginx僅能支持http、https和Email協(xié)議,這樣就在適用范圍較小。
8、不支持Session的直接保持,但能通過(guò)ip_hash來(lái)解決。、對(duì)Big request header的支持不是很好,
9、支持負(fù)載均衡算法:Round-robin(輪循)、Weight-round-robin(帶權(quán)輪循)、Ip-hash(Ip哈希)
10、Nginx還能做Web服務(wù)器即Cache功能。
HAProxy的特點(diǎn)是:
1、支持兩種代理模式:TCP(四層)和HTTP(七層),支持虛擬主機(jī);
2、能夠補(bǔ)充N(xiāo)ginx的一些缺點(diǎn)比如Session的保持,Cookie的引導(dǎo)等工作
3、支持url檢測(cè)后端的服務(wù)器出問(wèn)題的檢測(cè)會(huì)有很好的幫助。
4、更多的負(fù)載均衡策略比如:動(dòng)態(tài)加權(quán)輪循(Dynamic Round Robin),加權(quán)源地址哈希(Weighted Source Hash),
加權(quán)URL哈希和加權(quán)參數(shù)哈希(Weighted Parameter Hash)已經(jīng)實(shí)現(xiàn)
5、單純從效率上來(lái)講HAProxy更會(huì)比Nginx有更出色的負(fù)載均衡速度。
6、HAProxy可以對(duì)Mysql進(jìn)行負(fù)載均衡,對(duì)后端的DB節(jié)點(diǎn)進(jìn)行檢測(cè)和負(fù)載均衡。
9、支持負(fù)載均衡算法:Round-robin(輪循)、Weight-round-robin(帶權(quán)輪循)、source(原地址保持)、
RI(請(qǐng)求URL)、rdp-cookie(根據(jù)cookie)
10、不能做Web服務(wù)器即Cache。

三大主流軟件負(fù)載均衡器適用業(yè)務(wù)場(chǎng)景:
1、網(wǎng)站建設(shè)初期,可以選用Nigix/HAproxy作為反向代理負(fù)載均衡(或者流量不大都可以不選用負(fù)載均衡),因?yàn)槠渑渲煤?jiǎn)單,性能也能滿(mǎn)足一般的業(yè)務(wù)場(chǎng)景。如果考慮到負(fù)載均衡器是有單點(diǎn)問(wèn)題,可以采用Nginx+Keepalived/HAproxy+Keepalived避免負(fù)載均衡器自身的單點(diǎn)問(wèn)題。
2、網(wǎng)站并發(fā)達(dá)到一定程度之后,為了提高穩(wěn)定性和轉(zhuǎn)發(fā)效率,可以使用LVS、畢竟LVS比Nginx/HAproxy要更穩(wěn)定,轉(zhuǎn)發(fā)效率也更高。不過(guò)維護(hù)LVS對(duì)維護(hù)人員的要求也會(huì)更高,投入成本也更大。

注:Niginx與Haproxy比較:Niginx支持七層、用戶(hù)量最大,穩(wěn)定性比較可靠。Haproxy支持四層和七層,支持更多的負(fù)載均衡算法,支持session保存等。具體選型看使用場(chǎng)景,目前來(lái)說(shuō)Haproxy由于彌補(bǔ)了一些Niginx的缺點(diǎn)用戶(hù)量也不斷在提升。

下述將選擇Haproxy作為負(fù)載均衡器進(jìn)行安裝配置,本次使用環(huán)境:
環(huán)境centos7.3
Haproxy 1.7.5
1.下載
wget http://www.haproxy.org/download/1.7/src/haproxy-1.7.5.tar.gz
2.解壓
tar -zxvf haproxy-1.7.5.tar.gz
cd haproxy-1.7.5
3.安裝
make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

參數(shù)說(shuō)明
TARGET=linux26 #內(nèi)核版本,使用uname -r查看內(nèi)核,如:2.6.18-371.el5,此時(shí)該參數(shù)就為linux26;kernel 大于2.6.28的
用:TARGET=linux2628
ARCH=x86_64 #系統(tǒng)位數(shù)
PREFIX=/usr/local/haprpxy  #/usr/local/haprpxy為haprpxy安裝路徑

4.配置
安裝完成后需要自己手動(dòng)創(chuàng)建配置文件
cd /usr/local/haproxy #進(jìn)入haproxy安裝目錄
touche haproxy.cfg #創(chuàng)建配置文件
vi haproxy.cfg #編輯配置文件
以下是配置文件具體內(nèi)容:

global
    log 127.0.0.1 local1
    maxconn 65000             #最大連接數(shù)
#    chroot /usr/local/haproxy #安裝目錄
#    uid haproxy                  #用戶(hù)haproxy
#    gid haproxy                  #組haproxy
    daemon                    #守護(hù)進(jìn)程運(yùn)行
    nbproc 1                  #進(jìn)程數(shù)量
#    pidfile /usr/local/haproxy/logs/haproxy.pid #haproxy pid

defaults
   log     global
   mode    http               #7層#默認(rèn)的模式mode {tcp|http|health},tcp是4層,http是7層,health只會(huì)返回OK
   option  httplog            #http 日志格式
   option  httpclose          #主動(dòng)關(guān)閉http通道,HA-Proxy不支持keep-alive模式
   option  redispatch         #serverId對(duì)應(yīng)的服務(wù)器掛掉后,強(qiáng)制定向到其他健康的服務(wù)器
   option  forwardfor except 127.0.0.1/8 #后端服務(wù)器需要獲得客戶(hù)端的真實(shí)IP,將從Http Header中獲得客戶(hù)端IP
   option  dontlognull    #來(lái)防止記錄 Alteo(4層負(fù)載均衡)發(fā)出的健康檢測(cè),如果一個(gè) session 交互沒(méi)有
                                     #數(shù)據(jù),這個(gè) session就不會(huì)被記錄
   retries  3
   maxconn 50000              #最大連接數(shù)
   timeout http-request 10s
   timeout queue  1m
   timeout connect 10s
   timeout client  1m
   timeout server  1m
   timeout http-keep-alive 10s
   timeout check 10s

   #errorfile 502 /usr/local/haproxy/html/maintain.html
   #errorfile 503 /usr/local/haproxy/html/maintain.html
   #errorfile 504 /usr/local/haproxy/html/maintain.html

   frontend main
        bind *:80             #監(jiān)聽(tīng)地址
        acl url_static       path_beg       -i /static /images /javascript /stylesheets
        acl url_static       path_end       -i .jpg .gif .png .css .js
        use_backend static     if url_static
        default_backend   my_webserver     #定義一個(gè)名為my_app前端部分。此處將對(duì)于的請(qǐng)求轉(zhuǎn)發(fā)給后端
        backend static  #使用了靜態(tài)動(dòng)態(tài)分離(如果url_path匹配 .jpg .gif .png .css .js靜態(tài)文件則訪問(wèn)此后端)
        balance roundrobin     #負(fù)載均衡算法(#banlance roundrobin 輪詢(xún))
        server   static 127.0.0.1:80 check  #靜態(tài)文件部署在本機(jī)(也可以部署在其他機(jī)器或者squid緩存服務(wù)器

backend my_webserver
        mode http
        option  forwardfor
        balance roundrobin
        cookie  SERVERID
        option  httpchk HEAD /index.html
        server  web01 192.168.131.42:80 cookie web01 check inter 2000 rise 3 fall 3 weight 3
        server  web02 192.168.131.46:80 cookie web02 check inter 2000 rise 3 fall 3 weight 3  

5.啟動(dòng)
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容