摘要:LVS集群中有多種數據轉發方式和調度算法,為了研究每種算法對集群性能的影響,該文首先搭建一個LVS-NAT類型的集群,然后采用WAS軟件來測試2種常用算法的性能,并對測試結果進行簡單的分析,進而分析對集群性能的影響。
關鍵詞:LVS集群;調度算法;WAS
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)27-7630-02
Research of Cluster Performance Test Based on WAS
WANG Chun-juan
(Department of Computer, Shanxi Institute of Education, Xi'an 710061, China)
Abstract: There are many ways of data forwarding and Load Balancing algorithms in LVS Cluster, in order to research the influence to cluster performance of each algorithm, this article build a LVS-NAT cluster first, and test the performance of this two algorithms with WAS, then analyze the testing results simply, so analyze the influence to the cluster performance of algorithm.
Key words: LVS cluster; load balancing algorithm; WAS
集群技術是隨著Internet發展而產生的一種解決提升服務器性能的有效方案之一,是一組通過局域網或廣域網連接起來的多臺服務器,對Internet的所有用戶呈現唯一的IP地址,即虛擬IP(Virtual IP,VIP)地址,而用戶想要獲取的資源和服務就存放在集群后臺的服務器上,它對用戶而言就像是一臺高性能的計算機,網絡管理人員可以根據網站的實際處理能力和對用戶的響應速度隨意增加或者減少系統中的服務器,也可更改集群及其真實服務器的配置,這樣不僅提高了系統的伸縮性和處理性能,也降低了成本。
目前,應用的比較廣泛的集群方案就是Linux虛擬服務器集群,采用LVS集群技術搭建高性能的服務器,各服務器彼此之間的系統資源利用率經常存在很大差距,要解決該問題,必須依賴有效的負載均衡算法,有效的負載均衡算法可將用戶請求合理地分配給后臺各個服務器,使各服務器比較均衡地承擔任務,進而提高集群系統的處理能力和服務質量。
1 LVS集群的種數據轉發方式和調度算法
1.1 LVS集群的種數據轉發方式
LVS集群有3種數據轉發方式,這3種數據轉發方式分別為:網絡地址轉換(LVS-NAT)、直接路由(LVS-DR)和IP隧道(LVS-TUN)。下面簡單介紹它們的工作原理。
1) LVS-NAT(Virtual Server-Network Address Translation)模式,通過地址轉換實現虛擬服務器。通過網絡地址轉換,調度器重寫請求報文的目標地址,根據預設的調度算法,將請求分派給后端的真實服務器,真實服務器的響應報文通過調度器時,報文的源地址被重寫,再返回給客戶,完成整個負載調度過程。
2) LVS-DR(Virtual Server-Direct Routing)模式,通過直接路由實現虛擬服務器。負載均衡器通過改寫請求報文的MAC地址,將請求發送到真實服務器,而真實服務器將響應直接返回給客戶。
3) LVS-TUN(Virtual Server-IP Tunneling)模式,通過IP隧道技術實現虛擬服務器。調度器把請求報文通過IP隧道轉發至真實服務器,而真實服務器將響應直接返回給客戶,所以調度器只處理請求報文。
1.2 LVS集群的調度算法
LVS集群中提供了8種調度算法,分別為:輪叫、加權輪叫、最小連接、加權最小連接、基于局部性的最少鏈接、帶復制的基于局部性最少鏈接、目標地址散列和源地址散列。而輪叫、加權輪叫、最小連接和加權最小連接算法是常用的4種算法。
LVS中常用的調度算法包括兩大類,具體說明如下:
1) 靜態調度算法:它不考慮每臺服務器當前實際的負載情況,而只是根據事先定好的調度策略進行任務請求的分配,將用戶請求輪轉依次分配給各服務器,并且考慮到了權值W(Si),保證權值為0的服務器不被調度,該算法實現簡單且容易配置,但不能真正保證各服務器負載均衡。
2) 動態調度算法:動態算法將服務器當前實際的連接數作為實際的負載情況,同時考慮到各服務器的處理能力并賦以相應的權值W(Si),將用戶的請求發送給連接數最小或者加權連接數最小的后臺服務器,充分利用每臺服務器的系統資源,從而減小用戶請求服務的響應時間。
其中輪叫和加權輪叫算法屬于靜態調度算法;最小連接和加權最小連接算法屬于動態調度算法。
2 集群的搭建與性能測試
2.1 集群的搭建
1) 集群的物理結構
本文測試所搭建的集群類型為LVS-NAT形式的,具體的物理結構如圖1所示。
2) 集群的配置
根據圖1顯示,我們配置的集群為LVS-NAT類型的,我們用于測試的調度算法分別為加權輪叫和加權最小連接算法。下面具體說明調度器端的配置方法。
調度器上安裝的操作系統是Red Hat Linux 4.0 Enterprise,LVS集群在調度器上的配置過程主要包括以下幾個步驟:
(1) 安裝和編譯支持IPVS的內核
內核源代碼需要2.4.24以上版本的內核代碼,本文用到的內核源代碼為:Linux-2.6.18.tar.bz2。
(2) 配置支持IPVS的內核對Linux Kernel可以通過一個圖形化的界面來進行支持IPVS內核的相關配置,通過make menuconfig這個命令來進行具體的設置,依次進入的配置頁面為:Networking→Networking options→IP:Virtual Server Configuration,將其全部設置為M,即可用的意思。
(3) 安裝和編譯集群管理軟件ipvsadm
重新啟動Linux,選擇LVS項進入Linux,開始安裝LVS集群的管理軟件ipvsadm,集群的配置就是通過ipvsadm管理軟件來完成的。
(4) 配置集群并添加服務器到集群中
從圖1中可以看到,調度器需要配置兩個IP地址,因此需要兩塊網卡,第一塊網卡eth0綁定一個外部VIP地址(202.117.192.7),第二塊網卡eth1綁定局域網的內部RIP (192.168.10.254)。
這里的配置主要有如下幾個主要的命令:
第一步:首先需要在調度器上啟用路由轉發功能,具體的命令是:sysctl -w net.ipv4.ip_forward=1。
第二步:對局域網作NAT,具體的命令是:iptables -t -nat -A POSTROUTING -s 192.168.10.0/28 -d 0.0.0.0/0 eth0 -j MASQUERADE。
第三步:清除調度器上原來的負載均衡策略,具體的命令是:ipvsadm -C(如果是第一次配置集群,不用執行這一步)。
第四步:增加第一個集群, 具體的命令是:ipvsadm -A -t 202.117.192.7:80 -s wlc,其中,-A 表示增加一個集群;-t表示基于TCP協議以及80端口;-s表示調度算法為WLC,即加權最小連接算法,而加權輪叫為WRR。
第五步:增加第一臺真實服務器,具體的命令是:ipvsadm -a -t 202.117.192.7:80 -r 192.168.10.1:80 -m -w 1,其中,-a表示要增加真實服務器;-t表示要往哪一個集群服務里添加,即調度器的IP地址;-r指名了真實服務器的IP地址;-m表示使用NAT類型的地址偽裝方式,即網絡地址轉換方式;-w表示第一臺服務器的權值為1。
第六步:可用第5部分的方法,繼續添加該集群中第二臺服務器,它的IP地址為192.168.10.2:80,權值為1。
每臺服務器權值Wi的選取:由于自己搭建的LVS-NAT集群中有兩臺硬件配置一樣的服務器,故將W1和W2都設置為1。
第七步:使用這個命令ipvsadm -L -n來動態地查詢集群的數據轉發方式以及所有真實服務器的權值和當前連接數。
以上就是LVS-NAT方式集群的搭建過程,是進行加權輪叫算法和加權最小連接算法性能測試和對比的集群實驗環境。
2.2 集群的性能測試
1) 測試軟件
微軟公司提供的免費網絡負載測試工具WAS(Web Application Stress)是本文采用的測試軟件,可以模擬實際網絡中大量的并發用戶,并且對提供網絡服務和資源服務器的操作系統沒有特殊的要求。在測試之前,可設置相應的并發用戶數、測試時間,請求頁面等具體參數,最后再運行配置好的測試腳本。
2) 集群性能指標和測試結果
(1) 集群性能指標
平均應答延遲(TFB Average):TFB Average表示從第一個請求發出到安裝測試工具WAS的客戶端收到集群中真實服務器應答數據的第一個字節之間的平均時間,這個值越小表示服務器響應用戶請求速度越快;吞吐量(Bytes Recv Rate (in KB/s)):Bytes Recv Rate表示用戶單位時間內收到的信息流量大小,值越大表示吞吐量越高。
(2) 測試結果
因為論文中需要測試的是加權輪叫算法和加權最小連接算法之間的性能比較情況,在使用WAS工具進行測試時,使用相同的客戶機運行WAS并發送模擬的用戶請求,并且為每種被測試的算法設置相同的條件,即使用相同的測試腳本,這樣才可以更加準確的衡量2種算法之間的性能差異。實驗所得兩種算法下的數據如圖2、圖3所示。
3 結束語
從圖2和圖3中的測試結果可以看到:當用戶請求連接數在100-300之間時,兩種算法的負載均衡效果接近,但當連接數大于300時,加權最小連接算法的性能要比加權輪叫算法的性能好一些,具體表現是:響應時間相對要小,且吞吐量相對較高。總之,配置不同的調度算法,集群就會有不同的處理性能,在日常應用中可根據需要搭建和配置不同的集群類型和調度算法。
參考文獻:
[1] 鄭靈翔,劉君堯,陳輝煌.Linux下的負載均衡集群LVS實現分析與測試[J].廈門大學學報:自然科學版,2005,41(6).
[2] 倪繼利.Linux內核分析及編程[M].北京:電子工業出版社,2007.
[3] Karl Kopper.Linux企業集群 [M].沈金河,李秋霞,譯.北京:中國水利水電出版社,2007.