Linux 伺服器叢集系統

來源:互聯網
上載者:User

LVS 叢集的體繫結構

本文主要介紹了 LVS 叢集的體繫結構。先給出 LVS 叢集的通用體繫結構,並討論了其的設計原則和相應的特點;最後將 LVS 叢集應用於建立可伸縮的 Web、Media、Cache 和 Mail 等網路服務。

1. 引言
在過去的十幾年中,Internet 從幾個研究機構相連為資訊共用的網路發展成為擁有大量應用和服務的全球性網路,它正成為人們生活中不可缺少的一部分。雖然 Internet 發展速度很快,但建設和維護大型網路服務依然是一項挑戰性的任務,因為系統必須是高效能的、高可靠的,尤其當訪問負載不斷增長時,系統必須能被擴充來滿足不斷增長的效能需求。由於缺少建立可伸縮網路服務的架構和設計方法,這意味著只有擁有非常出色工程和管理人才的機構才能建立和維護大型的網路服務。

針對這種情形,本文先給出 LVS 叢集的通用體繫結構,並討論了其的設計原則和相應的特點;最後將 LVS 叢集應用於建立可伸縮的 Web、Media、Cache 和 Mail 等網路服務。

2. LVS 叢集的通用體繫結構
LVS 叢集採用IP負載平衡技術和基於內容請求分發技術。調度器具有很好的吞吐率,將請求均衡地轉移到不同的伺服器上執行,且調度器自動屏蔽掉伺服器的故障,從而將一組伺服器構成一個高效能的、高可用的虛擬伺服器。整個伺服器叢集的結構對客戶是透明的,而且無需修改用戶端和伺服器端的程式。

為此,在設計時需要考慮系統的透明性、延展性、高可用性和易管理性。一般來說,LVS 叢集採用三層結構,其體繫結構1所示,三層主要組成部分為:

* 負載調度器(load balancer),它是整個叢集對外面的前端機,負責將客戶的請求發送到一組伺服器上執行,而客戶認為服務是來自一個 IP 位址(我們可稱之為虛擬 IP 位址)上的。
* 伺服器集區(server pool),是一組真正執行客戶請求的伺服器,執行的服務有 WEB、MAIL、FTP 和 DNS 等。
* 共用儲存(shared storage),它為伺服器集區提供一個共用的儲存區,這樣很容易使得伺服器集區擁有相同的內容,提供相同的服務。

調度器是伺服器叢集系統的唯一進入點(Single Entry Point),它可以採用IP負載平衡技術、基於內容請求分發技術或者兩者相結合。在IP負載平衡技術中,需要伺服器集區擁有相同的內容提供相同的服務。當客戶請求到達時,調度器只根據伺服器負載情況和設定的調度演算法從伺服器集區中選出一個伺服器,將該請求轉寄到選出的伺服器,並記錄這個調度;當這個請求的其他報文到達,也會被轉寄到前面選出的伺服器。在基於內容請求分發技術中,伺服器可以提供不同的服務,當客戶請求到達時,調度器可根據請求的內容選擇伺服器執行請求。因為所有的操作都是在 Linux 作業系統核心空間中將完成的,它的調度開銷很小,所以它具有很高的吞吐率。

伺服器集區的結點數目是可變的。當整個系統收到的負載超過目前所有結點的處理能力時,可以在伺服器集區中增加伺服器來滿足不斷增長的請求負載。對大多數網路服務來說,請求間不存在很強的相關性,請求可以在不同的結點上並存執行,所以整個系統的效能基本上可以隨著伺服器集區的結點數目增加而線性增長。

