【LVS】簡介與說明

foreverfriends發表於2018-03-23

一、IPVS的三種負載均衡技術

  • 通過NAT實現虛擬伺服器(VS/NAT)

 

客戶通過Virtual IP Address(虛擬服務的IP地址)訪問網路服務時,請求報文到達排程器,排程器根據連線排程演算法從一組真實伺服器中選出一臺伺服器,將報文的目標地址 Virtual IP Address改寫成選定伺服器的地址,報文的目標埠改寫成選定伺服器的相應埠,最後將修改後的報文傳送給選出的伺服器。同時,排程器在連線Hash 表中記錄這個連線,當這個連線的下一個報文到達時,從連線Hash表中可以得到原選定伺服器的地址和埠,進行同樣的改寫操作,並將報文傳給原選定的服務 器。當來自真實伺服器的響應報文經過排程器時,排程器將報文的源地址和源埠改為Virtual IP Address和相應的埠,再把報文發給使用者。我們在連線上引入一個狀態機,不同的報文會使得連線處於不同的狀態,不同的狀態有不同的超時值。在TCP 連線中,根據標準的TCP有限狀態機進行狀態遷移,這裡我們不一一敘述,請參見W. Richard Stevens的《TCP/IP Illustrated Volume I》;在UDP中,我們只設定一個UDP狀態。不同狀態的超時值是可以設定的,在預設情況下,SYN狀態的超時為1分鐘,ESTABLISHED狀態的超 時為15分鐘,FIN狀態的超時為1分鐘;UDP狀態的超時為5分鐘。當連線終止或超時,排程器將這個連線從連線Hash表中刪除。

這樣,客戶所看到的只是在Virtual IP Address上提供的服務,而伺服器叢集的結構對使用者是透明的。對改寫後的報文,應用增量調整Checksum的演算法調整TCP Checksum的值,避免了掃描整個報文來計算Checksum的開銷。

 

  • 通過IP隧道實現虛擬伺服器(VS/TUN)

 

VS/TUN 的工作流程如圖5所示:它的連線排程和管理與VS/NAT中的一樣,只是它的報文轉發方法不同。排程器根據各個伺服器的負載情況,動態地選擇一臺伺服器, 將請求報文封裝在另一個IP報文中,再將封裝後的IP報文轉發給選出的伺服器;伺服器收到報文後,先將報文解封獲得原來目標地址為VIP的報文,伺服器發 現VIP地址被配置在本地的IP隧道裝置上,所以就處理這個請求,然後根據路由表將響應報文直接返回給客戶。

在這裡需要指出,根據預設的TCP/IP協議棧處理,請求報文的目標地址為VIP,響應報文的源地址肯定也為VIP,所以響應報文不需要作任何修改,可以直接返回給客戶,客戶認為得到正常的服務,而不會知道究竟是哪一臺伺服器處理的。

 

  • 通過直接路由實現虛擬伺服器(VS/DR)

 

VS/DR 的工作流程:它的連線排程和管理與VS/NAT和VS/TUN中的一樣,它的報文轉發方法又有不同,將報文直接路由給目標伺服器。在VS/DR 中,排程器根據各個伺服器的負載情況,動態地選擇一臺伺服器,不修改也不封裝IP報文,而是將資料幀的MAC地址改為選出伺服器的MAC地址,再將修改後 的資料幀在與伺服器組的區域網上傳送。因為資料幀的MAC地址是選出的伺服器,所以伺服器肯定可以收到這個資料幀,從中可以獲得該IP報文。當伺服器發現 報文的目標地址VIP是在本地的網路裝置上,伺服器處理這個報文,然後根據路由表將響應報文直接返回給客戶。

 

二、IPVS在核心中實現的八種連線排程演算法

  • 輪叫排程(Round-Robin Scheduling)
  • 加權輪叫排程(Weighted Round-Robin Scheduling)
  • 最小連線排程(Least-Connection Scheduling)
  • 加權最小連線排程(Weighted Least-Connection Scheduling)
  • 基於區域性性的最少連結(Locality-Based Least Connections Scheduling)
  • 帶複製的基於區域性性最少連結(Locality-Based Least Connections with Replication Scheduling)
  • 目標地址雜湊排程(Destination Hashing Scheduling)
  • 源地址雜湊排程(Source Hashing Scheduling)

相關文章