基于Nginx的Web服務器負載均衡策略改進與實現
來源:用戶上傳
作者:
摘 要:互聯網產品隨著經濟的快速發展越來越深地融入進普通人的生活,網民的數量激增,各網站的訪問數字也呈逐年上升的態勢。但是由于各個地區網民人數的差異加上經濟水平的不同,傳統的負載均衡策略存在改進的空間,該文針對如何平衡負載進行了研究,分析了Nginx系統的現狀,提供了負載均衡算法,以優化Nginx的性能。
關鍵詞:Nginx Web服務器 性能優化 負載均衡
中圖分類號:TP393 文獻標識碼:A 文章編號:1672-3791(2019)04(b)-0017-02
1 Nginx的研究現狀
Nginx是俄羅斯人塞索耶夫所撰寫的涉及到HTTP服務器的一款反向代理軟件,是一種和POP3、SMTP、IMAP相同的代理服務器。雖然這款服務器產生和發展的時間都不夠長,但是這種服務器已經具備了一些鮮明的特點,使得其穩定性和高消耗性能夠滿足開源和代碼編寫的基本需求,所以這種服務器在很多開發人員當中受到歡迎,一些公司也大量采用,NGXPAGESPEED是一種谷歌借助Nginx所開發的模塊,這種模塊飛速地提升了網頁打開的速度,并且可以幫助網頁降低訪問的延遲。Nginx在我國的應用非常廣泛,已經有了大量的人員在研究這些項目,并且根據這個模塊開發出了不同的項目。針對大量網站的訪問申請,在這個平臺的基礎上,增加上更具特色的功能和特性,可以基本實現負載均衡。關于負載均衡的研究一直是這個領域的特色所在,相同的領域也一直有不同的算法被開發出來,分布式計算和云計算相關的新算法不斷被研究出來,在這個領域形成了鮮明的特色,節點和負載的性能經常影響負載的衡量和權重,負載的值如果非常大,那么其權重一般也非常大。Nginx已經在俄羅斯的門戶網站www.rambler.ru上運行了多年,有超過20%的虛擬主機平臺選用了Nginx為反向代理服務器。我國也已經有新浪博客、網易新聞、金山詞霸等多家網站選用了這種服務器。塞索耶夫將開源的代碼以類似于BSD許可證的方法發布,Nginx由于性能非常穩定,功能方面具有富集效應,在配置基礎文件和系統資源的時候功率消耗比較低,和Nginx負載相關的均衡計算研究方法的類型之中,很多內容集中在服務器集群之上,根據算法和配置文件的不同,內置的算法有不同的類型,加權輪詢的算法也是其中的一個種類,一致性哈希算法也算是其中的一種。
2 負載均衡的概念
負載均衡是針對現有的網絡結構提出來的概念,提供了一種廉價而高效的方法,建立在現有的網絡結構的基礎之上,可以增加網絡設備和服務器的帶寬,增強網絡內容的吞吐量,強化網絡的數據處理能力,提升網絡服務的靈活性和可用性。負載均衡一般是通過硬件實現的,有時也可以通過軟件實現,負載均衡可以提升網絡處理數據的靈活性和可靠性。軟件負載均衡是通過一臺或多臺服務器的相互連接,在操作系統之上加裝附加軟件來實現負載均衡,優點是可以根據特定環境的不同,進行簡單配置、靈活操作,由于成本低廉,可以基本滿足一般的負載均衡需求,硬件的負載均衡解決方案是在服務器和外部網絡之上加載負載均衡的設備,我們將這種設備稱為負載均衡器,可以由專門的設備完成相應的任務,這些設備獨立于操作系統之外,整體性能可以獲得提升。根據多樣化的負載均衡策略,進行智能化的流量管理升級,可以達到最佳的負載均衡要求。一般來說,硬件的負載均衡會優于軟件的負載均衡,硬件的負載均衡在功能和性能方面要優于軟件,但是硬件更加昂貴?,F代化的負載均衡技術通常在網絡的第四層次或者第七層次,四層的負載均衡是將Internet 上的合法IP地址映射到多個服務器之上,最終達到負載均衡的目的。七層的負載均衡是控制應用層的內容,可以提供一種針對流量的訪問控制模式。針對HTTP服務器的應用指標,第七層的負載均衡技術可以通過HTTP的報頭,根據報頭的內容實現負載均衡的操作。
3 和Nginx相關的負載均衡算法
與Nginx有關聯的負載均衡算法的種類非常多,負載均衡所要達到的目標就是通過并發的方式,將不同的請求分配給集群服務器,根據算法內置的差異,可以將內置算法分成不同的種類,分別是擴展算法和內置算法。加權輪詢的算法模式一般都被認為是內置算法的一個種類,哈希性算法一般被認為是擴展算法的一個種類。
3.1 加權輪詢的算法
在設置與負載均衡有關的算法的時候,根據負載均衡是默認值還是輪詢算法的不同,考慮到加權輪詢算法的缺點,根據輪詢算法的重復方面的配置問題,服務器的真實性能可能會難以保證,由于客戶端對于客戶的請求的處理方法會有不一致的地方,因此會產生一些均衡方面的差異,導致一些服務器的比重出現增大的狀況。很多用戶會因此出現長時間等待的問題,如果出現了新的請求需要處理的問題,還涉及到某類服務器的比重過大的問題,新的請求在這種狀態下就會被要求分給服務器。服務器在負荷較大的情況下可能會出現超載的問題,但是其他的一些服務器在這個時候可能會遇到請求需要處理的情況。
3.2 一致性哈希算法
這種算法的原理是根據服務器地址的不同,按照一定的規則進行分配,分配的方法類似于路由分配表,根據服務器承載的服務的類型進行區分,將同樣的內容分配到一致性的哈希表當中,如果有新的數據請求需要進行處理,可以根據哈希表之中的數據順序進行處理,選擇最新的服務器來對請求進行處理。哈希算法的優點是可以將服務器的地址按照一定的規則進行處理,快速地尋找到存儲這種數據類型的服務器,但是這樣的設置也有一些缺點,比如根據路由狀態的不同所形成的哈希表,會和一些服務器分屬于不同的緩存服務器,在這樣的情況下會因為IP段的請求的種類不同,分配一些不同的內容于服務器之上。 4 Nginx負載均衡的優點和環境適應性
4.1 Nginx負載均衡的優點
Nginx負載均衡的現實環境情況較為簡單,可配置性比較強,根據URL進行的負載均衡,默認后端進行健康檢查的性能,后端機器在較少的情況之下,負載均衡的表現能力較強,優點主要有如下幾點。(1)負載的功能強大,同時支持高端并發的連接,實現的內存消耗較少,測試的時候得到了5萬并發的連接,實際的運行環境之中進行3萬發的并發連接下,進行10個Nginx的進程所消耗掉的內存也僅僅只有150MB。(2)成本造價低廉,Nginx為開源的軟件,所以可以進行免費試用,成本造價方面有優勢。(3)由于Nginx工作在網絡的第七層級之上,因此針對HTTP本身的分流策略而言,可以對域名、目錄結構等實現分流,實現多種策略的分配,比如說可以針對IP Hsh的分配策略實現均衡分配。
4.2 環境適應性
七層次的均衡分配各自有其突出特點,主要表現在如下一些方面。(1)對HTTP的報頭進行檢查,可以檢測到HTTP400和HTTP500系列的錯誤數值信息,可以實現透明且連續的重新定位到新的服務器,避免出現應用層次的故障。(2)根據數據類型的不同,對不同類型的數據包,流入圖像文件、壓縮文件和多媒體文件等不同格式的文件進行分類,根據數據流行的指引來對服務器的內容進行處理,如此可以提升系統的性能。(3)根據連接請求的類型不同,對普通文本以及圖像等靜態的內容進行處理,不論是CGI還是ASP等動態的文檔請求,都可以指引向特定的服務器,從而提升系統整體的安全性。(4)Nginx對于網絡的依賴性特別小,只有通過Ping上可以行得通,網頁訪問可以正常,Nginx就可以正常連接,Nginx同時還能對內外網進行區分,如果是同時用于許多的外網節點,可以根據單機對設備的路線進行分配。(5)Nginx對于網絡的要求比較簡單,轉向業務配置分類之后的操作較為靈活,進行文件配置也操作簡便,風格和普通程序一樣比較容易弄懂,測試起來也非常方便,同時可以及時地對錯誤日志進行打印操作。(6)Nginx所承受的高負載具有穩定性,可以用于反向代理,出現宕機的概率也比較小。(7)通過Nginx可以檢測服務器內部出現的故障,可以根據服務器處理網頁返回的代碼狀態和是否超時等因素進行判斷,把返回的錯誤請求提交關鍵節點,內置的健康檢查功能也可以嘗試運用,有時還具有消滅冗余的功能,在針對后端返回的情況處理的判斷之中,可以嘗試運用Nginx進行Web服務器的宕機測試,也不會影響前端的訪問。(8)更加節省帶寬,由于是通過GZIP進行的壓縮,所以可以添加游覽器的header本地接頭。
5 Nginx的性能優化
Nginx一般支持正規的表達方式,配置非常靈活,是一種高性能的Web服務器,針對Nginx的性能進行優化的時候,一般只有一個配置的選項,可以在更改之后再次更改回原來的數值。如下幾個方面需要特別關注:(1)控制進程數量的創制過程中,Nginx可以實現工作進程的多個進程的同時運用,很多工作都可以實現對大量的鏈接數量的快速處理,Nginx可以通過主進程對工作進行某些方面的創建,很多數值都是通過文件配置的方式將Nginx當中的文件進行清理,如果出現數值比較低的狀況,會根據數據的有效處理的請求進行分配。如果設置的數值的區間比較高,有可能出現工作進程處置方面的問題,最終出現導致系統的功耗增加的問題,產生系統功耗的損失等情況。(2)大多數工作進程都固定在CPU之內,這樣做的好處是避免了同一個工作進程選擇不同的CPU內核。(3)在設置Nginx模塊的時候,注意進程可以打開的最大文件數的設置,如果這個數值設置得比較低,同時打開多個進程數的時候,會出現打開的文件過多的提示。
6 結語
國外的技術人員對于Nginx的研究逐步深入,這個技術的穩定性、安全性和高效性兼具的特點使其值得進行大范圍的應用,我國的科技人員對該技術的研究也勢必大大增強。
參考文獻
[1] 劉暢.以NGINX為核心優化掌端用戶使用體驗[J].江西通信科技,2019(1):17-20.
[2] 黎宇.Nginx在不同網絡域名訪問中的應用[J].通訊世界,2019,26(2):88-89.
①作者簡介:周潮(1996,7—),男,漢族,湖北黃岡人,本科在讀,研究方向:基于nginx的web服務器負載均衡策略改進與實現。
轉載注明來源:http://www.hailuomaifang.com/8/view-14910464.htm