您好,登錄后才能下訂單哦!
今天小編給大家分享的是Haproxy搭建Web群集圖文概述,相信大部分人都不太了解,為了讓大家更加了解,所以給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。
博文目錄
一、Haproxy概述
1、HTTP請求
2、負(fù)載均衡常用調(diào)度算法
3、常見的Web群集調(diào)度器
二、Haproxy配置項(xiàng)介紹
1、global配置項(xiàng)通常有下面配置參數(shù):
2、defaults配置項(xiàng)配置默認(rèn)參數(shù),一般會被應(yīng)用組件繼承,如果在應(yīng)用組件中沒有特別的聲明,將安裝默認(rèn)配置參數(shù):
3、listen配置項(xiàng)一般配置應(yīng)用模塊參數(shù):
三、Haproxy的參數(shù)優(yōu)化
Haproxy是目前比較流行的一種群集調(diào)度工具,同類群集調(diào)度工具有很多,如LVS和Nginx。相比較而言,LVS性能最好,但是搭建相對復(fù)雜;Nginx的upstream模塊支持群集功能,但是對群集節(jié)點(diǎn)健康檢查功能不強(qiáng),性能沒有Haproxy好。Haproxy官方網(wǎng)站是http://www.haproxy.org/ 。
通過URL訪問網(wǎng)站使用的協(xié)議是HTTP協(xié)議,此類請求一般稱為HTTP請求。HTTP請求的方式分為GET方式和POST方式。
當(dāng)使用瀏覽器訪問某一個(gè)URL,會根據(jù)請求URL返回狀態(tài)碼,通常正常的狀態(tài)碼為2 X X、3 X X(如200、301),如果出現(xiàn)異常會返回4 X X、5 X X(如400、500)。例如:訪問http://www.test.com/a.php?ld=123 ,就是一個(gè)GET請求,如果訪問正常,會從服務(wù)器的日志中獲取200狀態(tài)碼。假如此請求使用POST方式,那么傳遞給a.php的ld參數(shù)依舊是123,但是瀏覽器的URL將不會顯示后面的ld=123字樣,因此表單類或者有用戶名、密碼等內(nèi)容提交時(shí)建議使用POST方式。不管使用哪種方式,最終a.php獲取的值是一樣的。
LVS、Haproxy、Nginx最常用的調(diào)度算法有三種,如下所述:
RR(Round Robin):動(dòng)態(tài)加權(quán)輪詢算法,支持權(quán)重的運(yùn)行時(shí)調(diào)整及慢啟動(dòng)機(jī)制;最大支持4095個(gè)后端主機(jī);在服務(wù)器的處理時(shí)間平均分配的情況下這是最流暢和公平的算法。該算法是動(dòng)態(tài)的,對于實(shí)例啟動(dòng)慢的服務(wù)器權(quán)重會在運(yùn)行中調(diào)整。
LC(Least Connections): 最小連接數(shù)算法,連接數(shù)最少的服務(wù)器優(yōu)先接收連接。建議用于長會話場景中使用,例如LDAP、SQL等協(xié)議,而不適合短會話協(xié)議。如HTTP.該算法是動(dòng)態(tài)的,對于實(shí)例啟動(dòng)慢的服務(wù)器權(quán)重會在運(yùn)行中調(diào)整。
- SH(Source Hashing):源地址哈希算法,對請求源IP地址進(jìn)行哈希;取模法:將源地址hash計(jì)算后除以服務(wù)器總權(quán)重,服務(wù)器變動(dòng)會影響全局調(diào)度效果;根據(jù)結(jié)果進(jìn)行分配。只要服務(wù)器正常,同一個(gè)客戶端IP地址總是訪問同一個(gè)服務(wù)器。如果哈希的結(jié)果隨可用服務(wù)器數(shù)量而變化,那么客戶端會定向到不同的服務(wù)器;該算法默認(rèn)是靜態(tài)的,所以運(yùn)行時(shí)修改服務(wù)器的權(quán)重是無效的,但是算法會根據(jù)“hash-type”的變化做調(diào)整。
該算法一般用于不能插入cookie的Tcp模式。它還可以用于廣域網(wǎng)上為拒絕使用會話cookie的客戶端提供最有效的粘連;一致性hash:服務(wù)器變動(dòng)僅影響局部調(diào)度;動(dòng)態(tài)調(diào)度。
目前常見的Web群集調(diào)度器分為軟件和硬件,軟件通常使用開源的LVS、Haproxy、Nginx;硬件一般使用比較多的是F5,也有很多人使用國內(nèi)的一些產(chǎn)品,如梭子魚、綠盟等。
Haproxy的配置文件通常分為三個(gè)部分:
- global;
- defaults;
- listen;
global為全局配置,defaults為默認(rèn)配置,listen為應(yīng)用組件配置。
global
log 127.0.0.1 local <!--配置日志記錄,local0為日志設(shè)備,默認(rèn)存放到系統(tǒng)日志-->
log 127.0.0.1 local1 notice <!--notice為日志級別,通常有24個(gè)級別-->
#log loghost local0 info
maxconn 4096 <!--最大連接數(shù)-->
chroot /usr/share/haproxy <!--該服務(wù)自設(shè)置的根目錄,一般需將此行注釋掉-->
uid 99 <!--用戶UID-->
gid 99 <!--用戶GID-->
daemon <!--守護(hù)進(jìn)程模式-->
defaults
log global <!--定義日志為global配置中的日志定義-->
mode http <!--模式為http-->
option httplog <!--采用http日志格式記錄日志-->
option dontlognull
retries 3 <!--檢查節(jié)點(diǎn)服務(wù)器失敗次數(shù),連續(xù)達(dá)到三次失敗,則認(rèn)為節(jié)點(diǎn)不可用-->
redispatch <!--當(dāng)服務(wù)器負(fù)載很高時(shí),自動(dòng)結(jié)束當(dāng)前隊(duì)列處理比較久的連接-->
maxconn 2000 <!--最大連接數(shù)-->
contimeout 5000 <!--連接超時(shí)時(shí)間-->
clitimeout 50000 <!--客戶端超時(shí)時(shí)間-->
srvtimeout 50000 <!--服務(wù)器超時(shí)時(shí)間-->
listen appli4-backup 0.0.0.0:10004 <!--定義一個(gè)名為appli4-backup的應(yīng)用-->
option httpchk /index.html <!--檢查服務(wù)器的index.html文件-->
option persist <!--強(qiáng)制將請求發(fā)送到已經(jīng)down掉的服務(wù)器,一般禁用此選項(xiàng)-->
balance roundrobin <!--負(fù)載均衡調(diào)度算法使用輪詢算法-->
server inst1 192.168.114.56:80 check inter 2000 fall 3 <!--定義在線節(jié)點(diǎn)-->
server inst2 192.168.114.56:81 check inter 2000 fall 3 backup <!--定義備份節(jié)點(diǎn)-->
<!--注意:在以上定義備份節(jié)點(diǎn)的參數(shù)中,
“check inter 2000”表示haproxy服務(wù)器和節(jié)點(diǎn)之間的一個(gè)心跳率,
“fall 3”表示連續(xù)三次檢測不到心跳頻率則認(rèn)為該節(jié)點(diǎn)失效。
節(jié)點(diǎn)配置后帶有“ backup”表示該節(jié)點(diǎn)只是個(gè)備份節(jié)點(diǎn),
只有主節(jié)點(diǎn)失效該節(jié)點(diǎn)才會上。去除backup,表示為主節(jié)點(diǎn),
和其他主節(jié)點(diǎn)共同提供服務(wù)-->
關(guān)于Haproxy的參數(shù)優(yōu)化,以下列舉了幾個(gè)關(guān)鍵的參數(shù),并對各參數(shù)的生產(chǎn)環(huán)境的優(yōu)化建議做了說明:
關(guān)于Haproxy搭建Web群集就分享到這里了,希望以上內(nèi)容可以對大家有一定的參考價(jià)值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。