LVS

LVS負載均衡詳解

工作模式介紹:

工作模式是配置在:real server

1.Virtualserver via NAT(VS-NAT)     -m
優點:集羣中的物理服務器可以使用任何支持TCP/IP操作系統,物理服務器可以分配Internet的保留私有地址,只有負載均衡器需要一個合法的IP地址。
缺點:擴展性有限。當服務器節點(普通PC服務器)數據增長到20個或更多時,負載均衡器將成爲整個系統的瓶頸,因爲所有的請求包和應答包都需要經過負載均衡器再生。假使TCP包的平均長度是536字節的話,平均包再生延遲時間大約爲60us(在Pentium處理器上計算的,採用更快的處理器將使得這個延遲時間變短),負載均衡器的最大容許能力爲8.93M/s,假定每臺物理服務器的平臺容許能力爲400K/s來計算,負責均衡器能爲22臺物理服務器計算。

解決辦法:即使是是負載均衡器成爲整個系統的瓶頸,如果是這樣也有兩種方法來解決它。一種是混合處理,另一種是採用Virtual Server via IP tunneling或VirtualServer via direct routing。如果採用混合處理的方法,將需要許多同屬單一的RR DNS域。你採用Virtual Server via IP tunneling或VirtualServer via direct routing以獲得更好的可擴展性。也可以嵌套使用負載均衡器,在最前端的是VS-Tunneling或VS-Drouting的負載均衡器,然後後面採用VS-NAT的負載均衡器。

2.Virtualserver via IP tunneling(VS-TUN)   -i
我們發現,許多Internet服務(例如WEB服務器)的請求包很短小,而應答包通常很大。
優點:負載均衡器只負責將請求包分發給物理服務器,而物理服務器將應答包直接發給用戶。所以,負載均衡器能處理很巨大的請求量,這種方式,一臺負載均衡能爲超過100臺的物理服務器服務,負載均衡器不再是系統的瓶頸。使用VS-TUN方式,如果你的負載均衡器擁有100M的全雙工網卡的話,就能使得整個Virtual Server能達到1G的吞吐量。
缺點:但是,這種方式需要所有的服務器支持"IP Tunneling"(IPEncapsulation)協議,我僅在Linux系統上實現了這個,如果你能讓其它操作系統支持,還在探索之中。

3.VirtualServer via Direct Routing(VS-DR) 常用  -g
優點:和VS-TUN一樣,負載均衡器也只是分發請求,應答包通過單獨的路由方法返回給客戶端。與VS-TUN相比,VS-DR這種實現方式不需要隧道結構,因此可以使用大多數操作系統做爲物理服務器,其中包括:Linux、Solaris 、FreeBSD、windows、IRIX 6.5;HPUX11等。
不足:要求負載均衡器的網卡必須與物理網卡在一個物理段上。

三種IP負載均衡技術的優缺點比較:
雜項         VS/NAT     VS/TUN      VS/DR
服務器操作系統    任意      支持隧道     多數(支持Non-arp )
服務器網絡      私有網絡    局域網/廣域網  局域網
服務器數目(100M網絡) 10-20      100       多(100)
服務器網關      負載均衡器   自己的路由    自己的路由
效率         一般      高        最高

 

wKiom1Xqr7nwbCaLAAERVDIuRIQ282.jpg

 

管理集羣服務中的RS

      添加:-a  -t|u|f service-address -rserver-address [-g|i|m] [-w weight]

                -t|u|f service-address:事先定義好的某集羣服務

                -t:TCP協議的集羣

                -u: UDP協議的集羣

                -f:FWM: 防火牆標記

                -r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT實現端口映射;

            [-g|i|m]:LVS類型  

                -g:DR

                -i:TUN

                -m:NAT

            [-wweight]: 定義服務器權重

        修改:-e

        刪除:-d -t|u|fservice-address -r server-address

        配置DR模型

        #ipvsadm -a -t 192.168.10.120:80 -r 192.168.10.243 -g  -w [權重數]

       #  Route add –host 192.168.10.120 dev lo:0

        #ipvsadm -a -t 172.168.10.120:80 -r 192.168.10.244 –g 

       #  Route add –host 192.168.10.120 dev lo:0

    查看

        -L|l

            -n:數字格式顯示主機地址和端口

            --stats:統計數據

            --rate:速率

            --timeout:顯示tcp、tcpfin和udp的會話超時時長

            -c:顯示當前的ipvs連接狀況

 

    刪除所有集羣服務

        -C:清空ipvs規則

    保存規則

        -S

        #ipvsadm -S > /path/to/somefile

    載入此前的規則:

        -R

        #ipvsadm -R < /path/form/somefile


調度算法介紹:

調度算法是配置在:Director上的

類型

算法

說明

靜態方法

RR

round-robin, 輪詢;

WRR

weighted round-robin, 加權輪詢;Overhead=conn/weight

SH

Source ip Hashing,源地址哈希;把來自同一個地址請求,統統定向至此前選定的RS;

DH

Destination ip Hashing, 目標地址哈希;把訪問同一個目標地址的請求,統統定向至此前選定的某RS;

動態方法

LC

least connection:最小連接,Overhead=Active*256+Inactive

WLC

weighted least connection:加權最小連接,Overhead=(Active*256+Inactive)/weight;默認的調度算法  (權重越大連接數越多)

SED

Shorted Expection Delay:最短期望延遲,Overhead=(Active+1)*256/weight

NQ

