負載均衡、DNS、F5、反向代理、LVS、四層與七層、CDN

1.負載均衡

負載均衡:將負載(大量請求)勻的、平的分攤到多個服務節點上進行處理。

實現負載均衡有很多種手段,例如:DNS、硬件負載均衡設備、Nginx反向代理、LVS。

1.1.DNS

DNSDomain Name System,域名系統,更加專業的名字爲域名解析系統。

域名解析系統部署在DNS服務器上,提供域名解析服務。

簡單來說,域名解析就是將一個域名解析成多個ip地址。

如下圖是通過某個域名解析網站對www.baidu.com的解析結果:

最早的負載均衡就是利用搭建本地DNS服務器實現的,實現方式簡單易懂,爲同一個主機名分配多個映射 ,可採用輪循,隨機等方式分配請求。

作爲負載均衡的缺點

DNS中有緩存,但是如果機器出現故障,緩存不能及時更新。

此時,如果訪問域名,返回的IP可能是一個正在故障的IP地址,最終導致所有訪問該IP的請求都發送故障。

1.2.F5

硬件負載均衡設備又叫負載均衡器(Load Balancer),通常作爲獨立硬件存在。

負載均衡設備擁有非常好的負載均衡性能,他擁有衆多的負載均衡策略(權重,動態比率,最快模式,最小連接數等),可以保證以相對較優的方式分配請求。

常見的負載均衡器有:F5、BIGIP。

一臺負載均衡器的售價往往高達十幾萬甚至幾十萬,許多企業並不願意爲它買單。

1.3.Nginx反向代理

反向代理:服務器根據客戶端的請求,從其關聯的一組或多組後端服務器上獲取資源,然後再將這些資源返回給客戶端,客戶端只會得知反向代理的IP地址,而不知道在代理服務器後面的服務器簇的存在。

可以通過Nginx服務器的反向代理功能實現負載均衡。

爲什麼叫反向代理呢?與正向代理有什麼區別呢?可以通過下面的描述簡單理解:

  • 代理訪問網絡有三個角色:客戶端、代理、服務器。
  • 正向代理舉例:翻牆軟件。反向代理舉例:Nginx負載均衡。
  • 無論正向還是反向,代理訪問網絡的基本流程:客戶端—>代理—>服務器。
  • 兩者關鍵區別:代理服務器的代理對象。
    • 正向代理中的代理是代替客戶端去訪問服務器。
    • 反向代理中的代理是代替服務器去應對客戶端的訪問。

下面用一張圖來簡單描述兩者區別:

在這裏插入圖片描述

1.4.LVS

LVS是章文嵩博士在1998年5月成立的自由軟件項目,現在已經是Linux內核的一部分。

LVS實現負載均衡有多種,下面就其中的NAT和DR兩種方式進行簡單的描述。

更多關於LVS的內容請自行了解。

在這裏插入圖片描述

NAT

  1. 客戶端發出用戶請求。此時,請求報文的源IP爲CIP,目標IP爲VIP。
  2. 請求報文到達LVS,LVS修改數據包的目標IP爲RIP。此時,請求的報文源IP爲CIP,目標IP爲RIP。
  3. 請求報文根據目標IP=RIP發送到後端服務器。
  4. 服務器處理完請求邏輯,開始構建響應報文回覆給LVS。此時,請求的報文源IP爲RIP,目標IP爲CIP。
  5. 響應報文到達LVS,LVS修改數據包的源IP爲VIP。此時,請求的報文源IP爲VIP,目標IP爲CIP。
  6. 響應報文返回至客戶端。

DR

  1. 客戶端發出用戶請求。此時,請求報文的源IP爲CIP,目標IP爲VIP。
  2. 請求報文到達LVS,LVS將數據包的源MAC修改爲DIPMAC,目標MAC修改爲RIPMAC。此時,請求的報文源IP爲CIP,目標IP爲VIP。
  3. 請求報文根據目標MAC=RIPMAC發送到後端服務器。
  4. 服務器處理完請求邏輯,開始構建響應報文回覆給客戶端。此時,請求的報文源IP爲VIP,目標IP爲CIP。
  5. 響應報文通過虛擬網絡接口lo傳送至物理網絡接口eth0之後發出,最終返回至客戶端。

2.四層負載均衡與七層負載均衡

負載均衡的分層是針對OSI網絡模型來說的,負載均衡模型也不僅僅只有四層和七層的。

下面先給出OSI網絡模型架構:

根據上述模型,可以快速瞭解負載均衡的分層:

  • 二層負載均衡:基於虛擬MAC與真實MAC的地址互聯。
  • 三層負載均衡:基於虛擬IP與真實IP的地址互聯。
  • 四層負載均衡:基於三層的IP加四層的PORT進行虛擬與真實互轉,期間也記錄四層的UDP和TCP信息。
  • 七層負載均衡:基於六層的URL進行地址互轉,分析URL得到對應的七層HTTP等信息。

3.CDN

CDN的全稱是Content Delivery Network,即內容分發網絡。

CDN是構建在現有網絡基礎之上的智能虛擬網絡,依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。

CDN的關鍵技術主要有內容存儲和分發技術。

簡單來說,CDN存儲一些靜態資源爲其附近的用戶提供所需內容。

可以通過下圖來簡單理解CND。

  • CDN不是一天服務器,而是一個服務器網絡,這些服務器節點分佈在各地。
  • CDN存儲的一般都是靜態資源,就是指不會因爲用戶請求而發生改變的內容,如CSS、HTML、圖片等等。
  • CDN服務器可以在用戶請求後緩存靜態資源,也可以主動抓取主服務器靜態資源。
  • 用戶訪問網絡資源時,服務會根據其地理位置,爲其選擇距離較近的CDN服務器提供靜態資源服務。

4.參考

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