LVS之基本原理

一、基本原理

1.1 單機&集羣&分佈式

 

1.1.1 集羣

  • 定義
    同一個業務,部署在多個服務器上(不同的服務器運行同樣的代碼,幹同一件事)

  • 特點

    1. 本來只有一臺機器處理訪問,現在有兩臺機器處理訪問了,分擔了壓力。
    2. 如果其中一臺故障,暫時用不了了。這時還有另一臺可以備用。
  • 分類

    1. 高可用集羣( High Availability Cluster)
      常見的就是2個節點做成的HA集羣,有很多通俗的不科學的名稱,比如”雙機熱備”, “雙機互備”, “雙機”。
      高可用集羣解決的是保障用戶的應用程序持續對外提供服務的能力。 (請注意高可用集羣既不是用來保護業務數據的,保護的是用戶的業務程序對外不間斷提供服務,把因軟件/硬件/人爲造成的故障對業務的影響降低到最小程度)。
      代表
      heartbeat
      keepalived

    2. 負載均衡集羣(Load Balance Cluster)
      集羣中所有的節點都處於活動狀態,它們分攤系統的工作負載。一般Web服務器集羣、數據庫集羣和應用服務器集羣都屬於這種類型。
      負載均衡集羣一般用於相應網絡請求的網頁服務器,數據庫服務器。這種集羣可以在接到請求時,檢查接受請求較少,不繁忙的服務器,並把請求轉到這些服務器上。從檢查其他服務器狀態這一點上看,負載均衡和容錯集羣很接近,不同之處是數量上更多。
      代表
      LVS
      HAproxy
      Nginx

    3. 科學計算集羣(High Performance Computing Cluster)
      高性能計算(High Perfermance Computing)集羣,簡稱HPC集羣。這類集羣致力於提供單個計算機所不能提供的強大的計算能力。

 
 

1.1.2 分佈式

  • 定義
    一個業務分拆多個子業務,部署在不同的服務器上(不同的服務器,運行不同的代碼,爲了同一個目的)
  • 特點
    1. 模塊之間獨立,各做各的事,便於擴展,複用性高
    2. 高吞吐量
      某個任務需要一個機器運行10個小時,將該任務用10臺機器的分佈式跑(將這個任務拆分成10個小任務),可能2個小時就跑完了

 
 

1.2 負載均衡&反向代理

 

1.2.1 負載均衡(Load Balance)

  • 按軟硬分類
    軟件
    LVS
    Nginx
    HAProxy

    硬件
    F5

  • 按工作層級
    四層
    LVS
    HAProxy

    七層
    Nginx
    HAProxy

emmm,後面nginx又新增了第三方模塊,stream模塊,大概是可以四層了。。。

 

1.2.2 反向代理(Proxy)

nginx proxy模塊

 

1.2.3 Nginx、HAProxy、LVS三者的優缺點

區別:https://blog.csdn.net/qlj324513/article/details/81541282

 
一、Nginx優點:

1、工作在網絡7層之上,可針對http應用做一些分流的策略,如針對域名、目錄結構,它的正規規則比HAProxy更爲強大和靈活,所以,目前爲止廣泛流行。

2、Nginx對網絡穩定性的依賴非常小,理論上能ping通就能進行負載功能。

3、Nginx安裝與配置比較簡單,測試也比較方便,基本能把錯誤日誌打印出來。

4、可以承擔高負載壓力且穩定,硬件不差的情況下一般能支撐幾萬次的併發量,負載度比LVS小。

5、Nginx可以通過端口檢測到服務器內部的故障,如根據服務器處理網頁返回的狀態碼、超時等,並會把返回錯誤的請求重新提交到另一個節點。

6、不僅僅是優秀的負載均衡器/反向代理軟件,同時也是強大的Web應用服務器。LNMP也是近些年非常流行的Web架構,在高流量環境中穩定性也很好。

7、可作爲中層反向代理使用。

8、可作爲靜態網頁和圖片服務器。

9、Nginx社區活躍,第三方模塊非常多,相關的資料在網上比比皆是。

Nginx缺點:

1、適應範圍較小,僅能支持http、https、Email協議。(直接純TCP和UDP代理)

2、對後端服務器的健康檢查,只支持通過端口檢測,不支持url來檢測。比如用戶正在上傳一個文件,而處理該上傳的節點剛好在上傳過程中出現故障,Nginx會把上傳切到另一臺服務器重新處理,而LVS就直接斷掉了,如果是上傳一個很大的文件或者很重要的文件的話,用戶可能會因此而不滿。

 
 

