您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關Nginx中怎么實現負載均衡算法,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
1. Nginx負載均衡的算法怎么實現的?策略有哪些?
負載均衡是 Nginx常用的一個功能,當一臺服務器在單位時間內的訪問量越大時,服務器壓力就越大,大到超過自身承受能力時,服務器就會崩潰。
為了避免服務器崩潰,大家會通過負載均衡的方式來分擔服務器壓力。將對臺服務器組成一個集群,當用戶訪問時,先訪問到一個轉發服務器,再由轉發服務器將訪問分發到壓力更小的服務器。
Nginx負載均衡實現的策略有以下五種:
(1) 輪詢(默認)
每個請求按時間順序逐一分配到不同的后端服務器,如果后端某個服務器宕機,能自動剔除故障系統。
upstream backserver { server 192.168.0.12; server 192.168.0.13; }
(2) 權重 weight
weight的值越大分配到的訪問概率越高,主要用于后端每臺服務器性能不均衡的情況下。其次是為在主從的情況下設置不同的權值,達到合理有效的地利用主機資源。
upstream backserver { server 192.168.0.12 weight=2; server 192.168.0.13 weight=8; }
權重越高,在被訪問的概率越大,如上例,分別是20%,80%。
(3) ip_hash( IP綁定)
每個請求按訪問IP的哈希結果分配,使來自同一個IP的訪客固定訪問一臺后端服務器,并且可以有效解決動態網頁存在的session共享問題
upstream backserver { ip_hash; server 192.168.0.12:88; server 192.168.0.13:80; }
(4) fair(第三方插件)
必須安裝upstream_fair模塊。
對比 weight、ip_hash更加智能的負載均衡算法,fair算法可以根據頁面大小和加載時間長短智能地進行負載均衡,響應時間短的優先分配。
upstream backserver { server server1; server server2; fair; }
哪個服務器的響應速度快,就將請求分配到那個服務器上。
(5) url_hash(第三方插件)
必須安裝Nginx的hash軟件包
按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,可以進一步提高后端緩存服務器的效率。
upstream backserver { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }
2. 為什么要做動靜分離?
Nginx是當下最熱的Web容器,網站優化的重要點在于靜態化網站,網站靜態化的關鍵點則是是動靜分離,動靜分離是讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們則根據靜態資源的特點將其做緩存操作。
讓靜態的資源只走靜態資源服務器,動態的走動態的服務器
Nginx的靜態處理能力很強,但是動態處理能力不足,因此,在企業中常用動靜分離技術。
對于靜態資源比如圖片,js,css等文件,我們則在反向代理服務器nginx中進行緩存。這樣瀏覽器在請求一個靜態資源時,代理服務器nginx就可以直接處理,無需將請求轉發給后端服務器tomcat。
若用戶請求的動態文件,比如servlet,jsp則轉發給Tomcat服務器處理,從而實現動靜分離。這也是反向代理服務器的一個重要的作用。
以上就是Nginx中怎么實現負載均衡算法,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。