負載均衡和LVS介紹

負載均衡集羣介紹

  • 主流的開源軟件有LVS、keepalived、haproxy、nginx等
  • 其中LVS屬於四層(IP+端口)負載均衡,Nginx屬於七層,haproxy既能夠認爲是四層,也能夠當作七層使用
  • keepalived的負載均衡功能其實就是lvs
  • lvs這種四層負載均衡是分發端口通訊的,好比MySQL;而Nginx僅僅支持URL實現負載均衡的方式,例如http、https、mail;haproxy是支持端口和URL實現的負載均衡的,因此也支持MySQL。
  • 相比較來講,LVS這種四層得負載均衡更加穩定,能承受更多的請求;而Nginx這種七層的負載均衡則更加靈活,能實現更多的個性化需求

LVS 介紹

  • LVS(Linux Virtual Server),是由章文嵩博士1998年5月成立的自由軟件項目,主要使用器集羣技術和Linux操做系統實現一個高性能、高可用的服務器
  • 流行度不亞於apache的httpd,基於TCP/IP作的路由和轉發,穩定性和效率很高
  • LVS 有三種常見的模式:NAT、DR、IP Tunnel
  • LVS 架構中有一個核心角色叫作分發器(Load balancer),它用來分發用戶的請求,還有諸多處理用戶請求的服務器(Real Server, 簡稱rs)

LVS 三種模式

NAT模式

  • 藉助iptables的nat表來實現
  • 用戶的請求到分發器後,經過預設的iptables規則,把請求的數據包轉發到後端的rs上去
  • rs須要設定網關爲分發起的內網IP
  • 用戶請求的數據包和返回給用戶的數據包所有通過分發器,因此分發器成爲瓶頸
  • 不過只須要分發器有公網IP便可,因此比較省公網IP資源

IP Tunnel模式

  • 須要有一個公共的IP(即VIP)配置在分發器和全部rs上
  • 客戶端請求的目標IP爲vip,分發器接收到請求數據包後,會對數據包作一個加工,會把目標IP改成rs的IP,這樣數據包就到了rs上
  • rs接收數據包後,會還原數據包,這樣目標IP爲vip,由於全部rs上配置了這個vip,因此它會認爲是它本身

DR模式

  • 也須要有一個公共的IP配置在分發器和全部rs上,也就是vip
  • 和IP Tunnel不一樣的是,它會把數據包的MAC地址修改成rs的MAC地址
  • rs接受數據包後,會還原原始數據包,這樣目標IP爲vip,由於全部rs上配置了這個vip,因此它會認爲是它本身

八種調度算法

本段內容來源(連接)html

  • 輪詢/輪詢(Round Robin)
    調度器經過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而無論服務器上實際的鏈接數和系統負載。linux

  • 加權輪詢/輪叫(Weighted Round Robin)
    調度器經過"加權輪叫"調度算法根據真實服務器的不一樣處理能力來調度訪問請求。這樣能夠保證處理能力強的服務器處理更多的訪問流量。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。nginx

  • 最少連接(Least Connections)
    調度器經過"最少鏈接"調度算法動態地將網絡請求調度到已創建的連接數最少的服務器上。若是集羣系統的真實服務器具備相近的系統性能,採用"最小鏈接"調度算法能夠較好地均衡負載。算法

  • 加權最少連接(Weighted Least Connections)
    在集羣系統中的服務器性能差別較大的狀況下,調度器採用"加權最少連接"調度算法優化負載均衡性能,具備較高權值的服務器將承受較大比例的活動鏈接負載。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。apache

  • 基於局部性的最少連接(Locality-Based Least Connections)
    "基於局部性的最少連接" 調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器 是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工做負載,則用"最少連接"的原則選出一個可用的服務 器,將請求發送到該服務器。後端

  • 帶複製的基於局部性最少連接(Locality-Based Least Connections with Replication)
    "帶複製的基於局部性最少連接"調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。它與LBLC算法的不一樣之處是它要維護從一個 目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務 器組,按"最小鏈接"原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器,若服務器超載;則按"最小鏈接"原則從這個集羣中選出一 臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以下降複製的 程度。服務器

  • 目標地址散列(Destination Hashing)
    "目標地址散列"調度算法根據請求的目標IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。網絡

  • 源地址散列(Source Hashing)
    "源地址散列"調度算法根據請求的源IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。架構

經常使用的算法是前4種。負載均衡

相關文章
相關標籤/搜索