二、LVS優點:

1、抗負載能力強、是工作在網絡4層之上僅作分發之用,沒有流量的產生,這個特點也決定了它在負載均衡軟件裏的性能最強的,對內存和cpu資源消耗比較低。

2、配置性比較低,這是一個缺點也是一個優點,因爲沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人爲出錯的機率。

3、工作穩定,因爲其本身抗負載能力很強,自身有完整的雙機熱備方案,如LVS+Keepalived,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived

4、無流量,LVS只分發請求,而流量並不從它本身出去,這點保證了均衡器IO的性能不會收到大流量的影響。

5、應用範圍比較廣,因爲LVS工作在4層,所以它幾乎可以對所有應用做負載均衡,包括http、數據庫、在線聊天室等等。

LVS的缺點:

1、軟件本身不支持正則表達式處理,不能做動靜分離;而現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在。

2、如果是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較複雜了,特別後面有Windows Server的機器的話,如果實施及配置還有維護過程就比較複雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了。

 
 

三、HAProxy優點:

1、HAProxy是支持虛擬主機的,可以工作在4、7層(支持多網段)

2、HAProxy的優點能夠補充Nginx的一些缺點,比如支持Session的保持,Cookie的引導;同時支持通過獲取指定的url來檢測後端服務器的狀態。

3、HAProxy跟LVS類似,本身就只是一款負載均衡軟件;單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在併發處理上也是優於Nginx的。

4、HAProxy支持TCP協議的負載均衡轉發,可以對MySQL讀進行負載均衡,對後端的MySQL節點進行檢測和負載均衡,大家可以用LVS+Keepalived對MySQL主從做負載均衡。

5、HAProxy負載均衡策略非常多,HAProxy的負載均衡算法現在具體有8種

HAPorxy缺點:

1、不支持POP/SMTP協議

2、不支持SPDY協議

3、不支持HTTP cache功能。現在不少開源的lb項目,都或多或少具備HTTP cache功能。

4、重載配置的功能需要重啓進程,雖然也是soft restart,但沒有Nginx的reaload更爲平滑和友好。

5、多進程模式支持不夠好

 
 
 

1.3 LVS

1.3.1 基本介紹

LVS是 Linux Virtual Server 的簡稱,也就是Linux虛擬服務器。

這是一個由章文嵩博士發起的一個開源項目,它的官方網是 http://www.linuxvirtualserver.org

現在 LVS 已經是 Linux 內核標準的一部分。

使用 LVS 可以達到的技術目標是:通過 LVS 達到的負載均衡技術和 Linux 操作系統實現一個高性能高可用的 Linux 服務器集羣,它具有良好的可靠性、可擴展性和可操作性。從而以低廉的成本實現最優的性能。LVS 是一個實現負載均衡集羣的開源軟件項目,

LVS架構從邏輯上可分爲調度層、Server集羣層和共享存儲。

在這裏插入圖片描述

LVS在大規模網絡中應用存在不足

– 各轉發模式,網絡拓撲復雜,運維成本高

 
 

1.3.2 工作原理

在這裏插入圖片描述

  • 當用戶向負載均衡調度器(Director Server)發起請求,調度器將請求發往至內核空間
  • PREROUTING鏈首先會接收到用戶請求,判斷目標IP確定是本機IP,將數據包發往INPUT鏈
  • IPVS是工作在INPUT鏈上的,當用戶請求到達INPUT時,IPVS會將用戶請求和自己已定義好的集羣服務進行比對,如果用戶請求的就是定義的集羣服務,那麼此時IPVS會強行修改數據包裏的目標IP地址及端口,並將新的數據包發往POSTROUTING鏈
  • POSTROUTING鏈接收數據包後發現目標IP地址剛好是自己的後端服務器,那麼此時通過選路,將數據包最終發送給後端的服務器

簡單總結:

基於IP層和基於內容請求分發的負載平衡調度解決方法,並在Linux內核中實現

用戶請求LVS VIP,LVS根據轉發方式和算法,將請求轉發給後端服務器,後端服務器接受到請求,返回給用戶。

 
 

1.3.3 LVS的組成

  • ipvs(內核空間)
    一段代碼工作在內核空間,叫ipvs,是真正生效實現調度的代碼。

  • ipvsadm(用戶空間)
    另外一段是工作在用戶空間,叫ipvsadm,負責爲ipvs內核框架編寫規則,定義誰是集羣服務,而誰是後端真實的服務器(Real Server)

 
 

1.3.4 LVS相關術語

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地址。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章