1. 程式人生 > >LVS -- 四種工作模式的優缺點比較(NAT/TUN/DR/FULLNAT)

LVS -- 四種工作模式的優缺點比較(NAT/TUN/DR/FULLNAT)

LVS模式

  • LVS:Linux Virtual Server,Linux虛擬伺服器,是一個虛擬的伺服器集群系統。本專案在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟體專案之一。
  • 工作在TCP/IP協議的四層,其轉發是依賴於四層協議的特徵進行轉發,由於其轉發要依賴於協議的特徵進行轉發,因此需要在核心的TCP/IP協議棧進行過濾篩選,這就需要在核心的模組來完成,而這樣的過濾轉發規則又是由管理員進行定義。
  • LVS是兩段式的架構設計,在核心空間中工作的是”ipvs”,而在使用者空間中工作的,用來定義叢集服務規則的是”ipvsadm”。這就很容易想到iptables,而LVS正好工作在iptables的input鏈上。

LVS的組成

  • ipvsadm:用於管理叢集服務的命令列工具,工作於Linux系統中的使用者空間。
  • ipvs:IP虛擬伺服器(IP Virtual Server),簡寫為IPVS,為lvs提供服務的核心模組,工作於核心空間 (相對於是框架,通過ipvsadm新增規則,來實現ipvs功能)。

核心狀態

  • kernel 2.6.x 已內建 LVS 模組
  • kernel 2.4.x 需打補丁
  • rhel5 預設安裝即可使用 LVS 模組, 另以 yum 安裝 ipvsadm 套件
  • Linux核心2.4.23之前的核心中模組預設是不存在的,需要自己手動打補丁,然後把此模組編譯進核心才可以使用此功能。

LVS中每個主機IP地址的定義

  • VIP:Director用來向客戶端提供服務的IP地址,也是DNS解析的IP
  • RIP:叢集節點(後臺真正提供服務的伺服器)所使用的IP地址
  • DIP:Director用來和RIP進行互動的IP地址
  • CIP:公網IP,客戶端使用的IP

LVS的四種轉發模式

  • DR: 直接路由 (Direct routing)
  • TUN: IP隧道 (IP tunneling)
  • NAT: 網路地址轉換 (Network address translation)
  • FullNAT: 網路地址轉換

DR

  • client -> vs -> Rs ->client
  • 修改目標MAC
  • 請求由LVS接受,由真實提供服務的伺服器(RealServer, RS)直接返回給使用者,返回的時候不經過LVS。
  • 負載排程器中只負責排程請求,而伺服器直接將響應返回給客戶,可以極大地提高整個集群系統的吞吐量。
  • DR模式是效能最好的一種模式。
  • 排程器和伺服器組都必須在物理上有一個網絡卡通過不分斷的區域網相連。
  • LVS和RS必須在同一個VLAN下,否則LVS無法作為RS的閘道器。

TUN(隧道)

  • client ->vs ->Rs -> client
  • 各叢集節點可以跨越不同的網路,不用在同一個VLAN
  • 排程器根據各個伺服器的負載情況,動態地選擇一臺伺服器,將請求報文封裝在另一個 IP 報文中,再將封裝後的 IP 報文轉發給選出的伺服器
  • 伺服器收到報文後,先將報文解封獲得原來目標地址為 VIP 的報文,伺服器發現 VIP地址被配置在本 地的 IP 隧道裝置上,所以就處理這個請求,然後根據路由表將響應報文直接返回給客戶

NAT

  • client -> vs -> Rs ->vs ->client
  • 伺服器可以執行任何支援 TCP/IP 的作業系統
  • 只需要一個 IP 地址配置在排程器上,伺服器組可以用私有的 IP 地址。
  • 伸縮能力有限, 當伺服器結點數目升到 20 時,排程器本身有可能成為系統的新瓶頸,因為在 VS/NAT 中請求和響應報文都需要通過負載排程器。
  • LVS和RS必須在同一個VLAN下,否則LVS無法作為RS的閘道器。

FullNAT

  • 抗攻擊,跨vlan
  • 解決了跨VLAN的問題。採用這種方式,LVS和RS的部署在VLAN上將不再有任何限制,大大提高了運維部署的便利性。

