么麗穎
(黑龍江信息技術職業學院計算機工程系,黑龍江哈爾濱 150025)
在計算機系統應用中,Linux操作系統被較來用戶所接受,并在服務器、開發環境和桌面辦公等領域得到廣泛應用。在企業應用中,Linux操作系統在穩定性、工作效率和安全性等方面都有優秀表現。近年來,Linux操作系統逐漸成熟,標準化的MPI、PVM和GNU軟件消息傳遞機制,特別是其操作系統對高性能網絡的支持,促進了基于Linux的集群系統的飛速發展。Linux的集群系統是計算機系統結構的前沿領域,其集群系統是由多個獨立計算機系統構成的一個多處理器系統,通過網絡實現計算機系統之間進程間的通信。通過網絡共享內存進行應用程序的消息傳送,從而實現分布式計算機。
調配多臺計算機之間的負載,使各臺計算機的負載基本均衡,實現計算能力共享,達到提高Linux集群系統的性能的目的,因此常稱作負載平衡集群系統。負載平衡集群系統的功能:(1)能將TCP/IP協議用于多種服務,如遠程登錄、FTP、HTTP等進行轉發。在應用程序中,用戶能夠通過加入特定服務,以增加相應端口指定的服務支持。(2)實現動態負載平衡:負荷平衡器收集每個服務器運行過程中的實際數字,通過尋找次數最少的工藝操作來找出這個機器,將被要求發送到機器。這種負載均衡是機器與負荷現狀的改變,所以是動態負載平衡。(3)確保可持續的關聯:負載平衡器鏈接列表中已接受檢查是否有配套的表項,一經發現已有匹配表項,即請求相應的實際服務器。
負載平衡集群系統的性能特點:(1)具有較短的響應時間。從負載平衡器向集群中實際服務器發出收集負載的請求到決定出負載最輕機器所用的總時間約為30 ms,該負載平衡系統能保證ms級的響應時間。(2)具有良好的擴展性。用戶可以在機器的應用數量上加以控制,機器的IP地址由程序中的一個數組來記錄,因此增加一個機器只需增加一個新的數組元素,刪除一個機器只需刪除相應的元素。(3)具有良好的糾錯性。當集群機器突然倒塌時,應用程序可以即時發現,并不會被分配到請求失敗的機器。把機器修好重返集群中時,應用程序能夠將其檢測到,開始正常收集工作負荷。
組成該負載平衡集群系統的機器設備有:路由器、服務器1~服務器n。路由器作為外部網絡與人機互動界面內部網的接口,能夠接受外部網絡的用戶請求,并將該用戶請求發送到服務器1~服務器n中的一臺機器上,如果server2處理用戶的請求后,它將處理結果的路由器發送,然后到路由器要求對應的外部網絡用戶。由于該機器設備具有均衡負載功能,把路由器這臺機器稱為負載平衡器,由于服務器具有實際響應用戶請求的功能,因此將其稱為實際服務器,如圖1所示。

圖1 負載平衡系統環境設置圖
負載平衡集群系統必須要建立IP偽裝機制,以提高IP端口轉發機制。設計一個應用程序,該應用程序能夠根據集群中機器的狀態完成實時動態負載平衡。建立動態負載平衡的應用程序,該應用程序監視集群中各實際服務器的負載情況,并將用戶請求轉發到負載最輕的實際服務器上。
負載平衡集群系統實現了IP級的負載平衡,當一個客戶平衡裝置發送一個請求信息時,IP層的平衡器對這個請求報文的目標地址作了更換,將取代實際目標地址,然后將報文傳遞出去。當實際服務器將請求內部網處理后,它將請求回應發向平衡器,平衡器又一次在IP層將目標地址替換為客戶要求在外部網絡的IP地址,然后報文將被提交給客戶。
目標地址代替工作是該系統的運行核心,選擇負載最輕IP地址的機器在應用層實現。這是因為在應用層帶負荷數據可以提高系統的可擴展性,當需要向內部網中增加一臺新服務器時,只需將應用程序的數組變量增加,并將應用層實行靈活調度策略,可用動態調度策略,還可用靜態調度策略。IP數據包到目標地址重寫的主要工作在核心完成,刪去用戶到核心的通訊過程,使得執行速度加快。
當客戶在外部網絡負載平衡發送服務請求時,請求中可能有一個外部網絡機器的IP地址和端口號(laddr,lport)以及平衡器的IP地址,根據這些信息查詢IP端口轉發雙向鏈表檢查是否有匹配(laddr,lport)的表項存在,如果存在相應的表項,提取該表項中的(raddr,rport)價值,即機器在內部網的IP地址和端口號,并更換IP包的目標地址和端口為(raddr,rport),那么它的IP數據包將再次發送到相應的內部網的機器。如果沒有相應的表項,就創建新的IP端口轉發表項和相應的IP偽裝表項,再完成目標地址替換和包重發的工作。
該負載平衡系統主要分為IP偽裝模塊、IP端口轉發模塊和調度模塊。在IP層實現IP偽裝模塊和IP端口轉發模塊,在Linux源代碼所在目錄下都可以找到其對應程序。而調度模塊在應用層實現,具體各模塊功能見表1。

表1 各模塊功能
(1)IP偽裝模塊。1)隱藏內部網發向外部網中所有請求的源地址,從表面上平衡器發送了全部請求。2)通過平衡器在內部網連接請求將被提交到外部網絡。3)接收內部網發向外部網的全部請求。4)由建立的HASH表來記錄已建立的所有連接。5)接收外部網對請求的回應,同時將其轉發到內部網發出請求的機器上。
(2)IP端口轉發模塊。1)接受外部網的連接請求。2)對外只能看見平衡器,使所有請求從表面看都是由平衡器處理。3)能夠建立一個端口轉發鏈表。4)接收外部網發向內部網的請求,根據連接請求源地址、源端口、目標地址和目標端口的信息查看鏈表中是否有對應表項。5)利用系統調用實現函數在IP端口轉發模塊中對用戶的系統調用進行處理。
(3)調度模塊。1)負載平衡器向各臺實際服務器發送收集負載信息的命令。2)各臺實際服務器分別運行取自CPU運行隊列長度的程序。3)各臺機器將各自的CPU運行隊列長度信息回傳給負載平衡器。4)負載平衡器對各臺機器的CPU運行隊列長度進行比較,選出CPU運行隊列長度最短的機器,確定該機器是負載最輕的機器。5)負載最輕機器的IP地址通過系統調用傳入IP端口轉發模塊。
目前Linux集群系統已被廣泛應用,在服務器領域,其良好的安全性和穩定性得到更多用戶的認可,并在嵌入式應用及開發方面,Linux集群系統更具有其他操作系統無可比擬的優勢。
[1] MARCUS E,STERN H.高可用性系統設計[M].汪青青,盧祖英,譯.北京:清華大學出版社,2005.
[2] VRENIOS A.Linux集群體系結構[M].馬朝暉,譯.北京:機械工業出版社,2003.
[3] MATTHEW N,STONE R.Linux程序設計[M].2版.楊曉云,譯.北京:機械工業出版社,2002.
[4] DEVINE BOMAN K D,ERIK G.New Challenges in Dynamic Load Balancing[J].Applied Numerical Mathematics,2005,23(8):1121-1128.
[5] BUYYA R,CORTES T,JIN H.Single System Image[J].The International Journal of High Performance Computing Applications,2001,28(6):542 -549.
[6] 么麗穎.Linux系統管理和應用[M].北京:中國鐵道出版社,2011.
[7] 龔梅.一種集群系統的透明動態反饋負載均衡算法[J].計算機應用,2007,38(7):87 -91.
[8] 彭土有.新編Linux網絡組建與實訓[M].北京:北京出版社,2008.
[9] 林洪祥.基于服務分類和性能監測的負載均衡研究[J].計算機應用技術,2008,30(6):67 -70.
[10]王文義.Linux集群系統并行應用程序監測技術的研究[J].鄭州大學學報,2005,37(4):257-263.