• 為用戶創造價值

    始終追求工匠精神,是您靠譜的H5開發、小程序開發、微信開發供應商

    什么是負載均衡?負載均衡在什么情況下使用

    2019-07-21 00:00:00 來源:Infocode藍暢

    什么是負載均衡?

    早期的互聯網,數據流量相對較小,業務邏輯簡單, 1臺服務器可以基本滿足需求。伴隨著互聯網的發展,數據流量越來越大,業務邏輯越來越復雜。單臺機器的性能問題以及單點問題凸顯了出來,因此需要多臺機器來進行性能的水平擴展以及避免單點故障

    最初方法是使用DNS做負載,通過給客戶端解析不同的IP地址,讓客戶端的流量直接到達各個服務器。但是這種方法有一個很大的缺點就是延時性問題,在做出調度策略改變以后,由于DNS各級節點的緩存并不會及時的在客戶端生效,而且DNS負載的調度策略比較簡單,無法滿足業務需求,因此就出現了負載均衡。


    客戶端的流量首先會到達負載均衡服務器,由負載均衡服務器通過一定的調度算法將流量分發到不同的應用服務器上面,同時負載均衡服務器也會對應用服務器做周期性的健康檢查,當發現故障節點時便動態的將節點從應用服務器集群中剔除,以此來保證應用的高可用。


    負載均衡又分為四層負載均衡和七層負載均衡。四層負載均衡工作在OSI模型的傳輸層,主要工作是轉發,它在接收到客戶端的流量以后通過修改數據包的地址信息將流量轉發到應用服務器。


    七層負載均衡工作在OSI模型的應用層,因為它需要解析應用層流量,所以七層負載均衡在接到客戶端的流量以后,還需要一個完整的TCP/IP協議棧。七層負載均衡會與客戶端建立一條完整的連接并將應用層的請求流量解析出來,再按照調度算法選擇一個應用服務器,并與應用服務器建立另外一條連接將請求發送過去,因此七層負載均衡的主要工作就是代理。



    負載均衡的算法

    1、隨機算法

    Random隨機,按權重設置隨機概率。在一個截面上碰撞的概率高,但調用量越大分布越均勻,而且按概率使用權重后也比較均勻,有利于動態調整提供者權重。


    2、輪詢及加權輪詢

    輪詢(Round Robbin)當服務器群中各服務器的處理能力相同時,且每筆業務處理量差異不大時,最適合使用這種算法。 輪循,按公約后的權重設置輪循比率。存在慢的提供者累積請求問題,比如:第二臺機器很慢,但沒掛,當請求調到第二臺時就卡在那,久而久之,所有請求都卡在調到第二臺上。

    加權輪詢(Weighted Round Robbin)為輪詢中的每臺服務器附加一定權重的算法。比如服務器1權重1,服務器2權重2,服務器3權重3,則順序為1-2-2-3-3-3-1-2-2-3-3-3- ......


    3、最小連接及加權最小連接

    最少連接(Least Connections)在多個服務器中,與處理連接數(會話數)最少的服務器進行通信的算法。即使在每臺服務器處理能力各不相同,每筆業務處理量也不相同的情況下,也能夠在一定程度上降低服務器的負載。

    加權最少連接(Weighted Least Connection)為最少連接算法中的每臺服務器附加權重的算法,該算法事先為每臺服務器分配處理連接的數量,并將客戶端請求轉至連接數最少的服務器上。


    4、哈希算法

    普通哈希

    一致性哈希一致性Hash,相同參數的請求總是發到同一提供者。當某一臺提供者掛時,原本發往該提供者的請求,基于虛擬節點,平攤到其它提供者,不會引起劇烈變動。


    5、IP地址散列

    通過管理發送方IP和目的地IP地址的散列,將來自同一發送方的分組(或發送至同一目的地的分組)統一轉發到相同服務器的算法。當客戶端有一系列業務需要處理而必須和一個服務器反復通信時,該算法能夠以流(會話)為單位,保證來自相同客戶端的通信能夠一直在同一服務器中進行處理。


    6、URL散列

    通過管理客戶端請求URL信息的散列,將發送至相同URL的請求轉發至同一服務器的算法。


    載均衡的實現


    DNS域名解析負載均衡


    利用DNS處理域名解析請求的同時進行負載均衡是另一種常用的方案。在DNS服務器中配置多個A記錄,如:www.mysite.com IN A 114.100.80.1、www.mysite.com IN A 114.100.80.2、www.mysite.com IN A 114.100.80.3.


    每次域名解析請求都會根據負載均衡算法計算一個不同的IP地址返回,這樣A記錄中配置的多個服務器就構成一個集群,并可以實現負載均衡。


    DNS域名解析負載均衡的優點是將負載均衡工作交給DNS,省略掉了網絡管理的麻煩,缺點就是DNS可能緩存A記錄,不受網站控制。事實上,大型網站總是部分使用DNS域名解析,作為第一級負載均衡手段,然后再在內部做第二級負載均衡。


    數據鏈路層負載均衡(LVS)


    數據鏈路層負載均衡是指在通信協議的數據鏈路層修改mac地址進行負載均衡。


    這種數據傳輸方式又稱作三角傳輸模式,負載均衡數據分發過程中不修改IP地址,只修改目的的mac地址,通過配置真實物理服務器集群所有機器虛擬IP和負載均衡服務器IP地址一樣,從而達到負載均衡,這種負載均衡方式又稱為直接路由方式(DR).


    在上圖中,用戶請求到達負載均衡服務器后,負載均衡服務器將請求數據的目的mac地址修改為真是WEB服務器的mac地址,并不修改數據包目標IP地址,因此數據可以正常到達目標WEB服務器,該服務器在處理完數據后可以經過網管服務器而不是負載均衡服務器直接到達用戶瀏覽器。


    使用三角傳輸模式的鏈路層負載均衡是目前大型網站所使用的最廣的一種負載均衡手段。在linux平臺上最好的鏈路層負載均衡開源產品是LVS(linux virtual server)。


    IP負載均衡


    IP負載均衡:即在網絡層通過修改請求目標地址進行負載均衡。


    用戶請求數據包到達負載均衡服務器后,負載均衡服務器在操作系統內核進行獲取網絡數據包,根據負載均衡算法計算得到一臺真實的WEB服務器地址,然后將數據包的IP地址修改為真實的WEB服務器地址,不需要通過用戶進程處理。真實的WEB服務器處理完畢后,相應數據包回到負載均衡服務器,負載均衡服務器再將數據包源地址修改為自身的IP地址發送給用戶瀏覽器。


    這里的關鍵在于真實WEB服務器相應數據包如何返回給負載均衡服務器,一種是負載均衡服務器在修改目的IP地址的同時修改源地址,將數據包源地址改為自身的IP,即源地址轉換(SNAT),另一種方案是將負載均衡服務器同時作為真實物理服務器的網關服務器,這樣所有的數據都會到達負載均衡服務器。


    IP負載均衡在內核進程完成數據分發,較反向代理均衡有更好的處理性能。但由于所有請求響應的數據包都需要經過負載均衡服務器,因此負載均衡的網卡帶寬成為系統的瓶頸。


    HTTP重定向負載均衡


    HTTP重定向服務器是一臺普通的應用服務器,其唯一的功能就是根據用戶的HTTP請求計算一臺真實的服務器地址,并將真實的服務器地址寫入HTTP重定向響應中(響應狀態嗎302)返回給瀏覽器,然后瀏覽器再自動請求真實的服務器。


    這種負載均衡方案的優點是比較簡單,缺點是瀏覽器需要每次請求兩次服務器才能拿完成一次訪問,性能較差;使用HTTP302響應碼重定向,可能是搜索引擎判斷為SEO作弊,降低搜索排名。重定向服務器自身的處理能力有可能成為瓶頸。因此這種方案在實際使用中并不見多。


    反向代理負載均衡


    傳統代理服務器位于瀏覽器一端,代理瀏覽器將HTTP請求發送到互聯網上。而反向代理服務器則位于網站機房一側,代理網站web服務器接收http請求。


    反向代理的作用是保護網站安全,所有互聯網的請求都必須經過代理服務器,相當于在web服務器和可能的網絡攻擊之間建立了一個屏障。


    除此之外,代理服務器也可以配置緩存加速web請求。當用戶第一次訪問靜態內容的時候,靜態內存就被緩存在反向代理服務器上,這樣當其他用戶訪問該靜態內容時,就可以直接從反向代理服務器返回,加速web請求響應速度,減輕web服務器負載壓力。


    另外,反向代理服務器也可以實現負載均衡的功能。



    負載均衡在什么情況下使用?

    場景一:應用于高訪問量的業務

    如果您的應用訪問量很高,您可以通過配置監聽規則將流量分發到不同的ECS實例上。此外,您可以使用會話保持功能將同一客戶端的請求轉發到同一臺后端ECS,提高訪問效率。


    場景二:橫向擴張系統

    您可以根據業務發展的需要,通過隨時添加和移除ECS實例來擴展應用系統的服務能力,適用于各種Web服務器和App服務器。


    場景三:消除單點故障

    您可以在負載均衡實例下添加多臺ECS實例。當其中一部分ECS實例發生故障后,負載均衡會自動屏蔽故障的ECS實例,將請求分發給正常運行的ECS實例,保證應用系統仍能正常工作。


    場景四:同城容災 (多可用區容災)

    為了提供更加穩定可靠的負載均衡服務,阿里云負載均衡已在各地域部署了多可用區以實現同地域容災。當主可用區出現機房故障或不可用時,負載均衡仍然有能力在非常短的時間內(大約30s中斷)切換到另外一個備可用區恢復服務能力;當主可用區恢復時,負載均衡同樣會自動切換到主可用區提供服務。


    場景五:跨地域容災

    您可以在不同地域下部署負載均衡實例,并分別掛載相應地域內不同可用區的ECS。上層利用云解析做智能DNS,將域名解析到不同地域的負載均衡實例服務地址下,可實現全局負載均衡。當某個地域出現不可用時,暫停對應解析即可實現所有用戶訪問不受影響。


     
    上一篇:教您正確識別百度蜘蛛
    下一篇:什么是雙機熱備?雙機熱備的解決方案

    相關閱讀推薦:

    什么是雙機熱備?雙機熱備的解決方案

    教您正確識別百度蜘蛛

    服務器選Linux還是 Windows?

    Thinkphp框架filter參數漏洞解析

    什么是CDN加速?為什么要給客戶做CDN加速

    什么是SSL安全證書?為什么要安裝SSL證書?

    Tips: 專業提供H5開發、小程序開發、微信開發、網站開發、APP開發、SEO優化、以及產品規劃和安全運維服務
    色天天爱天天狠天天透 日日摸处处碰天天看 天天日天天操-无码中文有码中文人妻中文
  • <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>