lvs 詳解

目錄:

1.lvs簡介

2.lvs模式(四種)

3.lvs調度算法

3.安裝

版本說明:
ipvs1.26
系統版本:
2.6.32-642.el6.x86_64

1.lvs簡介

-  負載均衡 這裏用LVS

3791ae9877a974472f2b233c13b7e298.png-wh_

從2.4.24以後IPVS已經成爲linux官方標準內核的一部分,
lvs已經被Linux集成到內核中了,內核模塊爲ipvs.不能直接配置內核中的ipvs,而需要使用ipvs的管理工具ipvsadm進行管理。通過keepalived也可以管理LVS。
LVS體系結構與工作原理簡單描述
所以我們要調用ipvs內核的兩種方法:
- ipvsadm 命令行管理ipvs (瞭解即可)
- keepalived 管理   (使用這種)

2.lvs四種模式介紹:

NAT 模式

DR  模式   (重點是DR模式,其他模式瞭解即可)

tun 隧道模式

full-NAT模式 淘寶自創模式


其中DR模式效率最高

DR模式原理:

spacer.gif

名詞解釋:

CIP : 客戶源IP

VIP : 虛擬IP

DIP : LB 調度器IP


DR模式原理: 直接路由模式

lvs 負載均衡器主要做的是修改目的mac,將mac改爲某一臺real_server

real server 主要做的是 1.綁定vip 2.抑制arp

數據包流程:

客戶求請求由LVS接受,但是由Real Server返還給用戶信息,不經過LVS轉發.

  這裏引發一個問題: 當用戶請求時,源IP是CIP,目標地址是VIP;LVS調度器將請求轉發給Real Server處理後再發送給用戶,這個時候源IP是RIP,目標地址是CIP,但是用戶並沒有請求RIP,用RIP響應請求時CIP不會接受,所以需要用VIP響應請求。

spacer.gif

所以DR原理是:

DR模式下LVS和Real server都需要配備一樣的VIP(Real Server通過將VIP綁定在loopback實現).

但是 同一個局域網中,多臺服務器出現同樣的IP地址會引起衝突(arp協議的ip地址衝突檢測機制,免費arp),so 那麼如何工作下去?

需要在調度服務器上設置一個VIP和DIP, 每個RS也有一個RIP和VIP,但是RS需要對VIP地址做隱藏,不會應答ARP廣播,只有在響應CIP時,作爲源地址使用.

當產生請求時,LVS將目標mac修改爲RS中的MAC,然後轉發到相應的RS上處理,此時源,目的IP都沒有改變,RS收到LVS轉發來的包時,發現mac是自己的,IP也是自己的,所以合法接收,並直接回復,不經過LVS.

   注意: 免費arp,主機發送自己的ip查詢mac,如果沒有應答ok,有應答出事.

spacer.gif

其他模式簡介:

NAT模式簡介:

這個是通過網絡地址轉換的方法來實現調度的。

   首先調度器(LB)接收到客戶的請求數據包時(請求的目的IP爲VIP),根據調度算法決定將請求發送給哪個後端的真實服務器(RS)。然後調度就把客戶端發送的請求數據包的目標IP地址及端口改成後端真實服務器的IP地址(RIP),這樣真實服務器(RS)就能夠接收到客戶的請求數據包了。真實服務器響應完請求後,查看默認路由(NAT模式下我們需要把RS的默認路由設置爲LB服務器。)把響應後的數據包發送給LB,LB再接收到響應包後,把包的源地址改成虛擬地址(VIP)然後發送回給客戶端。

spacer.gif

原理圖簡述:

1)客戶端請求數據,目標IP爲VIP

2)請求數據到達LB服務器,LB根據調度算法將目的地址修改爲RIP地址及對應端口(此RIP地址是根據調度算法得出的。)並在連接HASH表中記錄下這個連接。

3)數據包從LB服務器到達RS服務器webserver,然後webserver進行響應。Webserver的網關必須是LB,然後將數據返回給LB服務器。

4)收到RS的返回後的數據,根據連接HASH表修改源地址VIP&目標地址CIP,及對應端口80.然後數據就從LB出發到達客戶端。

5)客戶端收到的就只能看到VIP\DIP信息。

TUN模式

採用NAT模式時,由於請求和響應的報文必須通過調度器地址重寫,當客戶請求越來越多時,調度器處理能力將成爲瓶頸。爲了解決這個問題,調度器把請求的報文通過IP隧道轉發到真實的服務器。真實的服務器將響應處理後的數據直接返回給客戶端。這樣調度器就只處理請求入站報文,由於一般網絡服務應答數據比請求報文大很多,採用VS/TUN模式後,集羣系統的最大吞吐量可以提高10倍。

VS/TUN的工作流程圖如下所示,它和NAT模式不同的是,它在LB和RS之間的傳輸不用改寫IP地址。而是把客戶請求包封裝在一個IP tunnel裏面,然後發送給RS節點服務器,節點服務器接收到之後解開IP tunnel後,進行響應處理。並且直接把包通過自己的外網地址發送給客戶不用經過LB服務器。

spacer.gif

原理圖過程簡述:

1)客戶請求數據包,目標地址VIP發送到LB上。

2)LB接收到客戶請求包,進行IP Tunnel封裝。即在原有的包頭加上IP Tunnel的包頭。然後發送出去。

3)RS節點服務器根據IP Tunnel包頭信息(此時就又一種邏輯上的隱形隧道,只有LB和RS之間懂)收到請求包,然後解開IP Tunnel包頭信息,得到客戶的請求包並進行響應處理。

