LVS負載均衡羣集之NAT模型&&DR模型

LVS 是linux virtual server 的簡寫,即linux的虛擬服務器,是一個虛擬的服務器集羣系統。ip負載均衡技術是在負載調度器的實現技術中效率最高的,在已有的ip負載均衡技術中,主要通過網絡地址轉換(即VS/NAT 技術)、由於使用nat技術會使分派器成爲瓶頸,所以提出了通過ip隧道實現虛擬服務器(即VS/TUN和通過直接路由實現虛擬服務器的方法即VS/DR。 VS/NAT、VS/TUN和VS/DR技術是LVS集羣中實現的三種IP負載均衡技術。
LVS採用ip負載均衡技術和基於內容的請求分發技術。調度器具有很好的吞吐率,將請求均衡的轉移到不同的服務器上執行,且調度器自動屏蔽故障的服務器,從而將一組服務器構成了一個高性能、高可用的虛擬服務器 。整個服務器對客戶完全透明,而且無需修改客戶端和服務器端的程序,所以有透明性、可伸縮性、高可用性和易管理性優點。

採用三層結構:

A:負載調度器director

它是整個集羣對外面的前端機,負責將客戶的請求發送到一組服務器上執行,而客戶認爲服務是來自一個IP地址(我們可稱之爲虛擬IP地址)上的。

B:服務器池

是一組真正執行客戶請求的服務器,執行的服務有WEB、MAIL、FTP和DNS等。

C:共享的存儲

它爲服務器池提供一個共享的存儲區,這樣很容易使得服務器池擁有相同的內容,提供相同的服務。

NAT模型:

如圖所示:外網用戶直接訪問Director上的VIP地址,在Director 上做DNAT,將請求分派給給real server服務器中的其中一臺,請求可以是http、mail、dns或ftp。然後real server將請求結果通過Director的Dip發送給請求者。由於請求和回覆都要經過Director,容易使Director成爲瓶頸,最多可以有10個節點

clip_p_w_picpath002

DR模型:

如下圖所,外網用戶直接訪問Director上的VIP地址,Director將請求分派給real server 進行處理,當realserver處理後不再經過Director,而是直接送至客戶端,繞開了Director,使Director不再成爲瓶頸。可以有大量的節點,最多可以有100個節點

clip_p_w_picpath004

LVS調度算法

當Director收到請求後,需要將請求發送給Real server 進行處理,但是發送哪一臺服務器就要按照算法進行分派。

共有十總調度算法:

固定算法4個:按照設置的算法執行,不考慮現實狀況

RR:Round-robin 輪循調度算法

WRR:Weighted round-robin 加權的輪循調度算法,權值越大越優先

DH:Destination hashing 目標hash 同一個ip用戶的請求都發送給其中的一臺固定的realserver

SH:Source hashing 來源hash 當director的前端同時連接有兩臺或多臺路由器或防火牆時,用戶通過通過其中一臺路由器(或防火牆)將請求發送給director,realserver處理完後將仍然從進入的路由器(或防火牆)的接口出去

動態算法:根據Director中的跟蹤表,查看每個服務器的active 和inactive 個數進行調整

LC:least-connection :最小連接 查看每個節點的active 和inactive數量,根據active* 256+inactive,哪個結果小,就將請求發送給該服務器

WLC:weighted least-connection 加權的最小連接,計算方法:(active* 256+inactive)/權值。,哪個結果小,就將請求發送給該服務器

SED:最少的期望權值 只考慮active激活的連接,不考慮inactive連接。計算方法:(active+1)*256

NQ永不排隊 若果某個節點未處於活動連接,就將下一個請求發送給該節點進行處理

LBLC:當director和服務器之間有squid或varnish緩存服務器時,需要在director上設置,使請求分別到兩臺緩存服務器上

clip_p_w_picpath006

LBLCR:在LBLC的基礎上,若其中一部分人不在訪問網站,則下面一臺緩存服務器將不會有頁面緩存,這時候該緩存服務器將會空閒下來。該算法使下面一臺緩存服務器自動複製上面一臺緩存服務器的網頁,用於提供緩存

 

 

 

案例一

如下圖所示,外網用戶直接訪問Director上的VIP地址1.1,使用網絡地址轉換(即VS/NAT 技術)director將請求分派給下面兩臺realserver ,分貝使用RR輪循調度算法和WRR加權輪循調度算法

拓撲圖:

clip_p_w_picpath007

配置步驟

1.新建掛載點,掛載光盤

clip_p_w_picpath009

2.配置yum工具

# vim /etc/yum.repos.d/rhel-debuginfo.repo

clip_p_w_picpath011

3.安裝ipvsadm工具

clip_p_w_picpath013

4.直接啓動ipvsadm將失敗,提示不存在文件/etc/sysconfig/ipvsadm

clip_p_w_picpath015

5.先執行命令service ipvsadm save,將會生成/etc/sysconfig/ipvsadm文件,然後啓動將成功

clip_p_w_picpath017

clip_p_w_picpath019

6.打開路由轉發功能,並使改動生效

# vim /etc/sysctl.conf

clip_p_w_picpath020

clip_p_w_picpath021

6.定義服務。

-A:增加virtual service ,即director的vip地址加端口號

-t :tcp -s:算法 scheduler,rr爲輪循調度算法

clip_p_w_picpath023

7.添加服務器。

-a:添加realserver -t:tcp -r :realserver -m:masquerading即nat模式

clip_p_w_picpath025

8.使用命令ipvsadm -ln 來查看配置的規則

clip_p_w_picpath027

9.保存配置的規則

clip_p_w_picpath029

此時文件 /etc/sysconfig/ipvsadm的內容爲:

clip_p_w_picpath031

10.在兩臺realserver上分別配置web服務,將網關指向Director的DIP地址192.168.2.1,此處省略。外網pc訪問VIP

clip_p_w_picpath032

刷新一次,在兩個網站間輪循

clip_p_w_picpath033

11.更改調度算法爲wrr

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

# ipvsadm -e -t 192.168.1.1:80 -r 192.168.2.100 -m -w 10 將權重調整爲10

# ipvsadm -e -t 192.168.1.1:80 -r 192.168.2.200 -m -w 5 將權重調整爲5

12.保存規則

clip_p_w_picpath035

13.再次訪問,將會出現兩次web1,一次web2站點,這是由於realserver1的權重是realserver2的2倍

案例二: 如圖所示,director上的網卡eth0:0上配置VIP地址,eth0上配置DIP地址,外網用戶通過交換機訪問到director的VIP,然後director通過DIP將請求發送至兩臺realserver :realserver1和realserver2 ,然後兩臺realserver 通過右側交換機到存儲服務器上查找網頁,在將結果直接通過左側的交換機返回給客戶機,繞開了director

拓撲圖:

clip_p_w_picpath037

1.按照要求分別配置realserver1和 realserver2的地址

realserver1:

clip_p_w_picpath038

clip_p_w_picpath039

realserver2:

clip_p_w_picpath040

clip_p_w_picpath041

2.先修改arp_announce 和arp_ignore的值,然後在分別配置兩臺realserver的loopback 的vip,否則將會出現vip地址衝突

使用命令:sysctl -a |grep arp 查看arp_announce和arp_ignore的值

clip_p_w_picpath042

3.需要將arp_announce的值改爲2,將arp_ignore的值爲1,寫入文件/etc/sysctl.conf

clip_p_w_picpath044

4.同理修改realserver2上的內核選項

clip_p_w_picpath046

5.配置realserver1的loopback0:0的ip地址,子網掩碼爲4個 255

clip_p_w_picpath047

6.重啓realserver1網絡服務

clip_p_w_picpath049

7. 配置realserver2的loopback0:0的ip地址,子網掩碼爲4個 255,並重啓網絡服務

clip_p_w_picpath050

clip_p_w_picpath051

在兩臺realserver上分別創建路由,即當director將請求發送至realserver上時,目的地址爲1.101,

這時候realserver接收到請求並將到達ip爲1.101的請求交與網卡lo:0來處理

Realserver 1上:

clip_p_w_picpath053

Realserver2上:

clip_p_w_picpath055

這是臨時修改路由,要永久修改路由可以編輯文件:/etc/sysconfig/network-scripts/route-lo:0

ADDRESS0=192.168.1.101

NETMASK=255.255.255.255

即進入服務器realserver內部且目的地址爲1.101的數據都交給網卡lo:0來處理,這樣數據發出時也將由lo:0網卡發出,。

客戶端發送數據目的地址爲1.101,數據返回時源ip也是1.101這樣客戶端就會接收該數據

8.在director上安裝ipvsadm服務

clip_p_w_picpath057

9聲明服務,添加服務器

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

# ipvsadm -a -t 192.168.1.101:80 -r 192.168.1.200 -g

# ipvsadm -a -t 192.168.1.101:80 -r 192.168.1.201 -g

10.保存配置,啓動ipvsadm服務

clip_p_w_picpath059

11.分別在realserver1和realserver2上安裝httpd服務,並分別產生網頁內容分別爲“web1” “web2”

clip_p_w_picpath061

realserver1的網頁:

clip_p_w_picpath062

realserver2的網頁:

clip_p_w_picpath063

通過外網訪問,可以交替訪問到兩個網頁

clip_p_w_picpath064

clip_p_w_picpath065

12.現在直接路由模型已經搭建完成,但是兩個網頁不能保持動態一致,可以使用nfs的開機自動掛載,將共同的頁面存放到一臺獨立的存儲服務器中,當訪問頁面時,自動讀取同一份網頁文件/abc/index.html

clip_p_w_picpath066

13.編輯共享清單,將文件夾/abc 共享出來,允許192.168.2.0網段用戶訪問

# vim /etc/exports

clip_p_w_picpath067

14.導出共享清單: r:導出 v:詳細信息

clip_p_w_picpath068

15.在realserver1上,修改文件系統表

clip_p_w_picpath070

16.執行命令mount -a ,然後查看是否掛載成功

clip_p_w_picpath072

17.在realserver2上修改文件系統表,實現開機自動掛載

clip_p_w_picpath074

18. 執行命令mount -a ,然後查看是否掛載成功

clip_p_w_picpath076

19.通過訪問director的VIP,直接訪問到了放置在存儲器上的網頁文件

clip_p_w_picpath077

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