lvs負(fù)載均衡的機(jī)制優(yōu)勢和配置方式的匯總
前面我們介紹了相關(guān)的LVS轉(zhuǎn)發(fā)機(jī)制的三種方式,現(xiàn)在我們來歸納一下這三種機(jī)制的優(yōu)點,看看他們在負(fù)載平衡中的使用有什么優(yōu)勢。之后,再為大家介紹一下關(guān)于這些機(jī)制的四種配置方法和架構(gòu)方式。通過本文,您可以選擇一個較為適合您的方式進(jìn)行配置。
三種轉(zhuǎn)發(fā)機(jī)制的優(yōu)缺點
◆Virtual Server via NAT
VS/NAT 的優(yōu)點是服務(wù)器可以運(yùn)行任何支持TCP/IP的操作系統(tǒng),它只需要一個IP地址配置在LVS主機(jī)上,服務(wù)器組可以用私有的IP地址。缺點是它的擴(kuò)充能力有限,當(dāng)服務(wù)器結(jié)點數(shù)目升到20時,LVS主機(jī)本身有可能成為系統(tǒng)的新瓶頸,因為在VS/NAT中請求和響應(yīng)封包都需要通過負(fù)載平衡LVS主機(jī)。在 Pentium 166主機(jī)上測得重寫封包的平均延時為60us,假設(shè)TCP封包的平均長度為536 Bytes,則LVS主機(jī)的最大吞吐量為8.93 MBytes/s。再假設(shè)每臺服務(wù)器的吞吐量為600KBytes/s,這樣一個LVS主機(jī)可以帶動16臺服務(wù)器。
◆Virtual Server via IP Tunneling
在VS/TUN 的集群系統(tǒng)中,負(fù)載平衡LVS主機(jī)只將請求分配到不同的實際服務(wù)器,實際服務(wù)器將應(yīng)答的資料直接返回給用戶。這樣,負(fù)載平衡LVS主機(jī)就可以處理巨量的請求,而不會成為系統(tǒng)的瓶頸。即使負(fù)載平衡LVS主機(jī)只有100Mbps的全雙工網(wǎng)卡,虛擬服務(wù)器的最大吞吐量可以達(dá)到幾Gbps。所以,VS/TUN可以極大地增加負(fù)載平衡LVS主機(jī)分配的服務(wù)器數(shù)量,它可以用來構(gòu)建高性能超級服務(wù)器。VS/TUN技術(shù)對服務(wù)器的要求是所有的服務(wù)器必須支持"IP Tunneling"或者"IP Encapsulation"協(xié)議。目前,VS/TUN 的后端服務(wù)器主要運(yùn)行Linux操作系統(tǒng)。因為"IP Tunneling"正成為各個操作系統(tǒng)的標(biāo)準(zhǔn)協(xié)議,所以VS/TUN也會適用運(yùn)行其它操作系統(tǒng)的后端服務(wù)器。
◆Virtual Server via Direct Routing
同VS/TUN 一樣,VS/DRLVS主機(jī)只處理客戶到服務(wù)器端的連接,響應(yīng)資料可以直接從獨立的網(wǎng)絡(luò)路由返回給客戶。這可以極大地提高LVS集群系統(tǒng)的伸縮性。同 VS/TUN相比,這種方法沒有IP隧道的開銷,但是要求負(fù)載平衡LVS主機(jī)與實際服務(wù)器都有一塊網(wǎng)卡連在同一物理網(wǎng)段上,服務(wù)器網(wǎng)絡(luò)設(shè)備或者設(shè)備別名不作 ARP 響應(yīng)。
四種分配方法(Load-balancing Methods)
不同的分配方法建構(gòu)LVS主機(jī)成四種不同的排程
負(fù)載平衡排程是以連接為單位的。在HTTP協(xié)議(nowait)中,每個對象從WEB服務(wù)器上獲取都需要建立一個TCP連接,同一用戶的不同請求會被分配到不同的服務(wù)器上,所以這種連接的分配完全避免了用戶連結(jié)的突發(fā)性引起的負(fù)載不平衡。目前有以下4種排程算法:
輪流排程 Round-Robin Scheduling (RRS)
輪流排程算法是假設(shè)所有服務(wù)器處理性能均相同,依次將請求分配不同的服務(wù)器,算法簡單,但不適用于服務(wù)器組中處理性能不一致的情況。
加權(quán)輪流排程 Weighted Round-Robin Scheduling (WRRS)
為此使用加權(quán)輪流排程算法,用相應(yīng)的加權(quán)值表示服務(wù)器的處理性能,將請求數(shù)目按加權(quán)值的比例分配到各服務(wù)器。加權(quán)值高的服務(wù)器先收到連接,加權(quán)值高的服務(wù)器比加權(quán)值低的服務(wù)器處理更多的連接,相同權(quán)值的服務(wù)器處理相同數(shù)目的連接數(shù)。
最小連結(jié)數(shù)排程 Least-Connection Scheduling (LCS)
最小連結(jié)數(shù)排程是需要記錄各個服務(wù)器已建立TCP連接的數(shù)目,把新的連接請求發(fā)送當(dāng)前連接數(shù)最小的服務(wù)器。當(dāng)各個服務(wù)器有相同的處理性能時,最小連結(jié)數(shù)排程能把負(fù)載變化大的請求平均分布到各個服務(wù)器上,所有處理時間比較長的請求不可能被發(fā)送到同一臺服務(wù)器上。
加權(quán)最小連接數(shù)排程 Weighted Least-Connection Scheduling (WLCS)
但是,當(dāng)各個服務(wù)器的處理能力不同時,該算法并不理想,因為TCP連接處理請求后會進(jìn)入TIME_WAIT狀態(tài),TCP的TIME_WAIT 一般為2分鐘,此時連接還占用服務(wù)器的資源,所以會出現(xiàn)這樣情形,性能高的服務(wù)器已處理所收到的連接,連接處于TIME_WAIT狀態(tài),而性能低的服務(wù)器既要忙于處理所收到的連接,還要收到新的連接請求。加權(quán)最小連接分配是最小連接分配的超集,各個服務(wù)器用相應(yīng)的權(quán)值表示其處理性能。假設(shè)每臺服務(wù)器的權(quán)值為Wi(i=1..n),TCP連接數(shù)目為 Ti(i=1..n),依次選Ti/Wi為最小者的服務(wù)器為下一個分配到服務(wù)的服務(wù)器。
四種分配方法(Load-balancing Methods)
Round robin (RRS)
將工作平均的分配到服務(wù)器 (用于實際服務(wù)主機(jī)性能一致)
Least-connections (LCS)
向較少連接的服務(wù)器分配較多的工作(IPVS 表存儲了所有的活動的連接。用于實際服務(wù)主機(jī)性能一致。)
Weighted round robin (WRRS)
向較大容量的服務(wù)器分配較多的工作??梢愿鶕?jù)負(fù)載信息動態(tài)的向上或向下調(diào)整。 (用于實際服務(wù)主機(jī)性能不一致時)
Weighted least-connections (WLC)
考慮它們的容量向較少連接的服務(wù)器分配較多的工作。容量通過用戶指定的砝碼來說明,可以根據(jù)裝載信息動態(tài)的向上或向下調(diào)整。(用于實際服務(wù)主機(jī)性能不一致時)