lvs羣集在企業網中的應用(1)

一:羣集的概念

      羣集由通過輸入/輸出系統互聯的若干服務器構成。這些服務器連接到存儲介質中,由分佈資源管理軟件(DRM) 進行管理。其組成部分處在不斷的改進之中:刀片式服務器,快速InfiniBand I/O技術和更爲複雜的DRM軟件,這些部分組合在一起,使得羣集成爲IT經理們的實用工具。

     主要的應用

服務器羣集技術最主要的應用即在於網絡負載平衡的功能。 網絡負載平衡使用兩臺或更多臺一起工作的主機計算機組成的羣集,爲服務器提供了高可用性和高伸縮性。Internet 客戶端使用一個 IP 地址或一組地址訪問羣集。客戶端無法區別羣集和單一服務器。服務器應用程序並不表明它們是在羣集上運行的。但是,網絡負載平衡羣集與運行單個服務器應用程序的單個主機有很大的區別,因爲即使在某個羣集主機發生故障的情況下,它也可以提供不間斷服務。羣集對客戶端請求的響應也比單個主機快。

如果某個主機發生故障或脫機,則網絡負載平衡通過將傳入的網絡通信重定向到工作的羣集主機,從而帶來了高可用性。連到脫機主機的現有連接將丟失,但是 Internet 服務仍然是可用的。在多數情況下(例如,就 Web 服務器而言),客戶端軟件可以自動重試失敗的連接,而且客戶端在接收響應時,只有數秒鐘的延遲。 網絡負載平衡通過在分配給網絡負載平衡羣集的一個或多個虛擬 IP 地址(羣集 IP 地址)間分配傳入的網絡通信,從而帶來了可變化的性能。然後,羣集中的主機同時對不同的客戶端請求甚至來自同一客戶端的多個請求做出響應。例如,Web 瀏覽器可以從網絡負載平衡羣集中的不同主機獲得所有單張網頁中的多幅圖像。這就提高了處理速度,並縮短了對客戶端做出響應的時間。

網絡負載平衡使得單個子網上的所有羣集主機可以同時檢測羣集 IP 地址的傳入網絡通信。在每個羣集主機上,網絡負載平衡驅動程序充當羣集適配器驅動程序和 TCP/IP 堆棧間的過濾器,以便在主機間分配通信。

    羣集的算法與原理

網絡負載平衡採用一種完全分佈式的算法,根據傳入客戶端的 IP 地址和端口,以統計方式將其映射到羣集主機。此進程的發生不需要主機間進行任何通信。當發現到達的數據包時,所有主機同時執行這種映射,以快速確定哪個主機應當處理這個程序包。這種映射一直保持不變,直到羣集主機數發生更改時爲止。與集中式負載平衡應用程序相比,網絡負載平衡篩選算法處理數據包的效率更高,因爲前者必須修改和重新傳送數據包。

網絡負載平衡通過以下方式,控制從 Internet 客戶端到羣集中選定主機的 TCP 和 UDP 通信的分配:配置好網絡負載平衡後,羣集中的所有主機都接收傳到羣集 IP 地址的傳入客戶端請求。網絡負載平衡篩選傳到指定 TCP 和 UDP 端口的傳入數據報,之後這些數據報纔會到達 TCP/IP 協議軟件。網絡負載平衡在 TCP/IP 內管理 TCP 和 UDP 協議,從而逐個端口地控制其操作。

在多播模式下,網絡負載平衡可以提供 Internet 組管理協議 (IGMP) 支持,限制交換流。除了指定端口的 TCP 和 UDP 通信以及多播模式中的 IGMP 通信,網絡負載平衡不控制任何傳入 IP 通信。它並不篩選其他 IP 協議(例如,ICMP 或 ARP),但是下述情況除外。請注意,當使用羣集 IP 地址時,應當會看到來自特定點對點 TCP/IP 應用程序(例如 ping)的重複響應。如果需要,這些應用程序可以將專用 IP 地址用於每個主機,以避免這種操作。

爲了協調其操作,網絡負載平衡主機在羣集內週期性地交換檢測信號(詳細信息,請參閱Internet 組管理協議 (IGMP))。IP 多播允許主機監控羣集狀態。當羣集狀態更改時(例如當主機發生故障、離開或加入羣集時),網絡負載平衡將調用稱作“聚合”的過程,在該過程中,主機交換數量有限的消息,以確定羣集的新的一致狀態,併爲主機指定最高主機優先級,即作爲新的默認主機。當所有羣集主機在正確的新羣集狀態下取得一致後,它們將在 Windows 事件日誌中記錄聚合的完成。完成這個過程一般用不了 10 秒種。

在聚合過程中,其餘主機繼續處理傳入的網絡通信。對工作主機的客戶端請求不受影響。完成聚合後,將以故障主機爲目標的通信重新分發給仍在工作的主機。經過負載平衡後的通信將在仍在工作的主機間得到重新劃分,以便儘可能好地實現特定 TCP 或 UDP 端口的新的負載平衡。

如果向羣集添加了一個主機,則聚合允許該主機接收自己那份經過負載平衡的通信。羣集的擴展不影響正在進行的羣集操作,而且其實現過程對 Internet 客戶端和服務器應用程序都是透明的。但是,當選擇了“客戶端相似性”時,它可能影響跨多個 TCP 連接的客戶端會話,因爲可能會將客戶端重映射到連接間的不同羣集主機。有關相似性的詳細信息,請參閱網絡負載平衡和狀態可控的連接。

網絡負載平衡假定,主機在羣集內正常工作的時間與它同其他羣集主機交換檢測信號的時間一樣長。如果在多次檢測信號交換中,其他主機都沒有接收到來自任何成員的響應,則它們將啓動聚合,重新分發本來應由失敗主機處理的負載。

 

二,LVS

       LVS是一個開源的軟件,由畢業於國防科技大學的章文嵩博士於1998年5月創立,可以實現LINUX平臺下的簡單負載均衡。LVS是Linux Virtual Server的縮寫,意思是Linux虛擬服務器。

簡介

      LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集羣系統。本項目在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。章文嵩博士目前工作於中國國家並行與分佈式處理重點實驗室,主要從事集羣技術、操作系統、對象存儲與數據庫的研究。

     宗旨

使用集羣技術和Linux操作系統實現一個高性能、高可用的服務器.

很好的可伸縮性(Scalability)

很好的可靠性(Reliability)

很好的可管理性(Manageability)。

可伸縮網絡服務的幾種結構,它們都需要一個前端的負載調度器(或者多個進行主從備份)。我們先分析實現虛擬網絡服務的主要技術,指出IP負載均衡技術是在負載調度器的實現技術中效率最高的。在已有的IP負載均衡技術中,主要有通過網絡地址轉換(Network Address Translation)將一組服務器構成一個高性能的、高可用的虛擬服務器,我們稱之爲VS/NAT技術(Virtual Server via Network Address Translation)。在分析VS/NAT的缺點和網絡服務的非對稱性的基礎上,我們提出了通過IP隧道實現虛擬服務器的方法VS/TUN (Virtual Server via IP Tunneling),和通過直接路由實現虛擬服務器的方法VS/DR(Virtual Server via Direct Routing),它們可以極大地提高系統的伸縮性。VS/NAT、VS/TUN和VS/DR技術是LVS集羣中實現的三種IP負載均衡技術。

實驗案例:利用lvs高可用性網絡實現LB羣集

實驗拓撲

2012-10-12_110811

操作細則

real server 1:

先配置eth0地址爲192.168.145.200
對arp內核參數進行調整 調整後才能加載虛擬端口IP
[root@mail ~]# echo "net.ipv4.conf.eth0.arp_announce = 2">>/etc/sysctl.conf
[root@mail ~]# echo "net.ipv4.conf.all.arp_announce = 2">>/etc/sysctl.conf
[root@mail ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1">>/etc/sysctl.conf
[root@mail ~]# echo "net.ipv4.conf.all.arp_ignore = 1">>/etc/sysctl.conf
[root@mail ~]# sysctl –p         使內核配置生效

配置lo:0地址

 2012-10-10_163950
[root@mail ~]# route add  -host 192.168.145.101 dev lo:0特定路由
[root@mail ~]# vim /etc/httpd/conf/httpd.conf
設置監聽端口爲80 此處爲默認配置
[root@mail html]# cd /var/www/html/
[root@mail html]# echo "jx1" > index.html

第二臺
[root@mail ~]# scp 192.168.145.200:/etc/sysctl.conf /etc/ 拷貝文件因爲使用了客戶端工具所以可以方便拷貝
[root@mail ~]# sysctl -p
[root@localhost html]# route add -host 192.168.145.101 dev lo:0
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# echo "jx2" > index.html
[root@localhost html]# ifconfig
2012-10-10_164012

derictor

[root@mail ~]# mkdir /mnt/cdrom/
[root@mail ~]# mount /dev/cdrom /mnt/cdrom/
[root@mail ~]# cd /mnt/cdrom/Cluster
[root@mail Cluster]# rpm -ivh ipvsadm-1.24-10.i386.rpm
[root@station Cluster]# service ipvsadm save  
[root@station Cluster]# service ipvsadm start
[root@station Cluster]# ipvsadm -A -t 192.168.145.101:80 -s rr 設置調度算法
[root@station Cluster]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.200 -g
[root@station Cluster]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.201 -g
測試圖

2012-10-10_180925

刷新一次後

2012-10-10_180946

2012-10-10_181141

NFS (實現共享網絡資源)
[root@mail ~]# mkdir /public
[root@mail ~]# vim /etc/exports

2012-10-10_205758
[root@mail ~]# service nfs start
[root@mail ~]# chkconfig nfs on
[root@mail ~]# exportfs -rv導出共享資源
[root@mail ~]# cd /public/
[root@station public]# touch index.html
2012-10-10_211643

然後進入server刪除文件
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# rm index.html
[root@localhost html]# mount 192.168.145.202:/public /var/www/html/掛載
第二臺server同樣配置
測試圖
2012-10-10_211104

測試自動掛載
[root@station ~]# umount /var/www/html/
[root@station ~]# mount -a
[root@station ~]# mount
[root@station ~]# vim /etc/auto.master

2012-10-10_214534
[root@station ~]# cp -p /etc/auto.misc /etc/auto.nfs
[root@station ~]# vim /etc/auto.nfs
2012-10-10_215549
[root@station ~]# service autofs restart
另一臺同樣配置

測試

2012-10-10_215322

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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