負載均衡的幾種手段

2021-09-27 03:09:36 字數 2941 閱讀 6899

1)http重定向

http重定向伺服器就是乙個普通的伺服器,當使用者訪問時,其會根據一定的演算法得到伺服器集群的乙個真實伺服器的ip位址,將其放在http響應頭中,響應狀態碼為(302),當使用者瀏覽器接收到這個響應時,會將得到的真實伺服器的ip位址提出並重新訪問。如上圖所示,當使用者訪問網域名稱時通過dns解析得到114.100.20.200,然後訪問114.100.20.200,也就是http重定向伺服器,響應重定向至114.100.20.203,使用者瀏覽器再重新訪問。

缺點: 

1. 這種方式需要使用者瀏覽器訪問兩次,效能較差 

2. http重定向伺服器會的處理能力會成為負載均衡的瓶頸 

3. http重定向返回302,可能會使搜尋引擎判定為seo作弊,降低搜尋排名

2)dns網域名稱解析(dns:通過網域名稱獲取ip位址的手段)

優點:將負載均衡的工作丟給了dns伺服器去做,省去了**管理人員的維護工作

對於真實位址的伺服器,不需要做任何的配置

簡單易用,成本低,而且方便靈活

伺服器可以放在任何的地方

同時,dns服務還可以做基於地理位置的解析,可以讓乙個距離最近的伺服器的ip位址放回,提高效能

缺點:1.dns服務是有多級的(之後有時間寫乙個詳細的dns服務介紹)

大致上來說,首先是在瀏覽器中有乙個dns快取,如果找不到就在本機位址的hosts檔案中查詢,再找不到就去路由器快取中查詢。然後是本地dns伺服器,如果沒有,就是根伺服器,頂級伺服器,許可權網域名稱伺服器等等等

總之,在每一級都有可能快取這dns的對應關係,所以有可能當某一台真實伺服器下線之後,修改了dns伺服器的記錄,但在生效之前還有一段時間,在這段期間,其ip位址已經不可用了,通過網域名稱進行訪問時還是會訪問到這個ip位址。會訪問失敗

2.dns伺服器和真實伺服器是完全分開的,所以dns的負載均衡不能監測到真是伺服器當前的執行狀態,其負載均衡的效果不是很好

3.可能會造成額外的網路問題。為了使本dns伺服器和其他dns伺服器及時互動,保證dns資料及時更新,使位址能隨機分配,一般都要將dns的重新整理時間設定的較小,但太小將會使dns流量大增造成額外的網路問題。

事實上,大型**都將dns負載均衡作為第一級的負載均衡手段,在伺服器內部再進行第二級的負載均衡,也就是說,我們通過dns得到的ip位址並不是真實伺服器的ip位址,而是內部負載均衡伺服器的ip位址。

3)反向**

**與反向**:vpn服務就是我們常用的一種**(正向**),使用者將請教交給**伺服器,**伺服器訪問**獲取資料,之後**伺服器再將資料返還給使用者。在這個過程中,應用伺服器並不知道使用者的存在。只知道**瀏覽器的訪問。 

反向**是指在伺服器端的**,**伺服器接收使用者的請求,再**給真實伺服器,之後再返回給**伺服器再給使用者,在這個過程中,使用者並不知道真實伺服器的存在。

反向**伺服器管理了一組伺服器,當使用者訪問時,**伺服器根據負載均衡演算法將請求**到真實伺服器,真實伺服器也通過反向**伺服器返還資料。內部伺服器不對外部提供服務,所以不需要外部ip,而反向**伺服器需要兩個網絡卡,乙個ip用於外部使用者訪問使用,另外乙個用於內部使用。 

如上圖所示,當使用者發起訪問,請求訪問的ip位址是114.100.20.200,到達反向**伺服器時,根據負載均衡演算法得到乙個真實伺服器的ip位址,並將使用者請求**到該伺服器上,當真實伺服器處理完之後將資料返回到反向**伺服器。反相**伺服器再將該響應的內容返回給使用者。

優點:反向**伺服器位於應用層,負載均衡方案和反向**伺服器整合在了一起,部署簡單

缺點:反向**伺服器使用者處理所有的請求和響應,其效能可能成為伺服器集群的瓶頸

