在早期的互聯網應用中,由於用戶流量小,業務邏輯簡單,往往單臺服務器就能滿足負載需求。隨著上網流量越來越大,稍微好壹點的系統訪問量非常大,系統功能也越來越復雜。所以即使單個服務器的性能得到優化,也無法支撐如此大量用戶的訪問壓力。這時候就需要使用多臺機器,設計壹個高性能的集群來應對。
那麽,多臺服務器如何平衡流量,組成高性能集群呢?
這時候就需要邀請“負載均衡器”入場了。
負載均衡是指用戶訪問的流量通過壹個“負載均衡器”按照壹定的轉發策略平均分配到後端的多個服務器上,後端的服務器可以獨立響應和處理請求,從而達到負載分布的效果。負載均衡技術提高了系統的服務能力,增強了應用程序的可用性。
目前,市場上最常見的負載均衡技術方案有三種:
基於DNS的負載均衡
基於硬件負載平衡
基於軟件負載平衡
這三種方案各有利弊。DNS負載均衡可以實現區域內的流量均衡。硬件負載均衡主要用於大型服務器集群中的負載需求,而軟件負載均衡多基於機器級的流量均衡。在實際場景中,這三者可以結合使用。下面詳細說壹下:
基於DNS的負載均衡
基於DNS的負載均衡其實是最簡單的實現方案,在DNS服務器上做壹個簡單的配置就可以實現。
原理是用戶在訪問壹個域名時,會先將域名對應的IP地址解析到DNS服務器。這時候我們可以讓DNS服務器根據不同地理位置的用戶返回不同的IP。比如南方的用戶會返回我們廣州的業務服務器的IP,北方的用戶如果訪問,我會返回北京的業務服務器的IP。
在這種模式下,用戶相當於根據就近原則進行流式請求,既減輕了單個集群的負載壓力,又提高了用戶的訪問速度。
使用DNS進行負載平衡的天然優勢是簡單的配置、非常低的實現成本以及沒有額外的開發和維護工作。
但也有壹個明顯的缺點:配置修改時,不能及時生效。這是由於DNS的特點,壹般有多級緩存,所以當我們修改DNS配置時,由於緩存的原因,IP不會及時改變,從而影響負載均衡的效果。
另外,如果使用DNS進行負載均衡,多是基於區域或者簡單的IP輪詢,沒有更高級的路由策略,所以這也是DNS方案的局限性。
基於硬件負載平衡
硬件負載均衡太棒了。比如著名的F5網絡Big-IP,也就是常說的F5,就是壹個網絡設備。妳可以簡單的理解為類似於網絡交換機的東西。通過硬件完全抗壓,性能非常好。每秒可以處理的請求數達到百萬,也就是每秒的負載。當然價格非常非常貴,幾十萬到幾百萬人民幣不等。
因為這類設備壹般用在大型互聯網公司的流量入口最前端,政府、國企等不缺錢的企業都會用。普通中小公司都不願意用。
如果用F5硬件做負載均衡,主要是省心省事,買壹個就搞定,性能強大,壹般業務就更不用說了。此外,它還在負載均衡算法上支持許多靈活的策略,並具有壹些安全功能,如防火墻。但缺點也很明顯,壹個字:貴。
基於軟件負載平衡
軟件負載平衡是指使用軟件來分配和平衡流量。軟件負載均衡分為7層協議和4層協議。
網絡協議有七層。基於第四傳輸層的流量分配方案稱為四層負載均衡,如LVS,基於第七應用層的流量分配方案稱為七層負載均衡,如Nginx。這兩者在性能和靈活性上存在壹些差異。
基於四層的負載均衡性能更高,壹般可以達到幾十萬/秒,而基於七層的負載均衡性能壹般只有幾萬/秒。
基於軟件的負載均衡的特點也很明顯,而且便宜。可以部署在普通的服務器上,不需要額外采購,或者放壹點技術進去優化,所以這種方式是互聯網公司中用的最多的壹種。
說完了負載均衡的常用技術方案,我們再來看看在實際解決方案的應用中,壹般可以用到哪些均衡算法。
輪詢策略
負載度策略
應對策略
哈希策略
下面我們分別介紹壹下這些均衡算法/策略的特點:
1號——隨機隨機
這是最簡單的壹個,用隨機數決定轉發到哪臺機器。
優點:使用簡單,不需要額外的配置和算法。
缺點:隨機數的特點是數據量足夠大才能保證均衡,所以如果請求量有限,可能達不到負載均衡的要求。
第二名-循環投票
這個也很簡單。請求到達後,會不偏不倚地依次轉發。每臺服務器的請求數量是平均的。
缺點:當集群中服務器的硬件配置和性能不同時,不能區別對待。導致下面的算法。
第三——加權循環加權投票
這種算法的出現是為了解決簡單輪詢策略的缺點。在實際項目中,我們經常會遇到這樣的情況。
比如有五臺機器,兩臺新買的機器性能特別好,剩下三臺老古董。這時候我們設置壹個權重,讓新機接收更多的請求。物盡其用,能者多勞!
在這種情況下,“均衡”是相對的,沒有必要達到100%的平均。
第四——最少的聯系
這是最符合負載均衡算法的壹個。有必要記錄每個應用服務器正在處理的連接數,然後將新請求轉發到最小的工作站。
5號-源哈希源地址哈希
根據請求的源ip進行哈希計算,然後對應壹個服務器。之後,來自這個ip的所有請求都由同壹個服務器處理。
blogs.com/saixing/p/6730201.html
/13732225/2175804