共用儲存通常是資料庫、網路檔案系統或者Distributed File System。伺服器結點需要動態更新的資料一般儲存在資料庫系統中,同時資料庫會保證並發訪問時資料的一致性。靜態資料可以儲存在網路檔案系統(如 NFS/CIFS)中,但網路檔案系統的伸縮能力有限,一般來說,NFS/CIFS 伺服器只能支援3~6個繁忙的伺服器結點。對於規模較大的叢集系統,可以考慮用Distributed File System,如 AFS[1]、GFS[2.3]、Coda[4] 和 Intermezzo[5] 等。Distributed File System可為各伺服器提供共用的儲存區,它們訪問Distributed File System就像訪問本地檔案系統一樣,同時Distributed File System可提供良好的伸縮性和可用性。此外,當不同伺服器上的應用程式同時讀寫訪問Distributed File System上同一資源時,應用程式的存取違規需要消解才能使得資源處於一致狀態。這需要一個分布式鎖管理器(Distributed Lock Manager),它可能是Distributed File System內部提供的,也可能是外部的。開發人員在寫應用程式時,可以使用分布式鎖管理器來保證應用程式在不同結點上並發訪問的一致性。

負載調度器、伺服器集區和共用儲存系統通過高速網路相串連,如 100Mbps 交換網路、Myrinet 和 Gigabit 網路等。使用高速的網路,主要為避免當系統規模擴大時互連網絡成為整個系統的瓶頸。

Graphic Monitor 是為系統管理員提供整個叢集系統的監視器,它可以監視系統的狀態。Graphic Monitor 是基於瀏覽器的,所以無論管理員在本地還是異地都可以監測系統的狀況。為了安全的原因,瀏覽器要通過 HTTPS(Secure HTTP)協議和身份認證後,才能進行系統監測,並進行系統的配置和管理。

2.1. 為什麼使用層次的體繫結構

層次的體繫結構可以使得層與層之間相互獨立,每一個層次提供不同的功能,在一個層次可以重用不同的已有軟體。例如,調度器層提供了Server Load Balancer、延展性和高可用性等,在伺服器層可以運行不同的網路服務,如 Web、Cache、Mail 和Media等,來提供不同的可伸縮網路服務。明確的功能劃分和清晰的階層使得系統容易建設,以後整個系統容易維護,而且系統的效能容易被擴充。

2.2. 為什麼是共用儲存

共用儲存如Distributed File System在這個 LVS 叢集系統是可選項。當網路服務需要有相同的內容,共用儲存是很好的選擇,否則每台伺服器需要將相同的內容複寫到本地硬碟上。當系統儲存的內容越多,這種無共用結構(Shared-nothing Structure)的代價越大,因為每台伺服器需要一樣大的儲存空間,任何的更新需要涉及到每台伺服器,系統的維護代價會非常高。

共用儲存為伺服器組提供統一的儲存空間,這使得系統的內容維護工作比較輕鬆,如 Webmaster 只需要更新共用儲存中的頁面,對所有的伺服器都有效。Distributed File System提供良好的伸縮性和可用性,當Distributed File System的儲存空間增加時,所有伺服器的儲存空間也隨之增大。對於大多數 網際網路服務來說,它們都是讀密集型(Read-intensive)的應用,Distributed File System在每台伺服器使用本地硬碟作 Cache(如2Gbytes的空間),可以使得訪問Distributed File System本地的速度接近於訪問本地硬碟。

此外,儲存硬體技術的發展也促使從無共用的叢集向共用儲存的叢集遷移。儲存地區網(Storage Area Networks)技術解決了叢集的每個結點可以直接連接/共用一個龐大的硬碟陣列,硬體廠商也提供多種硬碟共用技術,如光纖通道(Fiber Channel)、共用 SCSI(Shared SCSI)。InfiniBand 是一個通用的高效能 I/O 規範,使得儲存地區網中以更低的延時傳輸 I/O 訊息和叢集通訊訊息,並且提供很好的伸縮性。InfiniBand 得到絕大多數的大廠商的支援,如 Compaq、Dell、Hewlett-Packard、IBM、Intel、Microsoft 和 SUN Microsystems 等,它正在成為一個業界的標準。這些技術的發展使得共用儲存變得容易,規模生產也會使得成本逐步降低。

2.3. 高可用性

叢集系統的特點是它在軟硬體上都有冗餘。系統的高可用性可以通過檢測節點或服務進程故障和正確地重設系統來實現,使得系統收到的請求能被存活的結點處理。

通常,我們在調度器上有資源監測進程來時刻監視各個伺服器結點的健康情況。當伺服器對 ICMP ping 不可達時或者探測她的網路服務在指定的時間沒有響應時,資源監測進程通知作業系統核心將該伺服器從調度列表中刪除或者失效。這樣,新的服務要求就不會被調度到壞的結點。資源監測進程能通過電子郵件或傳呼機向管理員報告故障。一旦監測進程到伺服器恢複工作,通知調度器將其加入調度列表進行調度。另外,通過系統提供的管理程式,管理員可發命令隨時可以將新機器加入服務來提高系統的處理效能,也可以將已有的伺服器切出服務,以便對伺服器進行系統維護。

現在前端的調度器有可能成為系統的單一失效點(Single Point of Failure)。一般來說,調度器的可靠性較高,因為調度器上啟動並執行程式較少而且大部分程式早已經遍曆過,但我們不能排除硬體老化、網路線路或者人為誤操作等主要故障。為了避免調度器失效而導致整個系統不能工作,我們需要設立一個從調度器作為主調度器的備份。兩個心跳(Heartbeat)進程[6]分別在主、從調度器上運行,它們通過串口線和 UDP 等心跳線來相互定時地彙報各自的健康情況。當從調度器不能聽得主調度器的心跳時,從調度器通過ARP欺騙(Gratuitous ARP)來接管叢集對外的 Virtual IP Address,同時接管主調度器的工作來提供負載調度服務。當主調度器恢複時,這裡有兩種方法,一是主調度器自動變成從調度器,二是從調度器釋放 Virtual IP Address,主調度器收回 Virtual IP Address 並提供負載調度服務。這裡,多條心跳線可以使得因心跳線故障導致誤判(即從調度器認為主調度器已經失效,其實主調度器還在正常工作)的概論降到最低。

通常,當主調度器失效時,主調度器上所有已建立串連的狀態資訊將丟失,已有的串連會中斷。客戶需要向重新串連,從調度器才會將新串連調度到各個伺服器上,這對客戶會造成一定的不便。為此,IPVS 調度器在 Linux 核心中實現一種高效狀態同步機制,將主調度器的狀態資訊及時地同步到從調度器。當從調度器接管時,絕大部分已建立的串連會持續下去。

3. 可伸縮 Web 服務

基於 LVS 的 Web 叢集的體繫結構2所示:第一層是負載調度器,一般採用 IP 負載平衡技術,可以使得整個系統有較高的吞吐率;第二層是 Web 服務器池,在每個結點上可以分別運行 HTTP 服務或 HTTPS 服務、或者兩者都運行;第三層是共用儲存,它可以是資料庫,可以是網路檔案系統或Distributed File System,或者是三者的混合。叢集中各結點是通過高速網路相串連的。

對於動態網頁面(如 PHP、JSP 和 ASP 等),需要訪問的動態資料一般儲存在資料庫伺服器中。資料庫服務運行在獨立的伺服器上,為所有 Web 服務器共用。無論同一 Web 服務器上多個動態網頁面訪問同一資料,還是不同 Web 服務器上多個動態網頁面訪問同一資料,資料庫伺服器有鎖機制使得這些訪問有序地進行,從而保證資料的一致性。

對於靜態頁面和檔案(如 HTML 文檔和圖片等),可以儲存在網路檔案系統或者Distributed File System中。至於選擇哪一種,看系統的規模和需求而定。通過共用的網路檔案系統或者Distributed File System,Webmaster 可以看到統一的文檔儲存空間,維護和更新頁面比較方便,對共用儲存中頁面的修改對所有的伺服器都有效。

在這種結構下,當所有伺服器結點超載時,管理員可以很快地加入新的伺服器結點來處理請求,而無需將 Web 文檔等複製到結點的本地硬碟上。

