HAproxy+keepalived安裝配置教程

  

1、四層和七負載均衡的區正則表達式

 

 

所謂層就ISO模型載均是 經過IPTCP/UDP層的的基IP端口見的基於負 載均衡器LVSF5等。redis

以常TCP負載個來戶端SYN時,通 過設擇一,同目標IP址修端 服IP給該個負程來看一個TCP端和立的而負了一路由 器的載均端服正確負載均衡時可源地程下算法

 

wKiom1ehnlPyTHtVAADAuOS47ms038.jpg-wh_50

 

同理,七層負載均衡器也稱爲七層交換機,位於 OSI 的最高層,即應用層,此時負載均衡器支持多種應用協議,常見的有 HTTP、FTP、SMTP 等。七層負載均衡器能夠根據報文內 容,再配合負載均衡算法來選擇後端服務器,所以也稱爲「內容交換器」。好比,對於 Web 服務器的負載均衡,七層負載均衡器不但能夠根據「IP+端口」的方式進行負載分流,還能夠根據網站的 URL、訪問域名、瀏覽器類別、語言等決定負載均衡的策略。例如,有兩臺 Web 服務器分別對應中英文兩個網站,兩個域名分別是 A、B,要實現訪問 A 域名時進入中 文網站,訪問 B 域名時進入英文網站,這在四層負載均衡器中幾乎是沒法實現的,而七層負 載均衡能夠根據客戶端訪問域名的不一樣選擇對應的網頁進行負載均衡處理。常見的七層負載均衡器有 HAproxy、Nginx 等。後端

 

這裏常見TCP應用器要獲取內容所以只能代替後端到客戶端該 報文均衡算法部服務器觀 整個,七層器在個代以下瀏覽器

 

wKioL1ehnlSAiWilAACxrcBzj6o775.jpg-wh_50 

 

對比負載能夠看出模式服務器

負載端的TCP鏈接層負載均下, 僅建立一TCP此可衡對負載層負均 衡的四層cookie

 

 

2、HAProxyLVS的異同網絡

 

種負一個結:app

1)二者都是軟件負載均衡產品,可是LVS是基於Linux操做系統實現的一種軟負載均衡,而HAProxy是基於第三應用實現的軟負載均衡。負載均衡


2)LVS是基於四層的IP負載均衡技術,而HAProxy是基於四層和七層技術、可提供TCP和HTTP應用的負載均衡綜合解決方案。


3)LVS工做在ISO模型的第四層,所以其狀態監測功能單一,而HAProxy在狀態監測 方面功能強大,可支持端口、URL、腳本等多種狀態檢測方式。


4)HAProxy雖然功能強大,可是總體處理性能低於四層模式的LVS負載均衡,而LVS擁有接近硬件設備的網絡吞吐和鏈接負載能力。

 

綜上所述,HAProxy和LVS各有優缺點,沒有好壞之分,要選擇哪一個做爲負載均衡器,要以實際的應用環境來決定。


 

 

3、快速安HAProxy集羣軟件

 

 

HAProxyhttp://www.haproxy.org/HAProxy操做系統Centos6.6 X64載的HAProxyhaproxy-1.6.7.tar.gz如 下:

 

#tar -zxvf haproxy-1.6.7.tar.gz


#cd haproxy-1.6.7


#make TARGET=linux26 PREFIX=/usr/local/haproxy

注:此處TARGET=linux26是填寫系統內核版本 ,內核版本怎麼看. uname -r 。如個人版本是2.6.32-504.el6.x86_64, 直接填寫26便可。


#make install PREFIX=/usr/local/haproxy

  haproxy/usr/local/haproxy


 

#mkdir  /usr/local/haproxy/conf

 haproxy文件haproxy目錄


 

# cp examples/option-http_proxy.cfg  /usr/local/haproxy/conf/haproxy.cf

 

#haproxy,默認安件,這裏例配件目錄

這樣HAProxy完成了。

 

 

4、HAProxy基礎配置文件詳

 

 

HAProxy據功能和5分組是必的, 能夠部分置。

1)   global部分 用來屬於和操


2)   defaults部分 默認此部認會下面frontend

backendlisten所以公用只需defaults部分添加 一次果在frontendbackendlisten部分中也defaults同樣,那麼defaults應的蓋。

3)   frontend部分

 

此部請求frontendHAProxy1.3版本以後引 入的一個組件,同時引的還有backend組件過引入這些組件,在很程度上簡化了 HAProxy雜性frontendACL規則使backend

4)   backend部分 此部服務用來理前

端用實服相似LVSreal server點。

 

5)   listen部分

 

此部frontendbackend合體HAProxy1.3HAProxy的 全部分中性,HAProxy本仍然保listen 組件目前HAProxy方式任選可。

下面HAProxy置文件

 

Global

log127.0.0.1 local0 info

maxconn4096

usernobody

groupnobody

daemon

nbproc 1

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

 

defaults

 

mode http

retries 3

timeoutconnect 10s

timeoutclient 20s

timeoutserver 30s

timeoutcheck 5s

 

frontend www

 

bind *:80

mode    http

 

 

option httplog

option forwardfor

option httpclose

log    global

 

#acl host_wwwhdr_dom(host)   -i  www.zb.com

#acl host_imghdr_dom(host)   -i  img.zb.com

 

#use_backendhtmpool   if  host_www

#use_backendimgpool   if  host_img

default_backend     htmpool

 

backend htmpool

 

mode http

optionredispatch

optionabortonclose

balance    static-rr

cookieSERVERID

optionhttpchk GET /index.jsp

server237server 192.168.81.237:8080 cookie server1weight 6 check inter 2000 rise2 fall 3

