負載均衡SLB

前言

在軟件系統(tǒng)的架構(gòu)設計中,對集群的負載均衡設計是作為高性能系統(tǒng)優(yōu)化環(huán)節(jié)中必不可少的方案。負載均衡本質(zhì)上是用于將用戶流量進行均衡減壓的,因此在互聯(lián)網(wǎng)的大流量項目中,其重要性不言而喻。

一、什么是負載均衡?

早期的互聯(lián)網(wǎng)應用,由于用戶流量比較小,業(yè)務邏輯也比較簡單,往往一個單服務器就能滿足負載需求。隨著現(xiàn)在互聯(lián)網(wǎng)的流量越來越大,稍微好一點的系統(tǒng),訪問量就非常大了,并且系統(tǒng)功能也越來越復雜,那么單臺服務器就算將性能優(yōu)化得再好,也不能支撐這么大用戶量的訪問壓力了,這個時候就需要使用多臺機器,設計高性能的集群來應對。

那么,多臺服務器是如何去均衡流量、如何組成高性能的集群的呢?

此時就需要請出 「負載均衡器」 入場了。

負載均衡(Load Balancer)是指把用戶訪問的流量,通過「負載均衡器」,根據(jù)某種轉(zhuǎn)發(fā)的策略,均勻的分發(fā)到后端多臺服務器上,后端的服務器可以獨立的響應和處理請求,從而實現(xiàn)分散負載的效果。負載均衡技術(shù)提高了系統(tǒng)的服務能力,增強了應用的可用性。


來自網(wǎng)絡.png

二、負載均衡方案有幾種?

目前市面上最常見的負載均衡技術(shù)方案主要有三種:

基于DNS負載均衡

基于硬件負載均衡

基于軟件負載均衡

三種方案各有優(yōu)劣,DNS負載均衡可以實現(xiàn)在地域上的流量均衡,硬件負載均衡主要用于大型服務器集群中的負載需求,而軟件負載均衡大多是基于機器層面的流量均衡。在實際場景中,這三種是可以組合在一起使用。下面來詳細講講:

基于DNS負載均衡


來自網(wǎng)絡.png

基于DNS來做負載均衡其實是一種最簡單的實現(xiàn)方案,通過在DNS服務器上做一個簡單配置即可。

其原理就是當用戶訪問域名的時候,會先向DNS服務器去解析域名對應的IP地址,這個時候我們可以讓DNS服務器根據(jù)不同地理位置的用戶返回不同的IP。比如南方的用戶就返回我們在廣州業(yè)務服務器的IP,北方的用戶來訪問的話,我就返回北京業(yè)務服務器所在的IP。

在這個模式下,用戶就相當于實現(xiàn)了按照「就近原則」將請求分流了,既減輕了單個集群的負載壓力,也提升了用戶的訪問速度。

使用DNS做負載均衡的方案,天然的優(yōu)勢就是配置簡單,實現(xiàn)成本非常低,無需額外的開發(fā)和維護工作。

但是也有一個明顯的缺點是:當配置修改后,生效不及時。這個是由于DNS的特性導致的,DNS一般會有多級緩存,所以當我們修改了DNS配置之后,由于緩存的原因,會導致IP變更不及時,從而影響負載均衡的效果。

另外,使用DNS做負載均衡的話,大多是基于地域或者干脆直接做IP輪詢,沒有更高級的路由策略,所以這也是DNS方案的局限所在。

基于硬件負載均衡


來自網(wǎng)絡.png

硬件的負載均衡那就比較牛逼了,比如大名鼎鼎的 F5 Network Big-IP,也就是我們常說的 F5,它是一個網(wǎng)絡設備,你可以簡單的理解成類似于網(wǎng)絡交換機的東西,完全通過硬件來抗壓力,性能是非常的好,每秒能處理的請求數(shù)達到百萬級,即 幾百萬/秒 的負載,當然價格也就非常非常貴了,十幾萬到上百萬人民幣都有。

因為這類設備一般用在大型互聯(lián)網(wǎng)公司的流量入口最前端,以及政府、國企等不缺錢企業(yè)會去使用。一般的中小公司是不舍得用的。

采用 F5 這類硬件做負載均衡的話,主要就是省心省事,買一臺就搞定,性能強大,一般的業(yè)務不在話下。而且在負載均衡的算法方面還支持很多靈活的策略,同時還具有一些防火墻等安全功能。但是缺點也很明顯,一個字:貴。