有些 Web 服務可能用到 HTTP Cookie,它是將資料存放區在客戶的瀏覽器來追蹤和標識客戶的機制。使用 HTTP Cookie 後,來同一客戶的不同串連存在相關性,這些串連必須被發送到同一 Web 服務器。一些 Web 服務使用安全的 HTTPS 協議,它是 HTTP 協議加 SSL(Secure Socket Layer)協議。另有些Web服務可能使用安全的 HTTPS 協議,它是 HTTP 協議加 SSL 協議。當客戶訪問 HTTPS 服務(HTTPS 的預設連接埠為 443)時,會先建立一個 SSL 串連,來交換對稱公開金鑰加密的認證並協商一個 SSL Key,來加密以後的會話。在 SSL Key 的生命週期內,後續的所有 HTTPS 串連都使用這個 SSL Key,所以同一客戶的不同 HTTPS 串連也存在相關性。針對這些需要,IPVS調度器提供了持久服務的功能,它可以使得在設定的時間內,來自同一 IP 位址的不同串連會被發送到叢集中同一個伺服器結點,可以很好地解決客戶串連的相關性問題。

4. 可伸縮媒體服務

基於 LVS 的媒體集群的體繫結構3所示:第一層是負載調度器,一般採用 IP 負載平衡技術,可以使得整個系統有較高的吞吐率;第二層是 Web 服務器池,在每個結點上可以運行相應的媒體服務;第三層是共用儲存,通過網路檔案系統/Distributed File System儲存媒體節目。叢集中各結點是通過高速網路相串連。

IPVS 負載調度器一般使用直接路由方法(即 VS/DR 方法,將在以後文章中詳細敘述),來架構媒體集群系統。調度器將媒體服務請求較均衡地分發到各個伺服器上,而媒體伺服器將響應資料直接返回給客戶,這樣可以使得整個媒體集群系統具有很好的伸縮性。

媒體伺服器可以運行各種媒體服務軟體。目前,LVS 叢集對於 Real Media、Windows Media 和 Apple Quicktime 媒體服務都有很好的支援,都有真實的系統在運行。一般來說,流媒體服務都會使用一個TCP串連(如 RTSP 協議:Real-Time Streaming Protocol)進行頻寬的協商和流速的控制,通過 UDP 將流資料返回客戶。這裡,IPVS 調度器提供功能將 TCP 和 UDP 集中考慮,保證來自同一客戶的媒體 TCP 和 UDP 串連會被轉寄到叢集中同一台媒體伺服器,使得媒體服務準確無誤地進行。

共用儲存是媒體集群系統中最關鍵的問題,因為媒體檔案往往非常大(一部片子需要幾百兆到幾千兆的儲存空間),這對儲存的容量和讀的速度有較高的要求。對於規模較小的媒體集群系統,例如有3至6個媒體伺服器結點,儲存系統可以考慮用帶千兆網卡的 Linux 伺服器,使用軟體 RAID 和日誌型檔案系統,再運行核心的 NFS 服務,會有不錯的效果。對於規模較大的媒體集群系統,最好選擇對檔案分段(File Stripping)儲存和檔案快取有較好支援的Distributed File System;媒體檔案分段儲存在Distributed File System的多個儲存結點上,可以提高檔案系統的效能和儲存結點間的負載平衡;媒體檔案在媒體伺服器上自動地被緩衝,可提高檔案的訪問速度。否則,可以考慮自己在媒體伺服器上開發相應的工具,如緩衝工具能定時地統計出最近的熱點媒體檔案,將熱點檔案複製到本地硬碟上,並替換緩衝中的非熱點檔案,最後通知其他媒體伺服器結點它所緩衝的媒體檔案以及負載情況;在媒體伺服器上有應用程式層調度工具,它收到客戶的媒體服務請求,若所請求的媒體檔案緩衝在本地硬碟上,則直接轉給本地媒體服務進程服務,否則先考慮該檔案是否被其他媒體伺服器緩衝;如該檔案被其他伺服器緩衝並且該伺服器不忙,則將請求轉給該伺服器上的媒體服務進程處理,否則直接轉給本地媒體服務進程,從後端的共用儲存中讀出媒體檔案。

