天天看點

負載均衡(DNS、F5、反向代理、LVS)

1.負載均衡

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

實作負載均衡有很多種手段,例如:DNS、硬體負載均衡裝置、Nginx反向代理、LVS。

1.1.DNS

DNS:Domain Name System,域名系統,更加專業的名字為域名解析系統。

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

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

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

負載均衡(DNS、F5、反向代理、LVS)

最早的負載均衡就是利用搭建本地DNS伺服器實作的,實作方式簡單易懂,為同一個主機名配置設定多個映射 ,可采用輪循,随機等方式配置設定請求。

作為負載均衡的缺點

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

此時,如果通路域名,傳回的IP可能是一個正在故障的IP位址,最終導緻所有通路該IP的請求都發送故障。

1.2.F5

硬體負載均衡裝置又叫負載均衡器(Load Balancer),通常作為獨立硬體存在。

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

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

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

1.3.Nginx反向代理

反向代理:伺服器根據用戶端的請求,從其關聯的一組或多組後端伺服器上擷取資源,然後再将這些資源傳回給用戶端,用戶端隻會得知反向代理的IP位址,而不知道在代理伺服器後面的伺服器簇的存在。

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

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

代理通路網絡有三個角色:用戶端、代理、伺服器。

正向代理舉例:翻牆軟體。反向代理舉例:Nginx負載均衡。

無論正向還是反向,代理通路網絡的基本流程:用戶端—>代理—>伺服器。

兩者關鍵差別:代理伺服器的代理對象。

正向代理中的代理是代替用戶端去通路伺服器。

反向代理中的代理是代替伺服器去應對用戶端的通路。

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

負載均衡(DNS、F5、反向代理、LVS)

1.4.LVS

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

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

更多關于LVS的内容請自行了解。

負載均衡(DNS、F5、反向代理、LVS)

NAT

用戶端發出使用者請求。此時,請求封包的源IP為CIP,目标IP為VIP。

請求封包到達LVS,LVS修改資料包的目标IP為RIP。此時,請求的封包源IP為CIP,目标IP為RIP。

請求封包根據目标IP=RIP發送到後端伺服器。

伺服器處理完請求邏輯,開始建構響應封包回複給LVS。此時,請求的封包源IP為RIP,目标IP為CIP。

響應封包到達LVS,LVS修改資料包的源IP為VIP。此時,請求的封包源IP為VIP,目标IP為CIP。

響應封包傳回至用戶端。

DR

用戶端發出使用者請求。此時,請求封包的源IP為CIP,目标IP為VIP。

請求封包到達LVS,LVS将資料包的源MAC修改為DIPMAC,目标MAC修改為RIPMAC。此時,請求的封包源IP為CIP,目标IP為VIP。

請求封包根據目标MAC=RIPMAC發送到後端伺服器。

伺服器處理完請求邏輯,開始建構響應封包回複給用戶端。此時,請求的封包源IP為VIP,目标IP為CIP。

響應封包通過虛拟網絡接口lo傳送至實體網絡接口eth0之後發出,最終傳回至用戶端。

繼續閱讀