溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

haproxy調(diào)度算法

發(fā)布時(shí)間:2020-08-05 23:10:25 來源:網(wǎng)絡(luò) 閱讀:1360 作者:weilovepan520 欄目:建站服務(wù)器

在使用haproxy時(shí)在backend段會(huì)用到balance以指明用何種方式實(shí)現(xiàn)后端服務(wù)器的調(diào)度。

balance:指明調(diào)度算法

  動(dòng)態(tài)算法:權(quán)重可以動(dòng)態(tài)調(diào)整

  靜態(tài)算法:調(diào)整權(quán)重不會(huì)實(shí)時(shí)生效,只能重啟才能生效

  balance的算法有:roundrobin,static-rr,leastconn,source,uri,uri_param,hdr等

roundrobin算法:

  輪詢,基于權(quán)重進(jìn)行輪詢,此算法是動(dòng)態(tài)的,每個(gè)后端服務(wù)器僅能最多接受4128個(gè)連接;

  要求后端不能有狀態(tài)及會(huì)話方面的等,只能是靜態(tài)的頁面

  當(dāng)后端有會(huì)話等動(dòng)態(tài)信息時(shí),結(jié)合cookie使用,效果最佳

static-rr算法:

  靜態(tài)的roundrobin,不支持動(dòng)態(tài)調(diào)整;靜態(tài)算法,每個(gè)后端主機(jī)支持的數(shù)量無上限;

leastconn算法:

  根據(jù)后端主機(jī)的負(fù)載數(shù)量進(jìn)行調(diào)度,新的連接請(qǐng)求被派發(fā)至具有最少連接數(shù)目的后端服務(wù)器;

  在長連接會(huì)話的場景中推薦使用此法,不適用http,動(dòng)態(tài)算法

source算法:

  將請(qǐng)求的源地址進(jìn)行hash運(yùn)算;由后端服務(wù)器的權(quán)重總數(shù)相除后派發(fā)至某匹配的服務(wù)器,此方法可以讓   同一個(gè)IP的請(qǐng)求發(fā)往同一個(gè)服務(wù)器;不過,當(dāng)服務(wù)器權(quán)重總數(shù)發(fā)生變化時(shí),如某服務(wù)器宕機(jī)或添加了   新的服務(wù)器,許多客戶端的請(qǐng)求可能會(huì)被派發(fā)至與此前請(qǐng)求不同的服務(wù)器;常用于負(fù)載均衡無cookie   功能的基于TCP的協(xié)議;其默認(rèn)為靜態(tài),不過也可以使用hash-type修改此特性;

  hash-type:

    map-based:取模法(除模取余法);(靜態(tài)的,默認(rèn)的)

    consistent:一致性哈希法;(動(dòng)態(tài)的,使后時(shí)需要指定:hash-type consistent)

uri算法:

  對(duì)URI的左半部分(“問號(hào)”標(biāo)記之前的部分)或整個(gè)URI進(jìn)行hash運(yùn)算,并由服務(wù)器的總權(quán)重相除后派 發(fā)至某匹配的服務(wù)器;這可以使得對(duì)同一個(gè)URI的請(qǐng)求總是被派發(fā)至某特定的服務(wù)器,除非服務(wù)器的權(quán)重總數(shù)發(fā)生了變化;此算法常用于代理緩存或反病毒代理以提高緩存的命中率

  例:http://www.baidu.com/abc/query?item=123  #紅色標(biāo)記的部分是uri部分

  hash-type:

    map-based:取模法(除模取余法);(靜態(tài)的,默認(rèn)的)

    consistent:一致性哈希法;(動(dòng)態(tài)的,使后時(shí)需要指定:hash-type consistent)

  注:用到uri時(shí),當(dāng)訪問過后端某個(gè)頁面后,后面所有此頁面的請(qǐng)求都發(fā)至此服務(wù)器

  當(dāng)未訪問過后端某個(gè)頁面時(shí),采用roundrobin算法,隨機(jī)挑選一個(gè)響應(yīng),并且隨后所有的此頁面的請(qǐng)求都發(fā)至此主機(jī),這種算法,當(dāng)后端緩存時(shí)非常有效果?。。。? 

roundrobin算法結(jié)合cookie的用法:

  cookie的作用是基本瀏覽器實(shí)現(xiàn)session sticky;

  cookie的使用方法:cookie <name> [rewrite|insert|prefix] [indirect] [nocache]   

  [rewrite|insert|prefix]:添加cookie的方式

    rewrite:把原有的cookie替換

    insert:在原有的cookie后中插入 #此種方式最為常用

    prefix:在原有的cookie前插入

  cookie常使用的方式:

    cookie SERVERID insert indirect nocache

    注:

    a.SERVERID,是自己隨便指定的,在下面的例子中就是SERVERID=websrv1,SERVERID=websrv2;insert:表示插入原有cookie后邊

    b.不根據(jù)源IP進(jìn)行綁定,根據(jù)不同客戶端的進(jìn)行綁定,這種方式我感覺比source要好,因?yàn)閟ource是把同一IP的發(fā)往同一后端服務(wù)器;根據(jù)不同客戶端綁定,可以實(shí)現(xiàn)同一個(gè)公網(wǎng)IP的用戶,請(qǐng)求發(fā)送到不同的后端

    c.roundrobin算法,結(jié)合cookie這種方式可以進(jìn)行嘗試;這種方式彌補(bǔ)了roundrobin不保持會(huì)話的缺點(diǎn)

  用法實(shí)例:    

    balance roundrobin

    cookie SERVERID insert indirect

    server web1 192.168.0.100 check weight 1 cookie websrv1

    server web2 192.168.0.101 check weight 3 cookie websrv2

    注:websrv1:是web1專有的cookie標(biāo)識(shí)符,在客戶端瀏覽器的cookie中可以看到

        websrv2:是web2專有的cookie標(biāo)識(shí)符,在客戶端瀏覽器的cookie中可以看到

最常用的算法為:

  roundrobin

  source

  uri

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI