LVS基本知識總結及其NAT模型與DR模型的實現

在企業的運行中,LVS的負載均衡機制使得我們可以投入更少的成本並且可以讓服務集羣發揮更高的性能爲客戶服務,那麼LVS到底是什麼?以及它是怎麼實現的呢?下面我們一起來看一看吧

高可用LVS集羣系統結構圖

LVS概念

LVSLinuxVirtual Server的簡寫即是Linux虛擬服務器,是一個虛擬的服務器集羣系統;LVS是由進行對請求合理分配的調度器以及多臺提供服務的實際運行的應用服務器組成,並且可以根據企業自身的需求對其進行合理,靈活的架構;在有衆多客戶端進行幷發訪問企業相關服務器的時候,LVS集羣中的調度服務器可以將大量的服務請求根據調度器自身多種不同的算法進行合理的分發;從而實現基於IP,連接數以及訪問量等多種類型的負載均衡。而且一旦集羣中的某臺真實服務器出現故障而不可用時,集羣軟件能夠快速偵測到這一狀況並將服務請求定向到其它的正在運行的應用服務器上

LVS類型介紹

LB:load Balancing:負載均衡集羣--大容量、增加處理能力;例如:通過rsync完成web服務器之間的頁面複製即在一臺web服務器上存儲頁面,其他web服務器從此服務上進行同步;並且可以通過內核中inotify機制進行通知其他服務器頁面變化情況;讓其他服務器不用等到指定的同步時間進行同步,實行立即同步

HA:High Availabilty:高可用集羣--實時在線一年在線時間爲99.999%;例如當一臺服務器掛掉可以通過調度器重新發送請求,不會因爲一臺服務器的崩潰而導致整個服務器的的掛掉,可以繼續提供服務;這種高可用能力是依賴前端服務器調度的(調度機制的分發請求可根據後端服務器的狀態檢測;前端主機也會通過週期性的檢測來判斷節點服務器的在線狀態)

HP(HPC):High Performance:高性能集羣--具有超高級計算能力;例如:評估每秒鐘的浮點計算能力等;應用領域一般都是科學計算、天氣預報等一些大型數據計算

LVS組成結構

負載均衡實現方案

基於DNS域名輪流解析的方法

基於客戶端調度訪問的方法

基於應用層系統負載的調度方法

基於IP地址的調度方法

其中基於IP的負載調度算法中,IP負載均衡技術是執行效率最高的;所以下面以介紹IP負載調度方法爲主

IP調度方法技術實現

LVSIP負載均衡技術是通過IPVS模塊實現,IPVS是安裝在Director Server上的一個核心軟件,通過在Director Server上虛擬出一個IP地址即VIP;客戶端可通過這個虛擬的IP地址來訪問服務器,當客戶端請求通過訪問VIP地址到的DirectorServer上後,然後根據負載調度器上的各種算法分發客戶端請求到相對空閒或者是處理效率較高、性能較好的Real Server

IPVS實現負載均衡的三種方式

VS/NAT:Virtual Server via Network AddressTranslation;調度器通過將請求報文的目標地址(VIP)改寫成選定的RealServer地址,同時將報文的目標端口也改寫成指定的Real Server的相應端口,最終將報文請求發送到選定的Real Server 上。Real Server將報文數據返回給客戶端時,需要經過負載均衡器將報文源地址和源端口改寫成Director Server上的VIP地址和相應端口,然後通過DirectorServer將報文數據返回給客戶端

VS/DR:Virtual Server via Direct Routing,DR方式通過改寫請求的MAC地址通過Director Server將請求發送到Real Server,然後Real Server直接將客戶端請求響應給客戶端,Director Server只是做客戶端請求的處理;其性能較好,也是應用最多的一種方式,DR方式中Director ServerDIPReal ServerRIP在同一網段內

VS/TUN:Virtual Server via IP Tunncling;客戶端請求發送到Director Server上,然後調度器採用IP隧道技術將用戶請求轉送到遠程的Real Server上,Real Server接受報文直接響應給客戶端,TUNDR不同點在於DR中的DIPRIP在同一個網段,而TUN實現了DIPRIP相異兩地的情況

負載調度器算法