有名nginx就是反向**服務

4)ip層負載均衡

ip包結構

其中,可能看到有源位址和目的位址兩項,這兩項就是用來做ip層的負載均衡的關鍵。我們就是通過修改這兩個位址來達到「**」目的 

如上圖所示,當使用者發起請求時(源位址為200.110.50.1),訪問負載均衡伺服器(目的位址為114.100.20.200),負載均衡伺服器在核心程序獲取網路資料報,根據一定的演算法得到乙個真實伺服器的ip位址,其後將ip資料報的目的位址修改為該ip位址(192.168.1.1),之後就會將資料報傳送到該真實伺服器上去,之後再向負載均衡伺服器返回資料,負載均衡伺服器將源位址修改為114.100.20.200後返回給使用者瀏覽器。

(這裡的關鍵在於真實web伺服器相應資料報如何返回給負載均衡伺服器,一種是負載均衡伺服器在修改目的ip位址的同時修改源位址,將資料報源位址改為自身的ip,即源位址轉換(snat),另一種方案是將負載均衡伺服器同時作為真實物理伺服器的閘道器伺服器,這樣所有的資料都會到達負載均衡伺服器。)

這個方法的關鍵就是因為只能在負載均衡伺服器出修改源位址和目的位址,所以在真實伺服器處理完之後要想辦法將資料返回給負載均衡伺服器而不是使用者瀏覽器。 

比如,當使用者發出請求時,目的位址是114.100.20.200,源位址是200.110.50.1,到達負載均衡伺服器後,將目的位址該位192.168.1.1,源位址還是200.110.50.1,所以當真實伺服器處理完之後的資料無法回到負載均衡伺服器

解決方法:

提供兩個網絡卡,負載均衡伺服器就有內部ip和外部ip兩個ip,當請求到達負載均衡伺服器時,修改目的位址,也修改源位址,將源位址修改為負載均衡伺服器的內部ip,這樣的話,真實伺服器處理後的響應就會再次回到負載均衡伺服器

將負載均衡伺服器作為真實伺服器集群的閘道器伺服器,這樣的話所有的請求響應都要經過閘道器伺服器

優點:ip負載均衡在核心程序完成資料分發,處理效能得到了很好的提高。

缺點:鏈路層的負載均衡通過修改幀資料報中的mac位址來達到**的目的。這種方法,所有的真實伺服器和負載均衡伺服器都有相同的ip位址,不用修改ip資料報的目的位址和源位址,只通過修改mac位址就可以達到效果,因為請求的ip位址和實際處理的真實伺服器的ip位址一致,所以不需要回到負載均衡伺服器進行位址交換,可以將響應直接發會給使用者瀏覽器,避免了負載均衡伺服器成為傳輸瓶頸的可能

linux中的lvs(linux virtual server)就是鏈路層負載均衡的開源產品

————————————————

負載均衡演算法及手段

可以是專用裝置,也可以是在通用伺服器上執行的應用程式。分散請求到擁有相同內容或提供相同服務的伺服器。專用裝置一般只有乙太網介面,可以說是多層交換機的一種。負載均衡器一般會被分配虛擬ip位址,所有來自客戶端的請求都是針對虛擬ip位址完成的。負載均衡器通過負載均衡演算法將來自客戶端的請求 到伺服器的實際...

負載均衡演算法及手段

可以是專用裝置,也可以是在通用伺服器上執行的應用程式。分散請求到擁有相同內容或提供相同服務的伺服器。專用裝置一般只有乙太網介面,可以說是多層交換機的一種。負載均衡器一般會被分配虛擬ip位址,所有來自客戶端的請求都是針對虛擬ip位址完成的。負載均衡器通過負載均衡演算法將來自客戶端的請求 到伺服器的實際...

負載均衡手段之DNS輪詢

大多數網域名稱註冊商都支援對統一主機新增多條a記錄,這就是dns輪詢,dns伺服器將解析請求按照a記錄的順序,隨機分配到不同的ip上,這樣就完成了簡單的負載均衡。dns由於成本較低,所以一般在小型的 用的比較多。但是大型的 一般也會將用它和其他負載均衡的方式結合起來一起使用,dns輪詢方式提供的ip...