常用負載均衡的工具講解及說明

常用負載均衡的工具

Nginx、LVS、HAProxy、 F5

​ 負載均衡即是代理服務器將接收的請求均衡的分發到各服務器中,負載均衡主要解決網絡擁塞問題,提高服務器響應速度,服務就近提供,達到更好的訪問質量,減少後臺服務器大併發壓力。

什麼是 Nginx ?

​ Nginx ,是一個 Web 服務器和反向代理服務器,用於 HTTP、HTTPS、SMTP、POP3 和 IMAP 協議。

Nginx負載均衡的原理是什麼?

​ 客戶端向反向代理髮送請求,接着反向代理根據某種負載機制轉發請求至目標服務器(這些服務器都運行着相同的應用),並把獲得的內容返回給客戶端,期中,代理請求可能根據配置被髮往不同的服務器。

Nginx的優點:

  • 高併發連接:官方測試Nginx能夠支撐5萬併發連接,實際測試可達到3萬左右,每天可以處理億次訪問量;原因是:採用最新epoll(linux2.6內核)和kqueue(freebsd)網絡I/O模型,而Apache採用的是傳統的select模型
  • 內存消耗小
  • Nginx支持負載均衡
  • Nginx支持反向代理
  • 成本低廉

Nginx正向代理

​ 一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器)然後代理向原始服務器轉交請求並將獲得的內容返回給客戶端。客戶端才能使用正向代理。

正向代理總結就一句話:代理端代理的是客戶端

Nginx反向代理

​ 反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然後將請求,發給內部網絡上的服務器並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。

反向代理總結就一句話:代理端代理的是服務端

Nginx 可以用於七層負載均衡。
但是對於一些大的網站,一般會採用 DNS+四層負載+七層負載的方式進行多層次負載均衡。

LVS是什麼?

​ LVS(Linux Virtual Server),也就是 Linux 虛擬服務器,是一個由章文嵩博士發起的自由軟件項目, 是中國國內最早出現的自由軟件項目之一。

LVS集羣採用哪三層結構?

一般來說,LVS集羣採用三層結構,其主要組成部分爲:

A、負載調度器(load balancer),它是整個集羣對外面的前端機,負責將客戶的請求發送到一組服務器上執行,而客戶認爲服務是來自一個IP地址(我們可稱之爲虛擬IP地址)上的。

B、服務器池(server pool),是一組真正執行客戶請求的服務器,執行的服務有WEB、MAIL、FTP和DNS等。

C、共享存儲(shared storage),它爲服務器池提供一個共享的存儲區,這樣很容易使得服務器池擁有相同的內容,提供相同的服務。

LVS優點:

  1. 開源,免費;
  2. 在網上能找到一些相關技術資源;
  3. 具有軟件負載均衡的一些優點;

LVS 由哪2部分程序組成?

​ 包括 ipvs 和 ipvsadm。

  1. ipvs(ip virtual server):一段代碼工作在內核空間,叫ipvs,是真正生效實現調度的代碼。
  2. ipvsadm:另外一段是工作在用戶空間,叫ipvsadm,負責爲ipvs內核框架編寫規則,定義誰是集羣服務,而誰是後端真實的服務器(Real Server)

LVS 有幾種模式?

NAT模式、 TUN 模式、 DR 模式

NAT模式優缺點:

因爲請求與應答都要經過lvs服務器,所以訪問量大的話lvs會形成瓶頸,一般要求10-20臺節點。

每臺節點服務器的網關地址必須是lvs服務器的內網地址。

NAT模式支持對IP地址和端口進行轉換。即用戶請求的端口和真實服務器的端口可以不一致。

LVS-TUN模式:

​ 它的連接調度和管理與VS/NAT中的一樣,利用ip隧道技術的原理,即在原有的客戶端請求包頭中再加一層IP Tunnel的包頭ip首部信息,不改變原來整個請求包信息,只是新增了一層ip首部信息,再利用路由原理將請求發給RS server,不過要求的是所有的server必須支持”IPTunneling”或者”IP Encapsulation”協議。

LVS-DR模式原理:

​ Director Server作爲羣集的訪問入口,但不作爲網關使用,後端服務器池中的Real Server與Director Server在同一個物理網絡中,發送給客戶機的數據包不需要經過Director Server。爲了響應對整個羣集的訪問,DS與RS都需要配置有VIP地址。

