部落格引用處(以下內容在原有部落格基礎上進行補充或更改,謝謝這些大牛的部落格指導):
負載均衡原理與技術實現
一 伺服器負載均衡
伺服器負載均衡根據lb裝置處理到的報文層次,分為四層伺服器負載均衡和七層負載均衡,四層處理到ip包的ip頭,不解析報文四層以上載荷(l4 slb);七層處理到報文載荷部分,比如http,rtsp,sip報文頭,有時也包括報文內容部分(l7 slb)。
1.四層伺服器負載均衡技術
客戶端將請求傳送給伺服器群前端的負載均衡裝置,負載均衡裝置上的虛服務接收客戶端請求,通過排程演算法,選擇真實伺服器,再通過網路位址轉換,用真實伺服器位址重寫請求報文的目標位址後,將請求傳送給選定的真實伺服器;真實伺服器的響應報文通過負載均衡裝置時,報文的源位址被還原為虛服務的vsip,再返回給客戶,完成整個負載排程過程。報文互動流程如下:
nat方式的伺服器負載均衡報文互動流程圖報文互動流程說明:
(1)host傳送服務請求報文,源ip為host ip、目的ip為vsip
(2)lb device接收到請求報文後,借助排程演算法計算出應該將請求分發給哪台server
(3)lb device使用dnat技術分發報文,源ip為host ip、目的ip為server ip
(4)server接收並處理請求報文,返回響應報文,源ip為server ip、目的ip為host ip
(5)lb device接收響應報文,轉換源ip後**,源ip為vsip、目的ip為host ip
2.七層伺服器負載均衡技術
七層負載均衡和四層負載均衡相比,只是進行負載均衡的依據不同,而選擇確定的實伺服器後,所做的處理基本相同,下面以http應用的負載均衡為例來說明。
由於在tcp握手階段,無法獲得http真正的請求內容,因此也就無法將客戶的tcp握手報文直接**給伺服器, 必須由負載均衡裝置先和客戶完成tcp握手,等收到足夠的七層內容後,再選擇伺服器,由負載均衡裝置和所選伺服器建立tcp連線。
七層負載均衡組網和四層負載均衡組網有乙個顯著的區別:四層負載均衡每個虛服務對應乙個實服務組,實服務組內的所有實伺服器提供相同的服務;七層負載均衡每個虛服務對應多個實服務組,每組實伺服器提供相同的服務。根據報文內容選擇對應的實服務組,然後根據實服務組排程演算法選擇某乙個實伺服器。
上圖中描述了基於http的uri目錄資訊進行的七層負載均衡部署,報文互動流程圖如下:
七層負載均衡報文互動流程圖報文互動流程說明:
(1)-(3):client和lb建立tcp連線;
(4):client傳送http請求,目的ip為虛ip;
(5):lb裝置分析報文,根據排程演算法選擇實伺服器,注意此時會快取該報文;
(6):lb裝置向實伺服器發syn報文,序列號為client的syn報文序列號
(7):server傳送syn/ack報文,目的ip為client;
(8):lb接收server的syn/ack報文後,回應ack報文
(9):修改步驟(5)中快取的報文目的ip和tcp序列號,然後發給server;
(10):server傳送響應報文到lb;
(11):lb修改步驟(9)中的報文的源位址和tcp序列號後**給client。
RPC實現原理之核心技術 路由與負載均衡
為什麼要採用路由?真實的環境中一般是以集群的方式提供服務,但對於服務呼叫方來說,乙個介面會有多個服務提供方同時提供服務,所以 rpc 在每次發起請求的時候,都需要從多個服務節點裡面選取乙個用於處理請求的服務節點。每次上線應用的時候都不止執行一台伺服器例項,上線就會涉及到變更,只要變更就可能導致原本正...
socket技術與負載均衡
網路程式設計 nginx1.9之前使用 lvs haproxy 實現四層反向和負載均衡 lvs可以i應用到所有負載均衡的功能 資料庫 web服務等 四層負載均衡,根據連線進行儲存。斷開,連線。進行輪訓。tcp四層負載均衡使用長連線方式,只要客戶端與伺服器端保持連線,nginx不會輪訓到下一台伺服器。...
負載均衡技術
基本概念 反向 反向 reverse proxy 方式是指以 伺服器來接受internet上的連線請求,然後將請求 給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時 伺服器對外就表現為乙個伺服器。cdn的全稱是content delivery networ...