排程演算法

  • LVS 的負載排程演算法 在核心中的連線排程演算法上,IPVS 已實現了以下八種排程演算法
  • 輪叫排程(Round­Robin Scheduling )
    (1)輪叫的方式依次將請求排程不同的伺服器
    (2)演算法的優點是其簡潔性,它無需記錄當前所有連線的狀態,所以它是一種無狀態排程。
  • 加權輪叫排程(Weighted Round­Robin Scheduling )
    (1)解決伺服器間效能不一的情況,
    (2)按權值的高低和輪叫方式分配請求到各伺服器。權值高的伺服器先收到的連線,權值高的服 務器比權值低的伺服器處理更多的連線,相同權值的伺服器處理相同數目的連線數。
  • 最小連線排程(Least­Connection Scheduling )
    (1)把新的連線請求分配到當前連線數最小的伺服器。
    (2)一種動態排程演算法,它通過伺服器當前所活躍的連線數來估計服
    務 器的負載情況。排程器需要記錄各個伺服器已建立連線的數目,當一個請求被排程到某臺伺服器,其連線數加 1;當連線中止或超時,其連線數減一。
  • 加權最小連線排程(Weighted Least­Connection Scheduling)
    (1)最小連線排程的超集,各個伺服器用相應的權值表示其處理效能。
    (2)伺服器的預設權值為1,系統管理員可以動態地設定伺服器的權 值。
    (3)加權最小連線排程在排程新連線時儘可能使伺服器的已建立連線數和其權值成比例。
  • 基於區域性性的最少連結(Locality­Based Least Connections Scheduling )
    (1)簡稱LBLC演算法,針對請求報文的目標 IP 地址的負載均衡排程,目前主要用於 Cache 集群系統,因為在 Cache 叢集中 客戶請求報文的目標 IP 地址是變化的。
    (2)假設任何後端伺服器都可以處理任一請求,演算法的設計目標是在伺服器的負載基本平衡情況下,將相同目標IP地址的請求排程到同一臺伺服器,來提高各臺伺服器的訪問區域性性和主存 Cache 命中率,從而整個集群系統的處理能力。
    (3)LBLC排程演算法先根據請求的目標IP地址找出該目標IP地址最近使用的伺服器,若該伺服器是可用的且沒有超載,將請求傳送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處於其一半的工作負載,則用 “ 最少連結 ” 的原則選出一個可用的伺服器,將請求傳送到該伺服器。
  • 帶複製的基於區域性性最少連結(Locality­Based Least Connections with Replication Scheduling)
    (1)簡稱 LBLCR演算法,也是針對目標 IP 地址的負載均衡,目前主要用於 Cache集群系統。它與 LBLC 演算法的不同之處是它要維護從一個目標 IP 地址到一組伺服器的對映。
    (2)LBLCR 演算法先根據請求的目標 IP 地址找出該目標 IP 地址對應的伺服器組;按 “ 最小連線 ” 原則從該伺服器組中選出一臺伺服器,若伺服器沒有超載,將請求傳送到該伺服器;若伺服器超載;則按 “ 最小連線 ” 原則從整個叢集中選出一臺伺服器,將該伺服器加入到伺服器組中,將請求傳送到該伺服器。同時,當該伺服器組有一段時間沒有被修改,將最忙的服 務器從伺服器組中刪除,以降低複製的程度。
  • 目標地址雜湊排程(Destination Hashing Scheduling)
    (1)針對目標 IP 地址的負載均衡,但它是一種靜態對映演算法,通過一個雜湊(Hash)函式將一個目標 IP 地址對映到一臺伺服器。
    (2)目標地址雜湊排程演算法先根據請求的目標 IP 地址,作為雜湊鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。
  • 源地址雜湊排程(Source Hashing Scheduling)
    (1)源地址雜湊排程(Source Hashing Scheduling)演算法正好與目標地址雜湊排程演算法相反
    (2)它根據請求的源 IP 地址,作為雜湊鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。
    (3)它採用的雜湊函式與目標地址雜湊排程演算法 的相同。它的演算法流程與目標地址雜湊排程演算法的基本相似,除了將請求的目標 IP 地址換成請求的源 IP 地址。
    (4)在實際應用中,源地址雜湊排程和目標地址雜湊排程可以結合使用在防火牆叢集中,它們可以保證整個系統的唯一出入口。