LVS十種調度算法介紹

1、輪叫調度(Round Robin)(簡稱rr)

​ 調度器通過“輪叫”調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而不管服務器上實際的連接數和系統負載。

2、加權輪叫(Weighted Round Robin)(簡稱wrr)

​ 調度器通過“加權輪叫”調度算法根據真實服務器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的服務器能處理更多的訪問流量。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。

3、最少鏈接(Least Connections)(LC)

​ 調度器通過“最少連接”調度算法動態地將網絡請求調度到已建立的鏈接數最少的服務器上。如果集羣系統的真實服務器具有相近的系統性能,採用“最小連接”調度算法可以較好地均衡負載。

4、加權最少鏈接(Weighted Least Connections)(WLC)

​ 在集羣系統中的服務器性能差異較大的情況下,調度器採用“加權最少鏈接”調度算法優化負載均衡性能,具有較高權值的服務器將承受較大比例的活動連接負載。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。

5、基於局部性的最少鏈接(Locality-Based Least Connections)(LBLC)

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

6、帶複製的基於局部性最少鏈接(Locality-Based Least Connections with Replication)(LBLCR)

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

7、目標地址散列(Destination Hashing)(DH)

​ “目標地址散列”調度算法根據請求的目標IP地址,作爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。

8、源地址散列(Source Hashing)(SH)

​ “源地址散列”調度算法根據請求的源IP地址,作爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。

9、最短的期望的延遲(Shortest Expected Delay Scheduling SED)(SED)

基於wlc算法。這個必須舉例來說了
ABC三臺機器分別權重123 ,連接數也分別是123。那麼如果使用WLC算法的話一個新請求進入時它可能會分給ABC中的任意一個。使用sed算法後會進行這樣一個運算
A(1+1)/1
B(1+2)/2
C(1+3)/3
根據運算結果,把連接交給C 。

10、最少隊列調度(Never Queue Scheduling NQ)(NQ)

​ 無需隊列。如果有臺 realserver的連接數=0就直接分配過去,不需要在進行sed運算

LVS 主要用來做四層負載和七層負載

所謂四層就是基於IP+端口的負載均衡,主要代表有lvs。

七層負載也稱內容交換,就是基於URL等應用層信息的負載均衡,主要代表有nginx。

HAProxy是什麼?

HAProxy是一個使用C語言編寫的自由及開放源代碼軟件[1],其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理。

HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy運行在當前的硬件上,完全可以支持數以萬計的併發連接。並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的web服務器不被暴露到網絡上。

HAProxy實現了一種事件驅動, 單一進程模型,此模型支持非常大的併發連接數。多進程或多線程模型受內存限制 、系統調度器限制以及無處不在的鎖限制,很少能處理數千併發連接。事件驅動模型因爲在有更好的資源和時間管理的用戶空間(User-Space) 實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程序通常擴展性較差。這就是爲什麼他們必須進行優化以 使每個CPU時間片(Cycle)做更多的工作。

haproxy 配置中分成五部分內容有哪些?

  • global: 設置全局配置參數,屬於進程的配置,通常是和操作系統相關。
  • defaults:配置默認參數,這些參數可以被用到frontend,backend,Listen組件;
  • frontend:接收請求的前端虛擬節點,Frontend可以更加規則直接指定具體使用後端的backend;
  • backend:後端服務集羣的配置,是真實服務器,一個Backend對應一個或者多個實體服務器;
  • Listen :frontend和backend的組合體。

HAProxy 是一個使用 C 語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於 TCP 和 HTTP 的應用程序代理。
Haproxy 主要用來做七層負載均衡。

F5是什麼?

​ F5 Networks(納斯達克: FFIV) ,全球領先的應用交付網絡(ADN)領域的廠商 ,創建於1996年 ,總部位於美國西雅圖市 , F5爲全球大型企業、運營商、政府與消費品牌提供更加快速、安全以及智能的應用 ,通過交付雲與安全解決方案 ,F5幫助企業在不損失速度與管理性的同時享有它們所需的應用架構。

F5負載均衡功能有哪些?

1.多鏈路的負載均衡和冗餘

2.防火牆負載均衡

3.服務器負載均衡

4.系統高可用性

5.高度的安全性

7.系統管理

F5的核心就是Virtual Server。

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