<pre id="p1pz5"><delect id="p1pz5"></delect></pre>
<output id="p1pz5"><delect id="p1pz5"><listing id="p1pz5"></listing></delect></output>

<p id="p1pz5"></p>

<pre id="p1pz5"></pre>

<p id="p1pz5"></p>
<pre id="p1pz5"><output id="p1pz5"></output></pre>
<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre><pre id="p1pz5"></pre>

<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"><menuitem id="p1pz5"></menuitem></output></p>

<output id="p1pz5"></output>
<pre id="p1pz5"><output id="p1pz5"></output></pre>

<p id="p1pz5"><delect id="p1pz5"><menuitem id="p1pz5"></menuitem></delect></p>

<p id="p1pz5"></p>
<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"></p>

<output id="p1pz5"><delect id="p1pz5"></delect></output>

<p id="p1pz5"></p>

<p id="p1pz5"></p>

<p id="p1pz5"></p>
<p id="p1pz5"><delect id="p1pz5"><address id="p1pz5"></address></delect></p>

<pre id="p1pz5"></pre>

<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre>

畢業設計網
畢業設計論文 | 畢業設計任務書 | 計算機外文翻譯 | 文獻綜述 | 機械模具類 |

基于Linux下服務器集群技術初探

集群技術是一種通用的技術,其目的是為了解決單機運算能力的不足、IO能力的不足、提高服務的可靠性、獲得規?蓴U展能力,降低系統整

體的運行、升級、維護成本。只要在其他技術不能達到以上的目的情況下,或者雖然能夠達到以上的目的,但是成本過高的情況下,就可以考

慮采用集群技術,達到高性能、高可用,高擴展性。
本文針對Linux下服務器集群問題研究,對HA高可用集群和LVS負載均衡集群進行了設計以及實現。通過Vmware Server來安裝了多個linux虛擬

機,作為多個節點,實現了高可用集群和負載均衡集群的設計。實驗證明高可用集群和負載均衡集群可以提高服務器的穩定性和利用率。

課題研究的背景
負載均衡集群適用于提供相對靜態的數據的服務,比如HTTP服務。因為通常負載均衡集群的各節點間通常沒有共用的存儲介質,用戶數據被復制成多份,存放于每一個提供該項服務的節點上。
長期以來,科學計算、數據中心等領域一直是高端RISC服務器的天下,用戶只能選擇IBM、SGI、SUN、HP等公司的產品,不但價格昂貴,而且運行、維護成本高。
 隨著Internet服務和電子商務的迅速發展,計算機系統的重要性日益上升,對服務器可伸縮性和高可用性的要求也變得越來越高。RISC系統高昂的代價和社會旺盛的需求形成強烈的反差。