serveriivey234 192.168.81.234:8080 cookie server2weight 3 check inter 2000 rise 2 fall 3

 

 

 

 

backend imgpool

mode   http

optionredispatch

optionabortonclose

balance    static-rr

cookieSERVERID

optionhttpchk GET /index.jsp

serverhost236 192.168.81.236:8080 cookie server1 weight 6 check inter 2000rise 2fall 3

 

 

listen admin_stats

bind0.0.0.0:9188

mode http

log127.0.0.1 local0 err

statsrefresh 30s

stats uri/haproxy-status

statsrealm welcome login\ Haproxy

stats authadmin:admin~!@

statshide-version

     statsadmin if TRUE



5、啓動與測haproxy的負載均衡功能


 

1haproxy

 

啓動務:

# /usr/local/haproxy/sbin/haproxy -f      /usr/local/haproxy/conf/haproxy.cfg

 

重啓務:

# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg \

-st `cat/usr/local/haproxy/logs/haproxy.pid`

 

中止務:

# killall haproxy

 

 

 

6、HAProxy    負載均衡器算法使用技

 

 

1HAProxy載均衡算法

1roundrobin單的算法

2static-rr根據權重

3leastconn少連處理

4sourceIP

5uri請求URI

6url_param據請URl進行調度

7hdr(name)HTTP來鎖HTTP求;

8rdp-cookie(name)表示根據cookie(name)來鎖每一TCP請求。

 

2

 

1roundrobin

2求源IPsource

3法:lestconn

 

7、通HAProxyACL規則實現智能負載均衡

 

 

因爲HAProxy七層,因要實HAProxy必定使用強ACLACL基於HAProxy衡系HAProxy 經過ACL要的是:

1)經過設置ACL客戶ACL麼就將

放行規則求.

 

 

2)符合ACL請求將被backend基於

ACL


 

HAProxyACL常使frontend中,使用下:

 

acl     自定義的acl名稱  acl方法  -i     [匹配的路或文件]

 

其中:

acl:是一個關鍵字,表示定義ACL規則的開始。後面須要跟上自定義的ACL名稱。

 

acl方法:這個字段用來定義實現ACL的方法,HAProxy定義了不少ACL方法,常常使用的方法有hdr_reg(host)hdr_dom(host)hdr_beg(host)url_suburl_dir path_begpath_end等。

 

-i:表示忽略大小寫,後面須要跟上匹配的路徑或文件或正則表達式。

 

ACL規則一塊兒使用的HAProxy參數還有use_backenduse_backend後面須要跟上一個backend實例名,表示在知足ACL規則後去請求哪一個backend實例,與 use_backend對應的還有default_backend參數,它表示在沒有知足ACL條件的時候默認使用哪一個後端backend





下面常見ACL規則子:

 

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_www    if  www_policy

       use_backend    server_app    if  url_policy    

       use_backend    server_bbs    if  bbs_policy    

       default_backend  server_cache   

   




 

 


 

8、使用HAProxy的Web監控平臺

 

 

      HAProxy雖然實現了服務的故障轉移,可是在主機或者服務出現故障的時候,並不能發出通知告知運維人員,這對於及時性要求很高的業務系統來講,是很是不便的,不過,HAProxy 彷佛也考慮到了這一點,在新的版本中HAProxy推出了一個基於Web的監控平臺,經過這 個平臺能夠查看此集羣系統全部後端服務器的運行狀態,在後端服務或服務器出現故障時,


       監控頁面會經過不一樣的顏色來展現故障信息,這在很大程度上解決了後端服務器故障報警的 問題,運維人員可經過監控這個頁面來第一時間發現節點故障,進而修復故障。

登陸地址是:http://IP:9188/haproxy-status

用戶名和密碼:就是在配置文件裏設置的 admin、admin~!@

 

 

wKioL1ehoKDT_QBjAAO9NILGG4M882.jpg-wh_50

 

 

9、HAproxy+KeepAlived 高可用負載均衡系統

 

 

1HAproxy統的

 

wKioL1ehnlXhrjlIAAEe3wLigSY374.jpg-wh_50 

在備機從新安haproxy,而後配haproxy,這個再也不介紹,下面直接給出配置好keepalived.conf容。haproxy-serverkeepalived.conf以下

 

global_defs

 {notification_email

{

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

 

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id HAProxy_DEVEL

}

 

vrrp_script check_haproxy {

script "killall -0 haproxy"       

#設置探測 haproxy 服務運行狀態的方式,這裏的killall -0 haproxy」僅僅是檢測 haproxy 服務狀態

 

interval 2

}

 

 

vrrp_instance HAProxy_HA {

 

state BACKUP 

# haproxy-server backup-haproxy 上均配置爲 BACKUP interface eth0

virtual_router_id 80

priority 100

advert_int 2

nopreempt     #不搶佔模式,只在優先級高的機器上設置便可,優先級低的機器不設置 authentication {

auth_type PASS

auth_pass 1111

}

 

 

track_script

 

 {check_haproxy

}

 

virtual_ipaddress {

 

192.168.66.10/24 dev eth0   #HAProxy 的對外服務 IP,即 VIP

}

}


 

最後,keepalived.conf文件複製backup-haproxy服務器上對應的位置,而後keepalived.confpriority值修90,因爲配置的是不搶佔模式,所以,還需backup-haproxy器上去掉nopreempt項。


完成別在haproxy-serverbackup-haproxy主機啓動haproxy服 務和keepalived。注意,haproxy由於keepalived服務啓動 的時會自檢測 haproxy是否若是haproxy務沒,那主、備keepalivedfault狀態。後,VIP址應haproxy-server經過令「ipa以查VIP加載

相關文章
相關標籤/搜索