1. 程式人生 > >LVS基礎知識概述

LVS基礎知識概述

  • LVS(Liunx Virtual Server)

LVS作用就是實現負載均衡,而負載均衡簡單來所就是將使用者請求合理的分流到後端節點之上,以實現資源的高效利用。
LVS特點是可以跨平臺,也就是在windows、Linux系統之上都可以用。
LVS的核心元件:

  1. ip_vs:linux的核心功能模組,工作在核心,依賴該核心模組實現負載均衡功能
  2. ipvsadm:應用層程式,該程式可以和核心中的ip_vs模組通訊,實現對負載均衡的管理和控制
  3. keepalived也可以對ip_vs進行管理

相關概念:

  1. DS:Director Server。前端負載均衡器節點。
  2. RS:Real Server。後端真實的工作伺服器。
  3. VIP:向外部直接面向用戶請求,作為使用者請求的目標的IP地址。
  4. DIP:Director Server IP,主要用於和內部主機通訊的IP地址。
  5. RIP:Real Server IP,後端伺服器的IP地址。
  6. CIP:Client IP,訪問客戶端的IP地址。

LVS的工作模式:DR模式、NAT模式、TUN模式、FULLNAT模式。

LVS的排程演算法,所謂演算法簡單來說就是按照什麼規則來送後端的多個RS中挑選一個給使用者提供服務。演算法有靜態演算法和動態演算法。

靜態演算法:無論後端的RS當前的伺服器負載情況怎麼樣,都安裝固定的方式來給RS分配使用者請求

  1. rr:Round Bobin,輪詢,將客戶端的請求交替分配給RS
  2. wrr:Weighted Round Bobin,加權輪詢,根據RS的效能不同,讓他們來承擔不同比例的使用者請求
  3. dh:Destination Hashing,目標地址雜湊排程,基於使用者所請求的地址做雜湊表
    作用:實現將對於相同的地址的請求排程到同一個RS之上
    使用場景:適應於前端是一個DR,後端是多個cache的時候
  4. sh:Source Hashing,源地址的雜湊排程,基於使用者的ip地址做雜湊表
    作用:實現將同一個客戶端排程到相同的RS之上

動態演算法:

  • lc:Least Connection,最小連線數排程,本質是排程到當前負載最低的主機上
    overhead=active*256+inactive
  • wlc:Weighted Least Connection,加權最小連線數排程,本質是排程到當前負載最低的主機上
    overhead=(active*256+inactive)/weight
  • SED:是wlc補充,為了降低overhead出現重複的情況
    overhead=((active+1)*256+inactive))/weight
  • lblc:基於目標地址的最小連線數排程,這種演算法那是lc和dh的組合,適應於cache場景
  • lblcr:帶有複製功能的lblc

演算法的選型:

  • 一般的網路的服務(http mail mysql)
    rr wlc wrr
  • 快取服務(web cache/db cache)
    dh lblc lblcr