第 9章. Linux Virtual Server 概要

Red Hat Enterprise Linux LVS 叢集使用一部稱為 主動路由器 的 Linux 機器來傳送來自網際網路的要求到一群伺服器中。 為了要完成這項工作,LVS 的 叢集由兩種基本的機器分類所組成 — LVS 路由器(一部主動的、一部備援的) 以及用來提供重要服務的一群實時伺服器。

主動的路由器在叢集中扮演兩種角色:

備援路由器的工作是監視主動路由器以及在失效的情況下用來取代它的角色。

9.1. 一個基本的 LVS 組態設定

圖形 9-1 顯示出一個含有兩個階層的簡易 LVS 叢集,在第 一個階層中為兩部 LVS 路由器 — 一部主動的而另一部用作備援。 這兩部 LVS 路由器都含有兩個網路介面,一個介面連接至網際網路,而另一個連接至私有網路, 使得它們可以調節兩個網路間的流量。 在這個例子中,主動路由器使用 Network Address Translation or NAT 來傳導來自網際網路的流量到第二階層中提供必要服務之不定數量的實時伺服器。 因此, 這個例子中的實時伺服器連接至一個既定的私有網路區段,並且透過主動的路由器傳送 所有的公眾網路流量。 對外界來說,這個伺服器叢集僅僅是一個個體而已。

圖形 9-1. 一個基本的 LVS 組態設定

對 LVS 叢集的服務要求將會以一個 虛擬 IP 位址或 VIP 來呈現,這是一個可公眾存取的位址,站台的系統管理員將此位址與一個完整的網域 名稱(FQDN)(例如 www.example.com)產生關聯,而且此位址將指定給一個或多個 『虛擬伺服器[1]。請注意,在容錯移轉階段,一個 VIP 位址將會從一部 LVS 路由器轉換到其他地方,因此將可維持該 IP 位址的存在,也稱為 浮動的 IP 位址

可以設定 VIP 位址的別名與將 LVS 路由器連線至網際網路的裝置名稱相同,假如 eth0 連線到網際網路,您則可以設定多部虛擬伺服器的別名為 eth0:1。 或者是,對於每一項服務,可以將每一部虛擬伺服器與一個分開的裝置相關聯,舉例來說, 可以在 eth0:1 處理 HTTP 的流量,而在 eth0:2 處理 FTP 的流量。

同一時間只能啟動一部 LVS 路由器,現行路由器的角色是重導來自虛擬 IP 位址的服務 要求到實時伺服器,重導是基於 第 9.3 節 中所詳細介紹 的八種已支援的負載平衡機制之一。

現行的路由器透過簡易的 send/expect 程式碼 來動態地監視 實時伺服器上特定服務的整體狀況。 為了要輔助偵測服務的使用狀況,需要動態的資料, 如 HTTPS 或 SSL,系統管理員也可以呼叫外部的執行檔。 假如實時伺服器上的一項服務 發生不正常的現象,現行的路由器將會停止傳送工作到該伺服器,直到它回復到正常運作 狀況為止。

備援路由器將扮演一部待機系統的角色,LVS 路由器將會透過主要的外部公眾介面 (容錯移轉的情況下的私有介面)定期地交換 heartbeat 訊息。 當備援節點無法在 預期的間歇時間接收到一個 heartbeat 訊息,它將會初始一個容錯移轉,並且將會取代 現行路由器的角色。 在容錯移轉階段,備援路由器將使用一項稱為 ARP spoofing 的技術來取代由失效的路由器所伺服的 VIP 位址 — 備援的 LVS 路由器宣稱自己 為傳送至失效節點之 IP 封包的目的地,當失效的節點回復為正常狀況時,備援的節點 將會再度回到擔任熱備援的角色。

圖形 9-1 所使用的簡單、兩層的設定對於不經常變動的叢集 伺服資料是最佳的 — 例如靜態的網頁 — 因為個別的實時伺服器並不自動 在每一節點間作資料的同步。

9.1.1. 資料重複與在實時伺服器間共享資料

因為在 LVS 叢集中沒有嵌入式的元件使得在實時伺服器間共享相同的資料,系統管理員 將有兩種基本的選項:

  • 同步實時伺服器群組的資料

  • 新增第三層到拓樸中,以用作共用資料存取

第一個選項較適合不允許大量使用者上傳與變更實時伺服器資料的伺服器,假如叢集允許 大量使用者修改資料,例如一個電子商務的網站,請選擇新增第三層的選項。

9.1.1.1. 設定實時伺服器來同步資料

系統管理員可以選擇許多種方法來同步一群實時伺服器中的資料,例如可以使用 shell 程式碼,使得在一個網頁工程師更新一個網頁後,該網頁將會同時傳送到所有的伺服器。 叢集管理員也可使用如 rsync 的程式以在固定的間歇時間於所有 的節點複製變更的資料。

然而,假如由於使用者不斷地上傳資料或者是執行資料庫的處理程序而導致叢集負載 過重,這種類型的資料同步將無法最佳化地運作。 對於擁有高負載量的叢集,一個 三層的拓樸 將是最理想的解決方案。

[1]

一部虛擬伺服器是設定來 聽取一個特定虛擬 IP 的一項服務。 請參考 第 12.6 節 以取得更多關於使用 Piranha 組態設定工具 來設定一部虛擬伺服器 的資訊。