4)響應處理完畢之後,RS服務器使用自己的出公網的線路,將這個響應數據包發送給客戶端。源IP地址還是VIP地址。(RS節點服務器需要在本地迴環接口配置VIP,後續會講)


各種模式優缺點對比:

DR模式VS/NATVS/TUN

1. 高併發

RS響應處理後的報文無需經過調度器LB,因此併發訪問量大時使用效率很高(和NAT模式比)


2. 同一個局域網:

DR模式是通過MAC地址改寫機制實現轉發,因此所有RS節點和調度器LB只能在一個局域網裏面


3. RS主機需要綁定VIP地址在LO接口上,並且需要配置ARP抑制


NAT模式優缺點:

1、NAT技術將請求的報文和響應的報文都需要通過LB進行地址改寫,因此網站訪問量比較大的時候LB負載均衡調度器有比較大的瓶頸,一般要求最多之能10-20臺節點

2、只需要在LB上配置一個公網IP地址就可以了。

3、每臺內部的節點服務器的網關地址必須是調度器LB的內網地址。

4、NAT模式支持對IP地址和端口進行轉換。即用戶請求的端口和真實服務器的端口可以不一致。

可以WAN 環境

但是需要隧道支持.

優點:性能最高

缺點: 不能跨域LAN

優點:地址和端口轉換

缺點: 效率低

優點:WAN環境,加密數據

缺點:需要隧道支持

  1. lvs調度算法

參考此文章:http://www.linuxvirtualserver.org/zh/lvs4.html

共8種算法,分爲兩類:

固定調度算法和動態調度算法:

固定調度算法:rr,wrr,dh,sh

動態調度算法:wlc,lc,lblc,lblcr

算法說明
rr
 輪詢算法
wrr

加權輪詢調度:

它將依據不同RS的權值分配任務。權值較高的RS將優先獲得任務,並且分配到的連接數將比權值低的RS更多。相同權值的RS得到相同數目的連接數。

wlc

加權最小連接調度:

假設各臺RS的權值依次爲Wi,當前tcp連接數依次爲Ti,依次去Ti/Wi爲最小的RS作爲下一個分配的RS

dh  

目的地址hash調度:

以目的地址爲關鍵字查找一個靜態hash表來獲得需要的RS

sh

源地址hash調度:

以源地址爲關鍵字查找一個靜態hash表來獲得需要的RS

lc

最小連接數調度:

IPVS表存儲了所有活動的連接。LB會比較將連接請求發送到當前連接最少的RS.

lblc

基於地址的最小連接數調度:

將來自同一個目的地址的請求分配給同一臺RS,此時這臺服務器是尚未滿負荷的。否則就將這個請求分配給連接數最小的RS,並以它作爲下一次分配的首先考慮

LVS算法選型:

1、一般的網絡服務,如http,mail,mysql等常用的LVS調度算法爲:

a.基本輪詢調度rr

b.加權最小連接調度wlc

c.加權輪詢調度wrc

2、基於局部性的最小連接lblc和帶複製的給予局部性最小連接lblcr主要適用於web cache和DB cache

3、源地址散列調度SH和目標地址散列調度DH可以結合使用在防火牆集羣中,可以保證整個系統的出入口唯一。

  1. lvs安裝

安裝LVS軟件

1)在安裝LVS軟件之前,先確定兩條HTTPserver是能夠正常訪問的。

2)下載軟件

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

這裏我們使用的2.4版本,並且注意內核是2.6版本的,如果你的版本是6.X版本的話,那麼可以使用2.6版本

3)編譯安裝

需要創建一個軟連接:ln -s /usr/src/kernels/2.6.18-238.el5-i686 /usr/src/linux

此處紅色許根據自己的系統來進行定義,可以使用tab鍵來補齊。

tar -zxf ipvsadm-1.24.tar.gz

cd ipvsadm-1.24

make

make install

lsmod |grep ip_vs     

如果此時沒有顯示,則表示系統未將ipvs模塊加載進去.

ipvsadm --》因爲此時系統還沒有把ipvs模塊加載進系統,需要我們執行ipvsadm命令纔會加載進去

或者modprobe ip_vs

DR模式

在real server上需要做的是:

1.添加lo口的vip

ifconfig lo:0 192.168.255.10/32 up

route add -host 192.168.255.10 dev lo

2.在realserver上抑制rap響應:

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

小結:

lvs故障排錯理論

1.調度器上LVS的規則和IP的正確性

2.RS上做VIP綁定和arp抑制檢查

lvs試驗:

3臺機器,一臺lvs 2臺nginx

3臺機器都安裝ipvsadm,如果報錯說明下列依賴包沒有,yum安裝

yum install libnl* popt* -y

lvs:

    ipvsadm -C

    ipvsadm -Ln

    ipvsadm -A -t 192.168.255.111:80 -s rr -p 20

    ipvsadm -a -t 192.168.255.111:80 -r 192.168.255.137 -g -w 1

    ipvsadm -a -t 192.168.255.111:80 -r 192.168.255.138 -g -w 1

real server:

  373  cat /proc/sys/net/ipv4/conf/lo/arp*

  374  cat /proc/sys/net/ipv4/conf/all/arp

 若全爲0則:

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

添加vip地址和路由:

ifconfig lo:0 192.168.255.111/32 up

route add -host 192.168.255.111 dev lo:0


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