基于軟件負載均衡


來自網(wǎng)絡.png

軟件負載均衡是指使用軟件的方式來分發(fā)和均衡流量。軟件負載均衡,分為7層協(xié)議 和 4層協(xié)議。

網(wǎng)絡協(xié)議有七層,基于第四層傳輸層來做流量分發(fā)的方案稱為4層負載均衡,例如 LVS,而基于第七層應用層來做流量分發(fā)的稱為7層負載均衡,例如 Nginx。這兩種在性能和靈活性上是有些區(qū)別的。

基于4層的負載均衡性能要高一些,一般能達到 幾十萬/秒 的處理量,而基于7層的負載均衡處理量一般只在 幾萬/秒 。

基于軟件的負載均衡的特點也很明顯,便宜。在正常的服務器上部署即可,無需額外采購,就是投入一點技術(shù)去優(yōu)化優(yōu)化即可,因此這種方式是互聯(lián)網(wǎng)公司中用得最多的一種方式。

三、常用的均衡算法有哪些?

上面講完了常見的負載均衡技術(shù)方案,那么接下來咱們看一下,在實際方案應用中,一般可以使用哪些均衡算法?

輪詢策略

負載度策略

響應策略

哈希策略

下面來分別介紹一下這幾種均衡算法/策略的特點:

NO.1—— Random 隨機
這是最簡單的一種,使用隨機數(shù)來決定轉(zhuǎn)發(fā)到哪臺機器上。

優(yōu)點:簡單使用,不需要額外的配置和算法。
缺點:隨機數(shù)的特點是在數(shù)據(jù)量大到一定量時才能保證均衡,所以如果請求量有限的話,可能會達不到均衡負載的要求。

NO.2—— Round Robin 輪詢
這個也很簡單,請求到達后,依次轉(zhuǎn)發(fā),不偏不向。每個服務器的請求數(shù)量很平均。

缺點:當集群中服務器硬件配置不同、性能差別大時,無法區(qū)別對待。引出下面的算法。

NO.3—— Weighted Round Robin 加權(quán)輪詢
這種算法的出現(xiàn)就是為了解決簡單輪詢策略中的不足。在實際項目中,經(jīng)常會遇到這樣的情況。

比如有5臺機器,兩臺新買入的性能等各方面都特別好,剩下三臺老古董。這時候我們設置一個權(quán)重,讓新機器接收更多的請求。物盡其用、能者多勞嘛!

這種情況下,“均衡“就比較相對了,也沒必要做到百分百的平均。

NO.4—— Least Connections 最少連接
這是最符合負載均衡算法的一個。需要記錄每個應用服務器正在處理的連接數(shù),然后將新來的請求轉(zhuǎn)發(fā)到最少的那臺上。

NO.5—— Source Hashing 源地址散列
根據(jù)請求的來源ip進行hash計算,然后對應到一個服務器上。之后所有來自這個ip的請求都由同一臺服務器處理。

Ref:

https://www.cnblogs.com/saixing/p/6730201.html

https://blog.51cto.com/13732225/2175804

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

  • 四層負載均衡:僅僅建立一次 TCP 連接 七層負載均衡:負載均衡器與客戶端及后端的服務器會分別建立一個 TCP 連...
    養(yǎng)碼哥閱讀 1,675評論 0 6
  • 一、什么是負載均衡? 互聯(lián)網(wǎng)早期,業(yè)務流量比較小并且業(yè)務邏輯比較簡單,單臺服務器便可以滿足基本的需求;但隨著互聯(lián)網(wǎng)...
    彬彬醬閱讀 2,296評論 0 19
  • 一、負載均衡SLB課程綜述 課程介紹: 1、產(chǎn)品介紹: 產(chǎn)品簡介 產(chǎn)品特點 應用場景 2、概念介紹 產(chǎn)品概念 收費...
    拉斯5961閱讀 2,084評論 0 0
  • 一、什么是負載均衡 首先我們先介紹一下什么是負載均衡:負載平衡(Load balancing)是一種計算機網(wǎng)絡技術(shù)...
    小流江海閱讀 1,085評論 0 2
  • 摘要:面對大量用戶訪問、高并發(fā)請求,海量數(shù)據(jù),可以使用高性能的服務器、大型數(shù)據(jù)庫,存儲設備,高性能Web服務器,采...
    layjoy閱讀 14,025評論 3 93

友情鏈接更多精彩內(nèi)容