按照側重點的不同,可以把Linux集群分為三類。一類是高可用性集群,運行于兩個或多個節點上,目的是在系統出現某些故障的情況下,仍能繼續對外提供服務。高可用性集群的設計思想就是要最大限度地減少服務中斷時間。這類集群中比較著名的有Turbolinux TurboHA、Heartbeat、Kimberlite等。第二類是負載均衡集群,目的是提供和節點個數成正比的負載能力,這種集群很適合提供大訪問量的Web服務。負載均衡集群往往也具有一定的高可用性特點。Turbolinux Cluster Server、Linux Virtual Server都屬于負載均衡集群。另一類是超級計算集群,按照計算關聯程度的不同,又可以分為兩種。一種是任務片方式,要把計算任務分成任務片,再把任務片分配給各節點,在各節點上分別計算后再把結果匯總,生成最終計算結果。另一種是并行計算方式,節點之間在計算過程中大量地交換數據,可以進行具有強耦合關系的計算。這兩種超級計算集群分別適用于不同類型的數據處理工作。有了超級計算集群軟件,企業利用若干臺PC機就可以完成通常只有超級計算機才能完成的計算任務。這類軟件有Turbolinux EnFusion、SCore等。
高可用性集群與負載均衡集群的工作原理不同,適用于不同類型的服務。通常,負載均衡集群適用于提供靜態數據的服務,如HTTP服務;而高可用性集群既適用于提供靜態數據的服務,如HTTP服務,又適用于提供動態數據的服務,如數據庫等。高可用性集群之所以能適用于提供動態數據的服務,是由于節點共享同一存儲介質,如RAIDBox。也就是說,在高可用性集群內,每種服務的用戶數據只有一份,存儲在共用存儲設備上,在任一時刻只有一個節點能讀寫這份數據。
以Turbolinux TurboHA為例,集群中有兩個節點A和B,設這個集群只提供Oracle服務,用戶數據存放于共用存儲設備的分區/dev/sdb3上。在正常狀態下,節點A提供Oracle數據庫服務,分區/dev/sdb3被節點A加載在/mnt/oracle上。當系統出現某種故障并被TurboHA軟件檢測到時,TurboHA會將Oracle服務停止,并把分區/dev/sdb3卸載。之后,節點B上的TurboHA軟件將在節點B上加載該分區,并啟動Oracle服務。對于Oracle服務有一個虛擬的IP地址,當Oracle服務從節點A切換到節點B上時,虛擬的IP地址也會隨之綁定到節點B上,因此用戶仍可訪問此服務。
由以上分析可以看出,高可用性集群對一種服務而言不具有負載均衡功能,它可以提高整個系統的可靠性,但不能增加負載的能力。當然,高可用性集群可以運行多種服務,并適當分配在不同節點上,比如節點A提供Oracle服務,同時節點B提供Sybase服務,這也可以看成是某種意義上的負載均衡,不過這是對多種服務的分配而言。
下面以Turbolinux Cluster Server為例簡要介紹一下負載均衡集群的工作機制。在集群中有一個主控節點,稱為高級流量管理器(ATM)。假設這一集群僅被用來提供一項HTTP服務,其余各節點均被設定為HTTP的服務節點。用戶對于頁面的請求全部發送到ATM上,因為ATM上綁定了這項服務對外的IP地址。ATM把接受到的請求再平均發送到各服務節點上,服務節點接收到請求之后,直接把相應的Web頁面發送給用戶。這樣一來,假如在1秒內有1000個HTTP頁面請求,而集群中有10個服務節點,則每個節點將處理100個請求。這樣,在外界看來,好象有一臺10倍速度的高速計算機在處理用戶的訪問。這也就是真正意義上的負載均衡。
但是ATM要處理所有1000個頁面請求,它會不會成為集群處理速度的瓶頸呢?由于對于頁面的請求的數據量相對較少,返回頁面內容的數據量相對較大,因此這種方式還是很有效率的。ATM發生故障,也不會導致整個系統無法工作。Turbolinux Cluster Server可以設置一臺或多臺計算機為后備ATM節點,當主ATM節點故障時,在后備ATM中會產生出一個新的主ATM,接替它的工作?梢钥闯,這種負載均衡集群也具有一定的高可用性。
HTTP頁面相對是靜態的,但有時也需要改動。Turbolinux Cluster Server提供了數據同步工具,可以很方便的把對頁面的改動同步到所有提供該項服務的節點上。
下面介紹一下對于高可用性集群與負載均衡集群的組合使用。如果用戶有一個由兩個節點組成的最小集群,是否可以同時獲得高可用性集群和負載均衡集群的效益呢?答案是肯定的。由于高可用性集群適用于提供動態數據的服務,而負載均衡集群適用于提供靜態數據的服務,所以我們不妨假設要同時提供Oracle和HTTP服務。用戶要在節點A和B上安裝TurbolinuxTurboHA和TurbolinuxClusterServer軟件。把節點A作為Oracle正常工作的節點,節點B作為Oracle服務的后備節點,這是對TurboHA軟件而言。對于ClusterServer軟件而言,要設置節點B為主ATM節點,節點A為后備ATM節點,而節點A和節點B同時又都是HTTP的服務節點。
這樣一來,節點A和節點B都是身兼兩職,而用戶同時得到了一個具有高可用性的Oracle服務和一個具有負載均衡功能的HTTP服務。即使有一個節點發生故障,Oracle服務和HTTP服務都不會因此而中斷。
但對于同一種服務,是不能同時獲得高可用性與負載均衡能力的。對一種服務,要么是只有一份數據,放在共用存儲設備上,一次被一個節點訪問,獲得高可用性;要么是把數據復制為多份,存儲于每個節點的本地硬盤上,用戶的請求同時發送到多個節點上,獲得負載均衡能力。
對于高可用性集群,由于它在設計時的目的就是為了最大可能地減少服務中斷時間,因此服務的切換受到很大的關注。當一個節點上的服務故障時,會被很快地檢測到并被切換到其他節點上。但在切換時,不能忽略對數據完整性的保護。
在什么情況下數據完整性會被破壞呢?由于高可用性集群中至少有兩個節點,連接在一個共用的存儲設備上,對于非裸分區而言,如果被兩個節點同時讀寫,就會造成文件系統被破壞。因此就需要利用I/O屏障來防止這一事件的發生。
I/O屏障的目的是為了保證故障節點不能再繼續讀寫某一服務的共用分區,實現的方式有多種。Kimberlite使用硬件開關來實現,當一個節點發生故障時,另一節點如果能偵測到,就會通過串行口發出命令,控制連接在故障節點電源上的硬件開關,通過暫時斷電,而后又上電的方式使得故障節點被重啟動。
I/O屏障有多種形式。對于支持SCSI Reserve/Release命令的存儲設備,也可以用SG命令實現I/O屏障。正常節點應使用SCSI Reserve命令“鎖住”共用存儲設備,保證其不被故障節點讀寫。如果故障節點上的集群軟件仍在運行,如發現共用存儲設備已被對方鎖住,就應把自己重啟動,以恢復正常工作狀態。
以上介紹了Linux集群技術的基本原理,也介紹了幾種著名的軟件?傊,Linux集群技術最大的發揮了PC機和網絡的優勢,可以帶來可觀的性能,是一種大有前途的技術。