Never Queue:永不排序

LBLC

Local-Based Least Connection,基於本地的最小連接:動態方式的DH算法

LBLCR

Replicated LBLC:帶複製的LBLCR

 實例命令:

配置Director 上的調速算法和添加Director主機

添加集羣服務,這裏使用rr(輪詢)調度算法 默認是WLC算法

ipvsadm -A -t 192.168.10.120:80 -s rr



wKiom1Xqr-DDtfrxAAD_GJEQedM471.jpg

                                                                      1.1DR模式

圖中1.1,客戶端發送的請求會由路由器和交換機轉發後直接達到director。再由director調度給指定的real server ,最後由real server直接響應給客戶端而不經過director,在此架構中director和real server的網絡架構是此類型的重點。所以,配置DR類型一定要注意以下兩點:

(1) 各RS要直接響應Client,因此,各RS均得配置VIP;但僅能夠讓Director上的VIP能夠與本地路由直接通信;

(2) Director不會拆除或修改請求報文的IP首部,而是通過封閉新的幀首部(源MAC爲Director的MAC,目標MAC爲挑選出的RS的MAC)完成調度。

要完成上述的要求,着實很難,因爲RS和DR都有VIP,而請求進入時必須最先發送給DR,所以,在DR類型中,首先通過ARP廣播確認DR主機,其他RS主機不響應,這就確定了哪一個是DR主機。

 

默認方法:wlc

 

ipvsadm

管理集羣服務Director

        添加:-A -t|u|fservice-address [-s scheduler]

            -t:TCP協議的集羣

            -u:UDP協議的集羣

           -s: 使用的調度算法:

                有這樣幾個選項 rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,

默認的調度算法是: wlc

                service-address:     IP:PORT

            -f:FWM: 防火牆標記

                service-address:Mark Number

        修改:-E

        刪除:-D -t|u|fservice-address

 

        #ipvsadm -A -t 172.16.10.120:80 -s rr

 

   

 

 

但是在linux主機中,IP地址不屬於網卡而是屬於內核,就是說無論一個linux主機有多少個IP地址,它在接入的各個網絡中都會公佈它擁有的所有地址,這就給ARP廣播的響應制造了困難,所以就需要修改內核參數來保證router發出ARP廣播時,DR會響應RS不予響應,這裏所說的內核參數分別爲:

#arp_announce:定義arp通知級別;

0:默認級別,在各個網絡中通告本機所含有的所有地址

1:儘量不在各個網絡中通告本機中含有的不屬於該網絡的地址

2:不在各個網絡中通告本機中含有的不屬於該網絡的地址

#arp_ignore:定義arp忽略arp請求或arp通告的級別;

0:(默認值): 迴應任何網絡接口上對任何本地IP地址的arp查詢請求 

1:只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求 

2:只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,且來訪IP必須在該網絡接口的子網段內 

3:不迴應該網絡界面的arp請求,而只對設置的唯一和連接地址做出迴應 

4-7:保留未使用 

8:不迴應所有(本地地址)的arp查詢

命令如下:real server 上使用

sysctl -w net.ipv4.conf.eth0.arp_announce=2

sysctl -w net.ipv4.conf.all.arp_announce=2

sysctl -w net.ipv4.conf.eth0.arp_ignore=1

sysctl -w net.ipv4.conf.all.arp_ignore=1

wKioL1XqsiKT2gsxAAERVDIuRIQ735.jpg

 

 

  按照此圖,配置DR服務步驟:

1、配置Director

# Ifconfigeth0 192.168.10.245 up

# Ifconfig eth0:0 192.168.10.120netmask255.255.255.255 broadcast 192.168.10.120 up

# Routeadd –host 192.168.10.120 deveth0:0

 

2、配置RealServer

# Ifconfigeth0 192.168.10.243 up

# Ifconfiglo:0 192.168.10.120 netmask 255.255.255.255broadcast 192.168.10.120 up

# Route add –host 192.168.10.120 dev lo:0

sysctl -w net.ipv4.conf.eth0.arp_announce=2

sysctl -w net.ipv4.conf.all.arp_announce=2

sysctl -w net.ipv4.conf.eth0.arp_ignore=1

sysctl -w net.ipv4.conf.all.arp_ignore=1

 

 

 

# Ifconfigeth0 192.168.10.244 up

# Ifconfiglo:0 192.168.10.120 netmask 255.255.255.255broadcast 192.168.10.120 up

# Routeadd –host 192.168.10.120 dev lo:0

sysctl -w net.ipv4.conf.eth0.arp_announce=2

sysctl -w net.ipv4.conf.all.arp_announce=2

sysctl -w net.ipv4.conf.eth0.arp_ignore=1

sysctl -w net.ipv4.conf.all.arp_ignore=1

 

3、配置調度模式和調度計算機服務類型:

Director上執行如下命令:

# Ipvsadm –A – t 192.168.10.120:80 –s rr

  -A添加

  -ttcp協議

  -s:選擇調度模式rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq, 默認wlc

# Ipvsadm –a – t 192.168.10.120:80 –r 172.16.50.21 –g –w1 

  -a: 添加

  -t:tcp協議

  -r:real server 服務器IP

  -g:選擇工作模式(-g:DR ; -i:TUN ; -m:NAT)

  -w:加權重

# Ipvsadm –a – t 192.168.10.120:80 –r 172.16.50.31 –g –w2

這樣就完成了同網段內DR類型的負載均衡配置。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章