共用儲存的好處是媒體檔案的管理員看到統一的儲存空間,使得媒體檔案維護工作比較方便。當客戶訪問不斷增加使得整個系統超載時,管理員可以很快地加入新的媒體伺服器結點來處理請求。

Real 公司以其高壓縮比的音頻視頻格式、Real 媒體伺服器和媒體播放器 RealPlayer 而聞名。Real 公司正在使用以上結構將由 20 多台伺服器組成的 LVS 可伸縮Web和媒體集群,為其全球使用者提供 Web 和音頻視頻服務。Real 公司的進階技術主管聲稱 LVS 擊敗所有他們嘗試過的商品化負載平衡產品[7]。

5. 可伸縮 Cache 服務

有效網路 Cache 系統可以大大地減少網路流量、降低響應延時以及伺服器的負載。但是,若 Cache 伺服器超載而不能及時地處理請求,反而會增加響應延時。所以,Cache 服務的延展性很重要,當系統負載不斷增長時,整個系統能被擴充來提高 Cache 服務的處理能力。尤其,在主幹網上的 Cache 服務可能需要幾個 Gbps 的吞吐率,單台伺服器(例如 SUN 目前最高端的 Enterprise 10000 伺服器)遠不能達到這個吞吐率。可見,通過 PC 伺服器叢集實現可伸縮 Cache 服務是很有效方法,也是效能價格比最高的方法。

基於 LVS 的 Cache 叢集的體繫結構4所示:第一層是負載調度器,一般採用 IP 負載平衡技術,可以使得整個系統有較高的吞吐率;第二層是Cache伺服器集區,一般 Cache 伺服器放置在接近主幹 網際網路連線處,它們可以分布在不同的網路中。調度器可以有多個,放在離客戶接近的地方。

IPVS 負載調度器一般使用IP隧道方法(即 VS/TUN 方法,將在以後文章中詳細敘述),來架構 Cache 叢集系統,因為 Cache 伺服器可能被放置不同的地方(例如在接近主幹 網際網路連線處),而調度器與 Cache 伺服器集區可能不在同一個物理網路中。採用 VS/TUN 方法,調度器只調度 Web Cache 請求,而 Cache 伺服器將響應資料直接返回給客戶。在請求對象不能在本地命中的情況下,Cache 伺服器要向原始伺服器發請求,將結果取回,最後將結果返回給客戶;若採用 NAT技術的商品化調度器,需要四次進出調度器,完成這個請求。而用 VS/TUN 方法(或者 VS/DR 方法),調度器只調度一次請求,其他三次都由 Cache 伺服器直接存取 Internet 完成。所以,這種方法對 Cache 叢集系統特別有效。

Cache 伺服器採用本地硬碟來儲存可快取的對象,因為儲存可快取的對象是寫操作,且佔有一定的比例,通過本地硬碟可以提高 I/O 的訪問速度。Cache 伺服器間有專用的多播通道(Multicast Channel),通過 ICP 協議(Internet Cache Protocol)來互動資訊。當一台 Cache 伺服器在本地硬碟中未命中當前請求時,它可以通過 ICP 查詢其他 Cache 伺服器是否有請求對象的副本,若存在,則從鄰近的 Cache 伺服器取該對象的副本,這樣可以進一步提高 Cache 服務的命中率。

為 150 多所大學和地區服務的英國國家 JANET Web Cache 網在 1999 年 11 月用以上 LVS 結構實現可伸縮的 Cache 叢集[8],只用了原有 50 多台相互獨立 Cache 伺服器的一半,使用者反映網路速度跟夏天一樣快(學生放暑假)。可見,通過負載調度可以摸平單台伺服器訪問的毛刺(Burst),提高整個系統的資源使用率。

6. 可伸縮郵件服務