集群的誕生條件
1.服務器系統要有超強的計算能力,可以承受長時間、大量用戶的并發訪問。
2.其次,服務器系統的高可用性、易用性和易管理性對于用戶也是極為重要的,集群具有高可用性,一旦遇到系統故障,集群系統會把把故障

服務器上的應用程序轉移到備份服務器上避免造成服務中斷或者重要資料丟失的情況,減少用戶的損失。
3.隨著業務的增加、訪問量的提高和數據的不斷堆積,系統會變得越來越慢,所以硬件設備的更新換代是一個必不可少的工作,而集群的高擴

展性正滿足了這樣的需求。
從以上三點出發,可以考慮采用集群技術來實現。


 HA集群的設計及實現
對于HA集群的實現,使用VMware Server 2.02作為裸機的操作系統,在其中設置操作系統為Red Hat Enterprise Linux 5.6的兩臺虛擬機作

為node1,node2。首先安裝新立得軟件包管理器,包括兩個rpm包:apt,synaptic然后通過新立得軟件包管理器安裝HA軟件:heartbeat和tomcat

軟件。其中tomcat作為后期測試使用。
node1,node2的/etc/hosts文件內容如下:
192.168.192.100 node1
192.168.192.200 node2
172.16.240.100 priv1
172.16.240.200 priv2

以上是一部分介紹,如需要完整的資料或者如不符合您的要求,請聯系技術人員qq:1587620172咨詢 微信:phpvisa66

上一篇:基于JSP的選課系統設計與實現
下一篇:基于TCP局域網聊天軟件的設計與實現


版權所有 畢業設計網聯系qq:1587620172 © 2007-2022

蝴蝶中文综合娱乐网

<pre id="p1pz5"><delect id="p1pz5"></delect></pre>
<output id="p1pz5"><delect id="p1pz5"><listing id="p1pz5"></listing></delect></output>

<p id="p1pz5"></p>

<pre id="p1pz5"></pre>

<p id="p1pz5"></p>
<pre id="p1pz5"><output id="p1pz5"></output></pre>
<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre><pre id="p1pz5"></pre>

<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"><menuitem id="p1pz5"></menuitem></output></p>

<output id="p1pz5"></output>
<pre id="p1pz5"><output id="p1pz5"></output></pre>

<p id="p1pz5"><delect id="p1pz5"><menuitem id="p1pz5"></menuitem></delect></p>

<p id="p1pz5"></p>
<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"></p>

<output id="p1pz5"><delect id="p1pz5"></delect></output>

<p id="p1pz5"></p>

<p id="p1pz5"></p>

<p id="p1pz5"></p>
<p id="p1pz5"><delect id="p1pz5"><address id="p1pz5"></address></delect></p>

<pre id="p1pz5"></pre>

<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre>