Nginx的集羣負載均衡解析

1. Nginx的負載均衡概述

  • 當我們使用集羣的時候,肯定會涉及到負載均衡,負載均衡可以提高吞吐量,提高併發性能,增強服務器的處理性能,當有大量的併發請求來到服務器的時候,可以把請求分發到不同的服務器,讓更多的服務器來響應,如此一來,我們可以縮短服務器的處理時間,提升用戶體驗;
  • Nginx可以作爲一個負載均衡器來使用,瀏覽器的請求必須先經過Nginx,纔會被Nginx分發到Tomcat服務器,用戶的每一次請求派發給哪臺Tomcat都會由Nginx決定;
    在這裏插入圖片描述
  • 負載均衡分爲四層和七層負載均衡,所謂四到七層的負載均衡,就是在對後臺的服務器進行負載均衡時,依據四層的信息或七層的信息來決定怎麼樣轉發請求;

2. 網絡模型

當說到Nginx負載均衡的時候,其實Nginx是七層負載均衡,後續使用到LVS+Nginx做負載均衡的時候,是四層負載均衡,七層和四層是什麼概念呢?這就必須提到網絡模型。
網絡模型分爲七層,也就是當用戶發起請求到服務器接收,會歷經七道工序,這七層可以分爲:

  • 應用層:這是面向用戶的,最靠近用戶,爲了讓用戶和計算機交互,交互的過程其實就是接口的調用,應用層爲用戶提供了交互的接口,以此爲用戶提供服務,在這一層最常見的協議有:HTTP、HTTPS、FTP、SMTP、POP3等。Nginx在本層,爲七層負載均衡;
  • 表示層:該層提供數據格式編碼及加密功能,確保請求端的數據能被響應端的應用層識別;
  • 會話層:會話可以理解爲session,請求發送到接受響應的這個過程之間存在會話,會話層就充當了這一過程的管理者,從創建會話到銷燬會話;
  • 傳輸層:該層建立端到端的連接,提供了數據傳輸服務,在傳輸層通信會涉及到端口號,本層常見的協議爲TCP、UDP、LVS就是在這一層,也就是四層負載均衡;
  • 網絡層:網絡通信的時候必須要有本機IP和對方的IP,請求端和響應端都會由自己的IP的,所以網絡層也叫做IP層;
  • 數據鏈路層:這一層會提供計算機的MAC地址,通信的時候會攜帶,爲了確保請求投遞正確,所以該層會驗證檢測MAC地址,以確保請求性;

3. 四層負載均衡

四層負載均衡是基於IP+端口的負載均衡,主要基於TCP/UDP層和IP層,通過轉發請求達到後臺的服務器,只負責轉發並且記錄當前連接由哪個服務器處理的,後續這個連接的請求會由同一臺服務器進行處理。
四層的負載均衡主要適用於TCP應用,比如基於C/S開發的桌面應用等場景。

4. 七層負載均衡

基於URL的負載均衡,除了支持四層負載均衡以外,還要分析引用層的信息,即針對HTTP協議URL或Cookie信息,可以對請求和響應做進一步的處理,類似於Servlet的Filter的作用,比如當用戶訪問你的域名時,自動辨別用戶語言,然後選擇對應的語言服務器進行處理。
七層的負載均衡主要適用於應用HTTP協議,比如衆多的網站等基於B/S開發的系統。

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