<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          LVS系列教程04-IP負(fù)載均衡類型

          共 8844字,需瀏覽 18分鐘

           ·

          2021-07-09 19:19

          關(guān)注「開源Linux」,選擇“設(shè)為星標(biāo)”
          回復(fù)「學(xué)習(xí)」,有我為您特別篩選的學(xué)習(xí)資料~

          目錄

          前言

          LVS(Linux Virtual Server)是由章文嵩博士發(fā)起的一個(gè)開源項(xiàng)目,稱為L(zhǎng)inux虛擬服務(wù)器?,F(xiàn)在已經(jīng)是Linux內(nèi)核標(biāo)準(zhǔn)的一部分,官方網(wǎng)站是http://www.linuxvirtualserver.org。LVS是一個(gè)實(shí)現(xiàn)負(fù)載均衡集群的開源軟件項(xiàng)目,架構(gòu)從邏輯上可分為調(diào)度層、服務(wù)器集群層和共享存儲(chǔ)。通過LVS達(dá)到的負(fù)載均衡技術(shù)和Linux操作系統(tǒng)實(shí)現(xiàn)一個(gè)高性能高可用的Linux服務(wù)器集群,它具有良好的可靠性、可擴(kuò)展性和可操作性。從而以低廉的成本實(shí)現(xiàn)最優(yōu)的性能。

          一、負(fù)載均衡原理

          系統(tǒng)運(yùn)維:可用 –> 標(biāo)準(zhǔn)化 –> 自動(dòng)化

          1.1 工作原理

          下圖所示就是LVS的基本工作原理:

          • (1) 當(dāng)用戶向負(fù)載均衡調(diào)度器(Director Server)發(fā)起請(qǐng)求,調(diào)度器將請(qǐng)求發(fā)往至內(nèi)核空間。
          • (2) PREROUTING鏈?zhǔn)紫葧?huì)接收到用戶請(qǐng)求,判斷目標(biāo)IP確定是本機(jī)IP,將數(shù)據(jù)包發(fā)往INPUT鏈。
          • (3) IPVS是工作在INPUT鏈上的,當(dāng)用戶請(qǐng)求到達(dá)INPUT時(shí),IPVS會(huì)將用戶請(qǐng)求和自己已定義好的集群服務(wù)進(jìn)行比對(duì),如果用戶請(qǐng)求的就是定義的集群服務(wù),那么此時(shí)IPVS會(huì)強(qiáng)行修改數(shù)據(jù)包里的目標(biāo)IP地址及端口,并將新的數(shù)據(jù)包發(fā)往POSTROUTING鏈。
          • (4) POSTROUTING鏈接收數(shù)據(jù)包后發(fā)現(xiàn)目標(biāo)IP地址剛好是自己的后端服務(wù)器,那么此時(shí)通過選路,將數(shù)據(jù)包最終發(fā)送給后端的服務(wù)器。

          1.2 工作特點(diǎn)

          LVS是工作在TCP/IP的四層模型上,通過修改Netfilter表中的INPUT鏈來實(shí)現(xiàn)的(所有不是服務(wù)而是規(guī)則),根據(jù)客戶端請(qǐng)求報(bào)文的目標(biāo) IPPORT(主要是端口)將其轉(zhuǎn)發(fā)至后端主機(jī)集群中的某一臺(tái)主機(jī)(根據(jù)挑選算法)。

          原理
          • 當(dāng)用戶請(qǐng)求LVS負(fù)載均衡調(diào)度器的IP地址,在經(jīng)過PREROUTING鏈到達(dá)INPUT鏈,如果匹配規(guī)則匹配的話,在到達(dá)本機(jī)內(nèi)核之后強(qiáng)行將其扔到POSTROUTING
          規(guī)則
          • 服務(wù)器端口號(hào):集群基于那個(gè)TCPUDP端口工作

          • 服務(wù)器 IP 地址:集群中那些機(jī)器可以響應(yīng)用戶請(qǐng)求

          架構(gòu)
          • 負(fù)載均衡調(diào)度器(Director Server)

          • 服務(wù)器集群(Real Server)

          • 共享存儲(chǔ)(Shared Storage)

          術(shù)語
          • DS:前端負(fù)載均衡器節(jié)點(diǎn)

          • RS:后端真實(shí)的工作服務(wù)器

          • CIP:訪問客戶端的 IP 地址

          • VIP:向外部直接面向用戶請(qǐng)求,作為用戶請(qǐng)求的目標(biāo)的 IP 地址

          • DIP:主要用于和內(nèi)部主機(jī)通訊的 IP 地址

          • RIP:后端服務(wù)器的 IP 地址

          工具
          • ipvs:工作在內(nèi)核Netfilter表中的INPUT鏈上,且支持TCP、UDP、AH、EST等多種協(xié)議

          • ipvsadm:基于ipvs的基礎(chǔ)上編寫的用戶工具,工作在用戶空間,用于LVS的管理集群服務(wù)

          [root@localhost ~]# grep -i -A 10 'IPVS' /boot/config-2.6.32-573.26.1.el6.x86_64
          # IPVS傳輸協(xié)議支持負(fù)載均衡
          CONFIG_IP_VS_PROTO_TCP=y     # 基于TCP做負(fù)載均衡
          CONFIG_IP_VS_PROTO_UDP=y     # 基于UDP做負(fù)載均衡
          CONFIG_IP_VS_PROTO_AH_ESP=y  # 認(rèn)證頭和有效載荷協(xié)議
          CONFIG_IP_VS_PROTO_ESP=y     # 有效載荷協(xié)議
          CONFIG_IP_VS_PROTO_AH=y      # 認(rèn)證頭協(xié)議
          CONFIG_IP_VS_PROTO_SCTP=y

          # IPVS調(diào)度器
          CONFIG_IP_VS_RR=m
          CONFIG_IP_VS_WRR=m
          CONFIG_IP_VS_LC=m
          CONFIG_IP_VS_WLC=m
          CONFIG_IP_VS_LBLC=m
          CONFIG_IP_VS_LBLCR=m
          CONFIG_IP_VS_DH=m
          CONFIG_IP_VS_SH=m
          CONFIG_IP_VS_SED=m
          ......

          二、負(fù)載均衡類型

          CDN(分區(qū)域緩存) => LB(LVS/Nginx) => HA(LVS/Haproxy) => Cache(Nginx/Vanish/Mechcache) => HTTP(Nginx/Apache) => Database(master/worker)

          • LVS-NAT:多目標(biāo)的 DNAT
          • LVS-DR:直接路由實(shí)現(xiàn)
          • LVS-TUN:采用 IP 隧道的方式
          • LVS-FULLNAT:全 NAT 機(jī)制,非標(biāo)準(zhǔn)類型,擁有新特性,淘寶二次研發(fā)

          企業(yè)中最常用的是 DR 實(shí)現(xiàn)方式,而 NAT 配置上比較簡(jiǎn)單和方便

          2.1 LVS/NAT

          重點(diǎn):對(duì)請(qǐng)求報(bào)文進(jìn)行 DNAT 目標(biāo)地址轉(zhuǎn)換到挑選出的 RS 地址

          NAT 模型的實(shí)現(xiàn)原理

          • (1) 當(dāng)用戶請(qǐng)求到達(dá)Director ServerVIP上,此時(shí)請(qǐng)求的數(shù)據(jù)報(bào)文會(huì)先到內(nèi)核空間的PREROUTING鏈。此時(shí)報(bào)文的源 IP為CIP,目標(biāo) IP為VIP 。

          • (2) PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標(biāo)IP是本機(jī),將數(shù)據(jù)包送至INPUT鏈。

          • (3) IPVS比對(duì)數(shù)據(jù)包請(qǐng)求的服務(wù)是否為集群服務(wù),若是,修改數(shù)據(jù)包的目標(biāo)IP地址為后端服務(wù)器RIP,然后將數(shù)據(jù)包發(fā)至POSTROUTING鏈。此時(shí)報(bào)文的源 IP為CIP,目標(biāo) IP為RIP 。

          • (4) POSTROUTING鏈通過選路,將數(shù)據(jù)包發(fā)送給Real Server。

          • (5) Real Server比對(duì)發(fā)現(xiàn)目標(biāo)為自己的IP,開始構(gòu)建響應(yīng)報(bào)文發(fā)回給Director Server。此時(shí)報(bào)文的源 IP為RIP,目標(biāo) IP為CIP 。

          • (6) Director Server在響應(yīng)客戶端前,此時(shí)會(huì)將源IP地址修改為自己的VIP地址,然后響應(yīng)給客戶端。此時(shí)報(bào)文的源 IP為VIP,目標(biāo) IP為CIP。

          NAT 模型的的特性

          特點(diǎn)
          • 支持端口映射

          • RS可以使用任意操作系統(tǒng),包括Windows系統(tǒng)

          缺陷
          • 請(qǐng)求和響應(yīng)報(bào)文都需要經(jīng)過DS,高負(fù)載場(chǎng)景中,DS易成為性能瓶頸
          配置
          • 負(fù)載均衡調(diào)度器上維持一個(gè)nat追蹤表,用于轉(zhuǎn)發(fā)客戶端的請(qǐng)求報(bào)文給后端真實(shí)服務(wù)器響應(yīng)
          • 負(fù)載均衡調(diào)度器通過修改請(qǐng)求報(bào)文的目標(biāo)IP地址(同時(shí)可能會(huì)修改目標(biāo)端口),使用多目標(biāo)的DNAT實(shí)現(xiàn)轉(zhuǎn)發(fā)
          • DS配置兩塊網(wǎng)卡,分別為公網(wǎng)地址的VIP和私網(wǎng)地址的DIP,并需要使用DNAT和SNAT技術(shù)
          • RS和DIP最好使用同網(wǎng)段內(nèi)的私網(wǎng)地址,而且RS的網(wǎng)關(guān)需要指向DIP,不然響應(yīng)報(bào)文不會(huì)經(jīng)過VIP響應(yīng)用戶

          2.2 LVS/DR

          重點(diǎn):將請(qǐng)求報(bào)文的目標(biāo) MAC 地址設(shè)定為挑選出的 RS 的 MAC 地址

          DR 方式的實(shí)現(xiàn)原理

          • (1) 當(dāng)用戶請(qǐng)求到達(dá)Director Server的VIP上,此時(shí)請(qǐng)求的數(shù)據(jù)報(bào)文會(huì)先到內(nèi)核空間的PREROUTING鏈。此時(shí)報(bào)文的源 IP為CIP,目標(biāo) IP為VIP。

          • (2) PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標(biāo)IP是本機(jī),將數(shù)據(jù)包送至INPUT鏈。

          • (3) IPVS比對(duì)數(shù)據(jù)包請(qǐng)求的服務(wù)是否為集群服務(wù),若是,將請(qǐng)求報(bào)文中的源 MAC 地址修改為 DIP 的 MAC 地址,將目標(biāo)MAC地址修改RIP的MAC地址,然后將數(shù)據(jù)包發(fā)至POSTROUTING鏈。此時(shí)的源IP和目的IP均未修改,僅修改了源MAC地址為DIP的MAC地址,目標(biāo)MAC地址為RIP的MAC地址。

          • (4) 由于DS和RS在同一個(gè)網(wǎng)絡(luò)中,所以是通過二層來傳輸。POSTROUTING鏈檢查目標(biāo)MAC地址為RIP的MAC地址,那么此時(shí)數(shù)據(jù)包將會(huì)發(fā)至Real Server。

          • (5) RS發(fā)現(xiàn)請(qǐng)求報(bào)文的MAC地址是自己的MAC地址,就接收此報(bào)文。處理完成之后,將響應(yīng)報(bào)文通過lo接口傳送給eth0網(wǎng)卡然后向外發(fā)出。此時(shí)的源 IP地址為VIP,目標(biāo) IP為CIP。

          • (6) 響應(yīng)報(bào)文最終送達(dá)至客戶端。

          DR 模型的的特性

          特點(diǎn)
          • 不支持地址轉(zhuǎn)換,也不支持端口映射
          • RS可以是大多數(shù)常見的操作系統(tǒng),但不支持Windows系統(tǒng)
          • 請(qǐng)求報(bào)文經(jīng)由DS調(diào)度,但響應(yīng)報(bào)文一定不能經(jīng)由DS對(duì)用戶進(jìn)行響應(yīng)
          • 客戶請(qǐng)求傳遞給交換機(jī),交換機(jī)進(jìn)行ARP地址廣播,因?yàn)榻粨Q機(jī)只看Mac地址
          缺陷
          • RS和DS必須在同一機(jī)房中
          配置
          • DS配置網(wǎng)卡網(wǎng)卡,分別為eth0的DIP和eth0:0的VIP
          • RSs集群的每個(gè)機(jī)器也都配置兩塊網(wǎng)卡,分別為eth0的RIP和lo:0的VIP
          • RS的RIP可以使用私有地址或公網(wǎng)地址,如果使用公網(wǎng)地址通過互聯(lián)網(wǎng)對(duì)RIP進(jìn)行直接訪問
          • RS的VIP和DIP與DS的VIP和RIP必須在同一個(gè)物理網(wǎng)絡(luò)中,VIP必須使用公網(wǎng)地址,DIP、RIP可以使用公網(wǎng)或私網(wǎng)地址;建議DIP、RIP在同一個(gè)網(wǎng)段,方便通信。
          • 因?yàn)槲覀儾辉试SDS響應(yīng)用戶請(qǐng)求,所以RS的網(wǎng)關(guān)絕不允許指向DS的DIP上

          攻克的難題

          難題簡(jiǎn)述
          • 保證前端路由將目標(biāo)地址為 VIP 的報(bào)文統(tǒng)統(tǒng)發(fā)給DS,而不是也配置了VIP的RS
          【方式一】靜態(tài)綁定
          • 在前端路由器做靜態(tài)地址路由綁定,將對(duì)于VIP的地址僅路由到DS上
          • 如果DS服務(wù)器掛了將無法使用,需要做單點(diǎn)的高可用,如HB
          • 有可能路由是運(yùn)營(yíng)商提供的,所以用戶未必有路由操作權(quán)限,所以這個(gè)方法未必實(shí)用
          【方式二】arptables
          • 通過arptables工具修改ARP規(guī)則,禁止RS對(duì)VIP的請(qǐng)求做請(qǐng)求,不好配置
          【方式三】修改內(nèi)核
          • 內(nèi)核的參數(shù):arp_ignore和arp_announce
          • 因?yàn)樾枰薷膬?nèi)核參數(shù),RS主機(jī)必須為L(zhǎng)inux主機(jī)
          • 修改RS主機(jī)上內(nèi)核參數(shù)將VIP配置在lo接口的別名上,并限制其不能響應(yīng)對(duì)VIP地址解析請(qǐng)求

          2.3 LVS/TUN

          重點(diǎn):在原有的 IP 報(bào)文外再次封裝多一層 IP 首部,內(nèi)部 IP 首部(源地址為CIP、目標(biāo) IIP 為VIP),外層 IP 首部(源地址為DIP、目標(biāo) IP 為RIP)

          TUN 模型的實(shí)現(xiàn)原理

          • (1) 當(dāng)用戶請(qǐng)求到達(dá)Director ServerVIP上,此時(shí)請(qǐng)求的數(shù)據(jù)報(bào)文會(huì)先到內(nèi)核空間的PREROUTING鏈。此時(shí)報(bào)文的源 IP為CIP,目標(biāo) IP為VIP。

          • (2) PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標(biāo)IP是本機(jī),將數(shù)據(jù)包送至INPUT鏈。

          • (3) IPVS比對(duì)數(shù)據(jù)包請(qǐng)求的服務(wù)是否為集群服務(wù),若是,在請(qǐng)求報(bào)文的首部再次封裝一層IP報(bào)文,然后發(fā)至POSTROUTING鏈。此時(shí)源 IP為DIP,目標(biāo) IP為RIP。

          • (4) POSTROUTING鏈根據(jù)最新封裝的IP報(bào)文,將數(shù)據(jù)包發(fā)至RS(因?yàn)樵谕鈱臃庋b多了一層 IP 首部,所以可以理解為此時(shí)通過隧道傳輸)。此時(shí)源 IP為DIP,目標(biāo) IP為RIP。

          • (5) RS接收到報(bào)文后發(fā)現(xiàn)是自己的IP地址,就將報(bào)文接收下來,拆除掉最外層的IP后,會(huì)發(fā)現(xiàn)里面還有一層IP首部,而且目標(biāo)是自己的lo接口VIP,那么此時(shí)RS開始處理此請(qǐng)求,處理完成之后,通過lo接口送給eth0網(wǎng)卡,然后向外傳遞。此時(shí)的源 IP地址為VIP,目標(biāo) IP為CIP。

          • (6) 響應(yīng)報(bào)文最終送達(dá)至客戶端。

          TUN 模型的的特性

          特點(diǎn)
          • 請(qǐng)求報(bào)文必須經(jīng)由DS調(diào)度,但響應(yīng)報(bào)文必須不能經(jīng)由DS傳送
          • RS的集群服務(wù)可以位于不同的區(qū)域,如一個(gè)在北京另一個(gè)在上海
          缺陷
          • 不支持端口映射
          • RS的操作系統(tǒng)必須支持隧道功能
          • 對(duì)報(bào)文的再次封裝,可能導(dǎo)致超過最大的傳輸單元而再次分片
          配置
          • VIP、DIP、RIP全為公網(wǎng) IP 地
          • RS的網(wǎng)關(guān)的不能指向DIP,因?yàn)轫憫?yīng)報(bào)文不需要經(jīng)過DS傳送給客戶端

          攻克的難題

          • 【難題】對(duì)請(qǐng)求報(bào)文的再次封裝,可能導(dǎo)致超過MTU的最大值(一般為1500),導(dǎo)致再次分片
          • 【方式一】設(shè)備需要支持超過MTU的請(qǐng)求傳輸報(bào)文
          • 【方式二】在DS限制請(qǐng)求報(bào)文長(zhǎng)度為1400左右

          2.4 LVS/FULLNAT

          重點(diǎn):DS 通過同時(shí)修改請(qǐng)求報(bào)文的目標(biāo)地址和源地址進(jìn)行轉(zhuǎn)發(fā)

          FULLNAT 模型的實(shí)現(xiàn)原理

          • 淘寶 FULLNAT 項(xiàng)目地址
          https://github.com/alibaba/LVS
          • FULLNAT 是淘寶吳佳明(普空)在NAT基礎(chǔ)上搞得,很大簡(jiǎn)化了LVS的配置和部署

          • 百度的LVS叫BVS(Baidu Virtual Server),在LVS基礎(chǔ)上增加了L3 Though和SYN Porxy,類似FULLNAT

          • CentOS不支持FULLNAT,為了方便的實(shí)現(xiàn)多機(jī)房部署(NAT和DR不支持,TUN支持但比較復(fù)雜),需要在淘寶中找到內(nèi)核編譯安裝內(nèi)核

          • (1) 客戶端發(fā)送請(qǐng)求報(bào)文給Director Server的物理網(wǎng)絡(luò)接口VIP此時(shí)請(qǐng)求的數(shù)據(jù)報(bào)文會(huì)先到內(nèi)核空間的PREROUTING鏈。此時(shí)報(bào)文的源 IP為CIP,目標(biāo) IP為VIP。
          • (2) PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標(biāo)IP是本機(jī),將數(shù)據(jù)包送至INPUT鏈。
          • (3) IPVS比對(duì)數(shù)據(jù)包請(qǐng)求的服務(wù)是否為集群服務(wù),若是,修改數(shù)據(jù)包的源IP地址為DIP,目標(biāo)IP地址為后端服務(wù)器RIP,然后將數(shù)據(jù)包發(fā)至POSTROUTING鏈。此時(shí)報(bào)文的源 IP為DIP,目標(biāo) IP為RIP 。
          • (4) POSTROUTING鏈通過選路,將數(shù)據(jù)包發(fā)送給Real Server。
          • (5) Real Server比對(duì)發(fā)現(xiàn)目標(biāo)為自己的IP,開始構(gòu)建響應(yīng)報(bào)文發(fā)回給Director Server。此時(shí)報(bào)文的源 IP為RIP,目標(biāo) IP為DIP 。
          • (6) Director Server在響應(yīng)客戶端前,此時(shí)會(huì)將源IP地址修改為自己的VIP地址,目標(biāo)IP地址修改為客戶端的地址CIP,然后響應(yīng)給客戶端。此時(shí)報(bào)文的源 IP為VIP,目標(biāo) IP為CIP。

          FULLNAT 模型的特性

          特點(diǎn)
          • 支持端口映射機(jī)制
          • 跨 vlan:可以在多個(gè)地方跨域部署
          • connection 復(fù)用:使LVS能有類似f5的連接復(fù)用的功能
          • syn_proxy:可以在keepalived配置文件中針對(duì)每一個(gè)服務(wù)分別設(shè)置打開或關(guān)閉
          配置
          • VIP是公網(wǎng)地址,RIP和DIP是私網(wǎng)地址,二者無須在同一網(wǎng)絡(luò)中
          • RS接收到的請(qǐng)求報(bào)文的源地址為DIP,因此要響應(yīng)給DIP,也不需將RS的網(wǎng)關(guān)指向DS,能到達(dá)即可
          • 請(qǐng)求報(bào)文和響應(yīng)報(bào)文都必須經(jīng)由DS,有必要的話,需要做HB高可用
          • RS 可以使用任意操作系統(tǒng),包括Windows系統(tǒng)
          攻克的難題
          • 【難題】RS無法獲得用戶的真實(shí)IP地址
          • 【解決】淘寶通過叫TOA的方式解決,主要原理是將客戶端IP地址放到了TCP Option里面帶給了后端RS服務(wù)器,當(dāng)RS收到后保存在socket的結(jié)構(gòu)體里并通過toa內(nèi)核模塊hook的getname函數(shù),這樣當(dāng)用戶調(diào)用getname獲取遠(yuǎn)端地址時(shí),返回的是保存在socket的TCP Option的IP地址。百度的BVS是通過叫ttm模塊實(shí)現(xiàn)的,其實(shí)現(xiàn)方式跟toa基本一樣,只是沒有開源。

          三、實(shí)現(xiàn) session 保存

          我們都知道HTTP服務(wù)是一種無狀態(tài)的,那么用戶請(qǐng)求服務(wù)器時(shí),怎么標(biāo)記用戶呢?那么這就要使用到session保存的技術(shù)了,通過session服務(wù)器可以知道這個(gè)用戶對(duì)應(yīng)哪個(gè)資源,實(shí)現(xiàn)精準(zhǔn)的定位。以下就是session保持的常見方法:

          session 綁定
          • source ip hash:SNAT多用戶同時(shí)使用一個(gè)公網(wǎng)IP地址;lvs、nginx、haproxy;IP級(jí)別
          • cookie hash:自實(shí)現(xiàn)的;lvs不行,nginx、haproxy能夠使用;進(jìn)程級(jí)別
          session 集群
          • 需要進(jìn)行大量的session同步工作,斷電就尷尬了
          session 服務(wù)器
          • 使session持久化,即使關(guān)機(jī)了也可以使用,存儲(chǔ)在redis的鍵值數(shù)據(jù)庫(kù)
          • 網(wǎng)絡(luò)通信肯定有延遲
          • 單點(diǎn)故障,瓶頸 => LB => HB

          四、十種調(diào)度算法

          靜態(tài)方法:僅根據(jù)算法本身進(jìn)行調(diào)度;起點(diǎn)公平

          RR:round robin,輪調(diào)

          • 輪詢算法假設(shè)所有的服務(wù)器處理請(qǐng)求的能力都是一樣的,調(diào)度器會(huì)將所有的請(qǐng)求平均分配給每個(gè)RS服務(wù)器,非常均衡地分發(fā)下去。

          WRR:weighted rr,加權(quán)輪調(diào)

          • 這種算法會(huì)考慮每臺(tái)服務(wù)器的性能,并給每臺(tái)服務(wù)器添加要給權(quán)值權(quán)重的取值范圍0 – 100。權(quán)值越高的服務(wù)器,處理的請(qǐng)求越多。

          SH: source hash,源地址哈希

          • 實(shí)現(xiàn)session保持的機(jī)制;將來自于同一個(gè) IP 的請(qǐng)求始終調(diào)度至同一RS
          • LVS內(nèi)部會(huì)維持一個(gè)哈希表,記錄源地址、調(diào)度的RealServer和計(jì)時(shí)器,辭舊迎新防止打滿

          DH:destination hash,目標(biāo)地址哈希

          • 將對(duì)同一個(gè)目標(biāo)的請(qǐng)求始終發(fā)往同一個(gè)RS
          • 內(nèi)網(wǎng)中用戶通過同一個(gè)防火墻出去的會(huì)從同一個(gè)防火墻回來,保持用戶追蹤

          動(dòng)態(tài)方法:根據(jù)算法及各RS的當(dāng)前負(fù)載狀態(tài)進(jìn)行調(diào)度,Overhead小者獲勝;起點(diǎn)公平,結(jié)果公平

          LC:Least Connection,最少連接數(shù)

          • Overhead=Active(活動(dòng)鏈接數(shù))*256+Inactive(非活動(dòng)鏈接數(shù))
          • 最少連接算法會(huì)根據(jù)后端RS的連接數(shù)來決定把請(qǐng)求的分配,比如RS1連接數(shù)比RS2連接數(shù)少,那么請(qǐng)求就優(yōu)先發(fā)給 RS1這臺(tái)服務(wù)器。

          WLC:Weighted LC,加權(quán)最少連接數(shù)

          • Overhead=(Active*256+Inactive)/weight
          • 這種算法會(huì)考慮每臺(tái)服務(wù)器的性能,并給每臺(tái)服務(wù)器添加要給權(quán)值權(quán)重的取值范圍0 – 100。權(quán)值越高的服務(wù)器,處理的請(qǐng)求越多。

          SED:Shortest Expection Delay,最短期望延遲

          • Overhead=(Active+1)*256/weight

          NQ:Never Queue,永不排隊(duì)

          • SED算法的改進(jìn),類似于sed+sed的結(jié)合

          LBLC:Locality-Based LC,基于本地最少連接調(diào)度算法,即動(dòng)態(tài)的DH算法

          • 正向代理情形下的cache server調(diào)度;基于本地最少連接調(diào)度算法;運(yùn)營(yíng)商常使用
          • 這個(gè)算法是請(qǐng)求數(shù)據(jù)包的目標(biāo)IP地址的一種調(diào)度算法,該算法先根據(jù)請(qǐng)求的目標(biāo)IP地址尋找最近的該目標(biāo)IP地址所有使用的服務(wù)器,如果這臺(tái)服務(wù)器依然可用,并且有能力處理該請(qǐng)求,調(diào)度器會(huì)盡量選擇相同的服務(wù)器,否則會(huì)繼續(xù)選擇其它可行的服務(wù)器。

          LBLCR:Locality-Based Least-Connection with Replication,帶復(fù)制功能的LBLC算法

          • 記錄的不是要給目標(biāo)IP與一臺(tái)服務(wù)器之間的連接記錄,它會(huì)維護(hù)一個(gè)目標(biāo)IP到一組服務(wù)器之間的映射關(guān)系,防止單點(diǎn)服務(wù)器負(fù)載過高。

          五、負(fù)載均衡比較

          LVS

          優(yōu)勢(shì)

          • 抗負(fù)載能力強(qiáng):工作方式的邏輯是非常之簡(jiǎn)單
          • 工作穩(wěn)定:因?yàn)楣ぷ髟趦?nèi)核中,所有十分穩(wěn)定
          • 無流量:工作在四層僅做請(qǐng)求分發(fā)之用,沒有流量
          • 支持所有應(yīng)用:工作在四層,所以可以對(duì)幾乎所有應(yīng)用做負(fù)載均衡,包括http、數(shù)據(jù)庫(kù)、聊天室等等 劣勢(shì)
          • 配置性低:需要通過命令工具進(jìn)行配置,有一定的學(xué)習(xí)成本

          Nginx

          優(yōu)勢(shì)

          • 針對(duì)HTTP應(yīng)用本身來做分流策略:比如針對(duì)域名、目錄結(jié)構(gòu)等
          • 網(wǎng)絡(luò)的依賴較?。豪碚撋现灰猵ing得通,網(wǎng)頁訪問正常
          • 安裝和配置比較簡(jiǎn)單:通過配置文件進(jìn)行配置,且配置文件書寫相對(duì)簡(jiǎn)單
          • 承受很高負(fù)載且穩(wěn)定:處理所有流量所以受限于機(jī)器 IO 和配置
          • 有故障監(jiān)測(cè)機(jī)制:比如根據(jù)服務(wù)器處理網(wǎng)頁返回的狀態(tài)碼、超時(shí)等等
          • 支持對(duì)請(qǐng)求的異步處理:可以幫助節(jié)點(diǎn)服務(wù)器減輕負(fù)載

          劣勢(shì)

          • 僅支持http和email

          文章作者: Escape 

          鏈接: https://escapelife.github.io/posts/a4e55523.html



          往期推薦



          LVS系列教程01-集群技術(shù)

          LVS系列教程02-LVS體系結(jié)構(gòu)

          LVS系列教程03-IP負(fù)載均衡技術(shù)

          超詳細(xì)!一文詳解容器網(wǎng)絡(luò)發(fā)展

          服務(wù)部署-DNS域名解析服務(wù)配置

          Linux漏洞波及RHEL 8 和 Ubuntu 20.04 均受影響

          OpenStack 與 Kubernetes 的共存

          關(guān)注「開源Linux」加星標(biāo),提升IT技能

          瀏覽 57
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操碰AV | 最新人人操| 无码国产精品一区二区三 | 大香蕉东京热 | 国产中文人人国际 |