隨著 Internet 使用者不斷增長,很多 ISP 面臨他們郵件伺服器超載的問題。當郵件伺服器不能容納更多的使用者帳號時,有些 ISP 買更高檔的伺服器來代替原有的,將原有伺服器的資訊(如使用者郵件)遷移到新伺服器是很繁瑣的工作,會造成服務的中斷;有些 ISP 設定新的伺服器和新的郵件網域名稱,新的郵件使用者放置在新的伺服器上,如上海電信現在用不同的郵件伺服器 public1.sta.net.cn、public2.sta.net.cn 到 public9.sta.net.cn 放置使用者的郵件帳號,這樣靜態地將使用者分割到不同的伺服器上,會造成郵件伺服器負載不平衡,系統的資源使用率低,對使用者來說郵件的地址比較難記。

可以利用 LVS 架構實現高可伸縮、高可用的郵件服務系統。它的體繫結構5所示:在前端是一個採用IP負載平衡技術的負載調度器;第二層是伺服器集區,有 LDAP(Light-weight Directory Access Protocol)伺服器和一組郵件伺服器。第三層是資料存放區,通過Distributed File System來儲存使用者的郵件。叢集中各結點是通過高速網路相串連。

使用者的資訊如使用者名稱、口令、主目錄和郵件容量限額等儲存在 LDAP 伺服器中,可以通過 HTTPS 讓管理員進行使用者管理。在各個郵件伺服器上運行 SMTP(Simple Mail Transfer Protocol)、POP3(Post Office Protocol version 3)、IMAP4(Internet Message Access Protocol version 4)和 HTTP/HTTPS 服務。SMTP 接受和轉寄使用者的郵件,SMTP 服務進程查詢LDAP伺服器獲得使用者資訊,再儲存郵件。POP3 和 IMAP4 通過 LDAP 伺服器獲得使用者資訊,口令驗證後,處理使用者的郵件訪問請求。這裡,需要有機制避免不同伺服器上的 SMTP、POP3 和 IMAP4 服務進程對使用者郵件的讀寫衝突。HTTP/HTTPS 服務是讓使用者通過瀏覽器可以訪問郵件。

IPVS 調度器將 SMTP、POP3、IMAP4 和 HTTP/HTTPS 請求流負載較均衡地分發到各郵件伺服器上,從上面各服務的處理流程來看,不管請求被發送到哪一台郵件伺服器處理,其結果是一樣的。這裡,將 SMTP、POP3、IMAP4 和 HTTP/HTTPS 運行在各個郵件伺服器上進行集中調度,有利於提高整個系統的資源使用率。

系統中可能的瓶頸是 LDAP 伺服器,對 LDAP 服務中 B+ 型樹狀結構的參數進行最佳化,再結合高端的伺服器,可以獲得較高的效能。若Distributed File System沒有多個儲存結點間的負載平衡機制,則需要相應的郵件遷移機制來避免郵件訪問的傾斜。

這樣,這個叢集系統對使用者來說就像一個高效能、高可靠的郵件伺服器(例如上海電信只要用一個郵件網域名稱 public.sta.net.cn 就可以)。當郵件使用者不斷增長時,只要在叢集中增加伺服器結點和儲存結點。使用者資訊的集中儲存使得使用者管理變得容易,且叢集系統有利於提高資源使用率。

7. 小結

本文給出 LVS 叢集的通用體繫結構,並討論了它的設計原則和相應的特點;最後將 LVS 叢集應用於建立可伸縮的 Web、Media、Cache 和 Mail 網路服務,並指出了系統架設時應注意的要點。我們將在後續的文章中詳細解釋 LVS 叢集的技術、實現和應用。

關於作者
章文嵩 (wensong@linux-vs.org),開放源碼及 Linux 核心的開發人員,著名的 Linux 叢集項目--LVS (Linux Virtual Server) 的創始人和主要開發人員。他目前工作於國家並行與分散式處理重點實驗室,主要從事叢集技術、作業系統、Object Storage Service與資料庫的研究。他一直在自由軟體的開發上花費大量時間,並以此為樂。

本文章由 IBM developerWorks

 授權 非常空間 轉載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.