1 輪叫調度(Round Robin

“輪叫”調度算法也可稱爲1:1調度算法;將外部請求按順序1:1的輪流分配到集羣中的Real Server上,平等制的分發客戶端請求,不比較Real Server上的實際連接數和系統負載

2加權輪叫(Weighted Round Robin

“加權輪叫”調度算法根據RealServer的不同處理能力來調度客戶端訪問請求,可以對每臺Real Server配置不同的權值;權越高處理的客戶端請求越多;這樣可以保證處理能力強的Real Server能處理更多的訪問流量。Director Server也可以自動問詢Real Server的負載情況,並動態地調整其權值

3 最少鏈接(Least Connections

“最少連接”調度算法動態地將網絡請求調度到已建立的鏈接數最少的服務器上。適用於具有相近系統性能的Real Server

4 加權最少鏈接(Weighted Least Connections

“加權最少鏈接”調度算法優化負載均衡性能,具有較高權值的服務器將承受較大比例的活動連接負載,適用於在性能方面相差較大的Real Server

5 基於局部性的最少鏈接(Locality-Based Least Connections

“基於局部性的最少鏈接”調度算法是針對目標IP地址的負載均衡,根據請求的目標IP地址找出該目標IP地址最近使用的Real Server,若該Real Server是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工作負載,則用“最少鏈接”的原則選出一個可用的服務器,將請求發送到該服務器

6 帶複製的基於局部性最少鏈接(Locality-Based Least Connections with Replication

“帶複製的基於局部性最少鏈接”調度算法也是針對目標IP地址的負載均衡,該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按“最小連接”原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按“最小連接”原則從這個集羣中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低複製的程度

7 目標地址散列(Destination Hashing

“目標地址散列”調度算法根據請求的目標IP地址,作爲散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空

8 源地址散列(Source Hashing

“源地址散列”調度算法根據請求的源IP地址,作爲散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空

LVS NAT模型實現

IP地址規劃

Director Server

Real Server1

Real Server2

DIP

172.16.51.71

RIP

172.16.51.77

RIP

172.16.51.78

VIP

192.168.0.10





在要配置的Director的服務器上添加兩塊網卡,eth0VIPeth1DIP;VIP地址是192.168.0.10,DIP地址是172.16.51.71;在虛擬的配置中DIP網絡連接方式設置爲hostonly方式,Real Server也配置爲host only安裝ipvsadm

# yum install ipvsadm -y

準備Real Server

配置這兩臺RealServer服務器的RIP,網關是DIP

配置這兩臺RealServer服務器的RIP,網關是DIP

完成Real Server服務器的web服務器的安裝,提供相應的頁面172.16.51.77服務器

# yum install httpd -y

# echo “RS1 magedu.com” >/var/www/html/index.html

172.16.51.78服務器web服務器準備

# yum install httpd yes

# echo “RS2 magedu.com” >/var/www/html/index.html

同步時間

可以配置DirectorServer爲時間服務器使其服務器之間的時間是相同的,自己配置時間服務器或者使用一個專用時間服務器,Real Server與Director Server都從此服務器上進行同步,默認時間服務是開啓的同步時需要關閉

關閉命令

# server ntpd stop

同步命令

# ntpdate 172.16.0.1

重啓網絡服務與web服務

Director測試Real Server上的web服務是否可以進行訪問

添加集羣服務

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

# ipvsadm -a -t 192.168.0.10:80 -r172.16.51.77 –m

# ipvsadm -a -t 192.168.0.10:80 -r172.16.51.78 –m

Ipvsadm規則查看

使用window端瀏覽器進行驗證

刷新一次

Real Server各自連接次數查看

刷新N遍之後,查看連接次數與進出報文數據大小

調整LVS調度方法爲wrr

更改ipvsadm規則

# ipvsadm -E -t 192.168.0.10:80 -s wrr

# ipvsadm -e -t 192.168.0.10:80 -r172.16.51.77 -m -w 3

# ipvsadm -e -t 192.168.0.10:80 -r172.16.51.78 -m -w 1

查看更改調度方法後規則

爲了查看效果使用另外一個客戶端對其進行了壓力測試

# ab –n 2000 –c 100 http://192.168.0.10/index.html

訪問次數與進出報文數據查看

LVS DR模型的實現

DR模型實驗結構圖

實驗設備介紹

實驗中是在VM9上完成的,系統是紅帽5.8;共開啓了5臺虛擬機,兩臺Real Server,一臺Director Server,一臺路由設備B,一個window XP客戶端(路由設備A這裏沒有添加使用,測試時直接配置window XP的地址與VIP在同一網段,網卡連接模式爲橋接)

圖示內容介紹

大寫字母CIP地址是公網地址,與Director Server是同一網段

大寫字母V: Director Server上的VIP,是公網地址,與路由設備AC網卡地址是同一網段

大寫字母DDirector Server上的DIP,是內網地址

大寫字母RReal ServerRIP,是內網地址,與DIP是同一網段,連接在同一個交換機上

數字1:路由設備A的真正連接到因特網上的網卡接口

數字2:路由設備B的連接RIP的網卡是內網地址

數字3:路由設備B的連接因特網的網卡,地址是公網地址

DR模型實現流程

外網客戶端訪問Director上的VIP地址,其過程是客戶端通過因特網,然後通過路由設備與VIP建立通信,此時VIP與這個路由設備的網卡地址是在同一個網段的,請求到達Director後,通過交換機就可以把請求轉發到Real Server上,Real Server向外響應報文時,源地址是VIP;但是可以與路由通信的是RealServer上的RIP,所以RIP是報文的迴應接口(但源地址是VIP);RIP完成請求迴應,則其網關是RIP所指定的網關,但是此時RIPDIP是同一個網段,VIP是公網的一個網段,所以此時RIP要實現通信就要藉助一箇中間設備建立連接然後實現與外網的通信,每個Real ServerVIP需要屏蔽ARP地址請求的響應,根據arptablesarp地址進行訪問控制

arp_announce:向外通告本機源地址的時候,設定通告級別

0:只要本地配置的有相應地址,就給予響應

1:僅在請求的目標地址配置請求到達的接口上的時候,纔給予響應

2:僅向與本地接口上地址匹配的網絡進行通告

arp_ignore:設定接受arp廣播地址請求的時候的響應級別

0:將本地任何接口上的任何地址向外通告;

1:僅在目標IP是本地地址,並且配置在arp地址請求進來的接口上時,纔給予響應

2:僅向與本地接口上地址匹配的網絡進行通告;

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

4-7保留未使用

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

地址規劃

Director Server

Real Server1

Real Server2

路由設備B

DIP

172.16.51.76

RIP

172.16.51.77

RIP

172.16.51.78

Eth1

172.16.51.69

VIP

10.10.10.10

VIP

10.10.10.10

VIP

10.10.10.10

Eth0

10.10.10.21

DirectorServer地址配置

DirectorServer eth0上配置DIP地址(模擬爲內網網段)

Director ServerVIP地址配置

# ifconfig eth0:0 10.10.10.10/8

設定路由,定義當是請求VIP地址時讓eth0:0接口作爲送出報文接口

# route add –host 10.10.10.10/8dev eth0:0

RS1RIP地址配置

配置RS1arp_announcearp_ignore配置

網卡eth0配置

# sysctl –wnet.ipv4.conf.eth0.arp_announce=2

全局配置

# sysctl –wnet.ipv4.conf.all.arp_announce=2

配置RS1arp_ignore

網卡eth0配置

#sysctl –w net.ipv4.conf.eth0.arp_ignore=1

#sysctl –w net.ipv4.conf.all.arp_ignore=1

配置的廣播地址是自己的地址掩碼是255.255.255.255:意思此地址只跟自己在同一網段內不跟其他任何地址在同一網段內

# ifconfig lo:0 10.10.10.10broadcast 10.10.10.10  netmask 255.255.255.255 up

添加路由

# route add –host 10.10.10.10 dev lo:0

RS2RIP地址配置

配置RS1arp_announcearp_ignore配置

網卡eth0配置

# sysctl –wnet.ipv4.conf.eth0.arp_announce=2

全局配置

# sysctl –w net.ipv4.conf.all.arp_announce=2

配置RS1arp_ignore

網卡eth0配置

#sysctl –w net.ipv4.conf.eth0.arp_ignore=1

#sysctl –w net.ipv4.conf.all.arp_ignore=1

配置VIP地址

# ifconfig lo:0 10.10.10.10 broadcast 10.10.10.10 netmask 255.255.255.255 up

添加路由

# route add –host 10.10.10.10 dev lo:0

Director Server測試RS1RS2 web服務是否正常

設定ipvsadm規則

# ipvsadm –A –t 192.168.0.100:80 –s wlc

# ipvsadm –a –t 192.168.0.100:80 –r172.16.51.77 –g –w 2

# ipvsadm –a –t 192.168.0.100:80 –r172.16.51.78 –g –w 1

查看ipvsadm規則

路由設備B的相關配置

網卡eth1模擬爲內網地址,與Real ServerRIP在同一個網段

網卡eth0模擬爲內網地址,與Real ServerVIP在同一個網段

打開路由器B設備的路由轉發功能

# echo “1”  >/pro/sys/net/ipv4/ip_forward

RS1RS2上添加路由使其可以通過路由設備B將報文通過互聯網送至客戶端

# route add –net default gw 172.16.51.69

模擬的外網客戶端IP地址配置(虛擬機中window XP機器)

客戶端瀏覽器訪問VIP

刷新一下

刷新N次之後,查看分發請求次數及請求報文數據

LVS的基本知識及NAT與DR模型就實現完成了,這些只是LVS的一些很基本知識介紹,相關配置會在博文中繼續更新的


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