001 LVS基礎概念

  • LVS簡介
  • Linux Virtual Server項目
  • 網絡分層
  • IP虛擬服務器軟件
  • IP調度算法
  • 內核Layer-7交換機KTCPVS
  • LVS集羣特點
  • LVS與Nginx對比

LVS的英文全稱是Linux Virtual Server,即Linux虛擬服務器。它是我們國家章文嵩博士的一個開源項目,在Linux內核2.6中,它已經成爲內核的一部分,在此之前的內核版本則需要重新編譯內核。

LVS主要用於多服務器的負載均衡。它工作在網絡4層,可以實現高性能,高可用的服務器集羣技術。它廉價,可把許多低性能的服務器組合在一起形成一個超級服務器。它易用,配置非常簡單,且有多種負載均衡方法。它穩定可靠,即使在集羣的服務器中某臺服務器無法正常工作,也不影響整體效果。另外可擴展性非常好。

Linux Virtual Server項目

針對高可伸縮、高可用網絡服務的需求,給出了基於IP層和基於內容請求分發的負載均衡調度解決方法,並在Linux內核中實現了這些方法,將一組服務器構成一個實現可伸縮的、高可用網絡服務的虛擬服務器。

一組服務器通過高速的局域網或者地理分佈的廣域網相互連接,在它們的前端有一個負載調度器(Load Balancer)。負載調度器能無縫地將網絡請求調度到真實服務器上,從而使得服務器集羣的結構對客戶是透明的,客戶訪問集羣系統提供的網絡服務就像訪問一臺高性能、高可用的服務器一樣。由於LVS的負載調度技術是在Linux內核中實現的,稱之爲Linux虛擬服務器(Linux Virtual Server)。

LVS項目的目標:使用集羣技術和Linux操作系統實現一個高性能、高可用的服務器,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)、和可管理性(Manageability)。
目前,LVS項目提供了一個實現可伸縮網絡服務的LinuxVirtualServer框架

  • E-Commerce
  • General Network Services
  • Cluster Management:集羣管理軟件
  • KTCPVS:基於內容請求分發的內核Layer-7交換機
  • IPVS:提供了含有三種IP負載均衡技術的IP虛擬服務器軟件

可以利用LVS框架實現高可伸縮的、高可用的Web、Cache、Mail和Media等網絡服務;在此基礎上,可以開發支持龐大用戶數的、高可伸縮的、高可用的電子商務應用。
Nginx工作在OSI7層模型下,LVS工作在下四層

IP虛擬服務器軟件IPVS

在調度器的實現技術中,IP負載技術是效率最高的。IPVS軟件實現了三種IP負載均衡技術。它們的大致原理如下:

Virtual Server via Direct Routing (VS/DR)
VS/DR通過改寫請求報文的MAC地址,將請求發送到真實服務器,而真實服務器將響應直接返回給客戶。同VS/TUN技術一樣,VS/DR技術可極大地提高集羣系統的伸縮性。這種方法沒有IP隧道的開銷,對集羣中的真實服務器也沒有必須支持IP隧道協議的要求,但是要求調度器與真實服務器都有一塊網卡連在同一物理網段上。

Virtual Server via Network Address Translation (VS/NAT)
通過網絡地址轉換,調度器重寫請求報文的目標地址,根據預設的調度算法,將請求分派給後端的真實服務器;真實服務器的響應報文通過調度器時,報文的源地址被重寫,再返回給客戶,完成整個負載調度過程。

Virtual Server via IP Tunneling (VS/TUN)
採用NAT技術時,由於請求和響應報文都必須經過調度器地址重寫,當客戶請求越來越多時,調度器的處理能力將成爲瓶頸。爲了解這個問題,調度器把請求報文通過IP隧道轉發至真實的服務器,而真實服務器將響應直接返回給客戶,所以調度器只處理請求報文。由於一般網絡服務應答比請求報文大許多,採用VS/TUN技術後,集羣系統的最大吞吐量可以提高10倍。

IPVS 8種調度算法

  1. 輪叫 Round Robin
  2. 加權輪叫 Weighted Round Robin
  3. 最少鏈接 Least Connections
  4. 加權最少鏈接 Weighted Least Connections
  5. 基於局部性的最少鏈接 Locality-Based Least Connections
  6. 帶複製的基於局部性的最少鏈接 Locality-Based Least Connections with Replication
  7. 目標地址散列 Destination Hashing
  8. 源地址散列 Source Hashing
內核Layer-7交換機KTCPVS

在基於IP負載調度技術中,當一個TCP連接的初始SYN報文到達時,調度器就選擇一臺服務器,將報文轉發給它。此後通過查發報文的IP和TCP頭地址,保證此連接的後繼報文被轉發到該服務器。這樣,IPVS無法檢查到請求的內容再選擇服務器,這就要求後端服務器組提供相同的服務,不管請求被髮送到哪一臺服務器,返回結果都是一樣的,但是,在有些應用中後端服務器功能不一,有的提供HTML文檔,有的提供圖片,有的提供CGI,這就需要基於內容的調度(Content-Based Scheduling)

LVS集羣特點
  1. 有三種IP負載均衡和八種連接調度算法的IPVS軟件
  2. 在IPVS內部實現上,採用了高效的Hash函數和垃圾回收機制,能正確處理所調度報文相關的ICMP消息
  3. 虛擬服務的設置數目沒有限制,每個虛擬服務有自已的服務器集。
  4. 它支持持久虛擬服務(如HTTP Cookie和HTTPS等需要該功能的支持),並提供詳盡的統計數據,如連接的處理速率和報文的流量等。
  5. 針對大規模拒絕服務(Deny of Service)攻擊,實現了三種防衛策略。
  6. 有基於內容請求分發的應用層交換軟件KTCPVS,它也是在Linux內核中實現。
  7. 有相關的集羣管理軟件對資源進行監測,能及時將故障屏蔽,實現系統的高可用性。
  8. 主、從調度器能週期性地進行狀態同步,從而實現更高的可用性。

LVS與Nginx對比

負載均衡 4層負載均衡 7層負載均衡
技術原理 IP+TCP端口 URL應用層(內容交換)
典型代表 LVS Ngin、Haproxy、MySQL Proxy
優點和缺點 不理解mysql、ftp、http等應用協議,滿足不了特定需求,如動靜分離,緩存自定義等,但是配置簡單,效率也很高 對負載均衡設備要求很高,處理七層能力一般低於四層模式的部署方式,但比較智能化,比如動態分離,根據不同請求定義圖片,緩存,可以對客戶端請求和服務器的相應進行自定義修改,極大提升了應用系統在網絡層的靈活性
安全性 SYNFlood攻擊,有的軟四層應用則會轉發到後端服務器,有的則可以防止攻擊,這個和設備(軟硬)有一定關係。 一般可以在七層進行攔截,不影響後臺服務器正常運營,可以設置多種策略,過濾特定報文。
應用 對應TCP應用 比如c/s開發的ERP 應用廣發HTTP協議,應用主要是網站或內部信息平臺等B/S開發的系統
案例 接受客戶的syn請求,通過上述方式選擇後端指定服務器,並對報文中目標IP地址進行修改,改爲後端服務器IP,TCP連接是直接建立,而負載均衡類似路由器作用 如果要根據真正的應用層內容在選擇服務器,則先代理最終服務器和客戶端建立連接(三次握手)後,纔可能接受到客戶端發送的真正應用層內容報文,然後根據該報文中特定字段,加上負載均衡設備的服務器選擇方式,決定最終選擇的內部服務器。此時充當了代理服務器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章