9.3. LVS 排程概要

使用 LVS 叢集的其中一個優點是它可以在實時伺服器群組中執行有彈性且 IP 階層之 負載平衡的能力,這種彈性化的設計是由於系統管理員在為叢集設定選擇排程機制時, 有多種機制可以選擇。 LVS 的負載平衡優於較不彈性化的方法,如 『循環的 DNS』, DNS 的層次結構以及用戶端的快取將會導致負載失調。 除此之外,LVS 路由器所採用的 低階過濾器較優於應用程式階層的要求轉送,這是因為在網路封包階層的負載平衡將引發 較少的電腦運算額外負擔,並且允許較高的延展性。

藉由排程的應用,現行的路由器可以加入實時伺服器的運作以及(可選的)當傳送服務 要求時一個管理員指定的權重因素。 使用指定的權重將會給 予個別機器獨特的優先權,藉由使用這種形式的排程,可以使用許多種硬體與軟體的結 合來建立一群實時伺服器,而且現行的路由器也可以平均每一部實時伺服器的負載。

用於 LVS 叢集的排程機制事由一組稱為 IP Virtual ServerIPVS 模組的核心修正所提供,這些模組啟用了 layer 4 (L4) 的傳輸層切換,這是設計來使用一個 單一的 IP 位址在多部伺服器上的。

如要有效率地追蹤並且發送封包到實時伺服器上,IPVS 在核心中建立一個 IPVS 表格,這個表格是由現行的 LVS 路由器使用來重導來自一部虛擬伺服器位址的要求到(與傳回)一群實時伺服器。 這個 IPVS 表格由一個稱為 ipvsadm 的系統程式不斷地更新 — 依據叢集成員的可存取性來新增與移除它們。

9.3.1. 排程機制

IPVS 表格所採用的結構取決於系統管理員在任何虛擬伺服器上選用的排程機制,如要在 您所叢集之服務類型的允許最大的彈性,以及這些服務是如何排定的,Red Hat Enterprise Linux 提供下列 的排程機制,如需關於如何指定排程機制的指示,請參考 第 12.6.1 節

循環的排程

按照順序散發每一要求到一群實時伺服器中,藉由這個機制,不管系統容量與負載,一律 平等對待所有的實時伺服器。 這種排程模型類似『循環 DNS』,不過它涵蓋的範圍比較 廣泛,由於它是基於網路連線的而不是基於主機的。 LVS 循環排程也不會受到因快取 DNS 查詢而引起的負載失調。

依權重比例來分配的排程

按照順序散發每一要求到一群實時伺服器中,不過給予較多工作給擁有較大系統容量的 伺服器。 這個系統容量是由一個使用者指定的權重因素所決定,它將會由動態的負載 資訊來進行調整。 請參考 第 9.3.2 節 以取得衡量實時 伺服器的更多資訊。

假如一群實時伺服器的系統容量有很大的差異時,依權重比例的循環(Weighted round-robin) 排程是比較適合的,然而當要求的負載有相當大的差別時,權重較高的伺服器也許需要 回應高於它所分配到的要求。

最小連結

散發更多要求到含有較少主動連線的實時伺服器,因為它透過 IPVS 表追蹤現存的連線, 最少連線是一種動態排程機制的類型,當要求的負載量有很大的不同時,這將是一個很 好的選擇。 它最適用於每一成員節點皆擁有大致上相同系統容量的一群實時伺服器。 假如一群伺服器擁有不同的系統容量,依權重比例的最少連線排程是較佳的選擇。

依權重比例的最小連結(預設)

散發更多要求到含有相對於系統容量的較少主動連線的伺服器,系統容量是由一個使用者 指定的權重來定義,這個數值將會由動態的負載資訊來做調整。 附加這個權重的因素 使得這個機制可適用於含有不同硬體容量的實時伺服器群組,請參考 第 9.3.2 節 以取得關於依權重衡量實時伺服器的更多資訊。

基於局部性的最少連接排程

散發更多要求到含有相對於目的地 IP 之較少主動連線的伺服器,這個機制是設計來使 用在代理快取伺服器的叢集中,它會為一個 IP 位址發送封包到該位址所屬的伺服器, 除非該伺服器已經超越它的容量,並且已經有其他伺服器代為接受負載,在這種情況下, 它將指定 IP 位址到含有最少負載量的實時伺服器。

含有重複排程的基於局部性最少連接排程

散發更多要求到含有相對於目的地 IP 之較少主動連線的伺服器,這個機制是設計來使 用在代理快取伺服器的叢集中,它與基於局部性的最少連接排程所不同的是它對應目標 IP 位址到實時伺服器節點的子集。 然後將會發送要求到含有最低連線數子集中的伺服 器。 假如目的地 IP 所有節點的系統容量都已超載,它將會藉由新增整個實時伺服器群 組中含有最少連線數的實時伺服器到該目的地 IP 所屬之實時伺服器的子集,來為該目的 地 IP 位址複製一個新的伺服器。 再來會從實時伺服器子集中丟棄負載量最大的節點, 以防止複製過量。

目標地址散列排程

在一個靜態的雜湊表中搜尋目的地 IP 以散發要求到實時伺服器群組中,這種機制是 設計來使用在代理快取伺服器叢集的。

來源位址雜湊排程

藉由在一個靜態的雜湊表中搜尋來源 IP 以散發要求到實時伺服器群組中,這種機制是 設計來使用在含有多重防火牆的 LVS 路由器。

9.3.2. 伺服器權重與排程

LVS 叢集的系統管理員可以為實時伺服器群組中每一個節點指定一個 權重,這個權重是一個整數數值,這個數值屬於任何使用權重 之排程機制(例如依權重比例的最小連線)的一個重要因素,它可以幫助 LVS 路由器 更均衡含有不同系統容量之硬體的負載。

這個權重是按照比例來運作的,舉例來說,假如一部實時伺服器擁有權重 1,而另一部 伺服器擁有權重 5,那麼擁有權重 5 的伺服器將會在另一部伺服器進行 1 個連線時, 同時進行 5 個連線,一部實時伺服器權重的預設值是 1。

雖然藉由增加權重到實時伺服器群組之不同的硬體設定可以更有效率地幫助叢集的負載 平衡,不過當一部實時伺服器新加入實時伺服器群組時,而且虛擬伺服器是排定使用依 權重比例之最小連線機制,可能會導致暫時地負載不平衡狀況。 舉例來說,假設有三部 伺服器在實時伺服器群組中,伺服器 A 與 B 含有權重 1,而伺服器 C 的權重為 2。 當伺服器 C 因某種因素中斷時,伺服器 A 與 B 將會平均地分配被遺棄的負載,然而 當伺服器 C 重新上線時,LVS 路由器會發現它沒有任何的連線存在,路由器將不斷地 發送所有外來的要求給它,直到它的負載量與伺服器 A 與 B 相同為止。

為了要防止這種狀況的發生,系統管理員可以設定虛擬伺服器成為一部 靜止的 伺服器 — 每當一部新的實時伺服器節點重新 上線時,會重設最小連線表為 0,然後 LVS 路由器將會認為所有實時伺服器才剛剛加入 叢集中來發送要求。