http重定向
dns網域名稱解析
反向**
ip層負載均衡
鏈路層的負載均衡
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作弊,降低搜尋排名
優點:將負載均衡的工作丟給了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位址。
**與反向**:vpn服務就是我們常用的一種**(正向**),使用者將請教交給**伺服器,**伺服器訪問**獲取資料,之後**伺服器再將資料返還給使用者。在這個過程中,應用伺服器並不知道使用者的存在。只知道**瀏覽器的訪問。
反向**是指在伺服器端的**,**伺服器接收使用者的請求,再**給真實伺服器,之後再返回給**伺服器再給使用者,在這個過程中,使用者並不知道真實伺服器的存在。
反向**伺服器管理了一組伺服器,當使用者訪問時,**伺服器根據負載均衡演算法將請求**到真實伺服器,真實伺服器也通過反向**伺服器返還資料。內部伺服器不對外部提供服務,所以不需要外部ip,而反向**伺服器需要兩個網絡卡,乙個ip用於外部使用者訪問使用,另外乙個用於內部使用。
如上圖所示,當使用者發起訪問,請求訪問的ip位址是114.100.20.200,到達反向**伺服器時,根據負載均衡演算法得到乙個真實伺服器的ip位址,並將使用者請求**到該伺服器上,當真實伺服器處理完之後將資料返回到反向**伺服器。反相**伺服器再將該響應的內容返回給使用者。
優點:反向**伺服器位於應用層,負載均衡方案和反向**伺服器整合在了一起,部署簡單
缺點:反向**伺服器使用者處理所有的請求和響應,其效能可能成為伺服器集群的瓶頸
有名nginx就是反向**服務
ip包結構
其中,可能看到有源位址和目的位址兩項,這兩項就是用來做ip層的負載均衡的關鍵。我們就是通過修改這兩個位址來達到「**」目的
如上圖所示,當使用者發起請求時(源位址為200.110.50.1),訪問負載均衡伺服器(目的位址為114.100.20.200),負載均衡伺服器在核心程序獲取網路資料報,根據一定的演算法得到乙個真實伺服器的ip位址,其後將ip資料報的目的位址修改為該ip位址(192.168.1.1),之後就會將資料報傳送到該真實伺服器上去,之後再向負載均衡伺服器返回資料,負載均衡伺服器將源位址修改為114.100.20.200後返回給使用者瀏覽器。
這個方法的關鍵就是因為只能在負載均衡伺服器出修改源位址和目的位址,所以在真實伺服器處理完之後要想辦法將資料返回給負載均衡伺服器而不是使用者瀏覽器。
比如,當使用者發出請求時,目的位址是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)就是鏈路層負載均衡的開源產品
幾種常見的負載均衡
1 http重定向 http重定向伺服器就是乙個普通的伺服器,當使用者訪問時,其會根據一定的演算法得到伺服器集群的乙個真實伺服器的ip位址,將其放在http響應頭中,響應狀態碼為 302 當使用者瀏覽器接收到這個響應時,會將得到的真實伺服器的ip位址提出並重新訪問。如上圖所示,當使用者訪問網域名稱時...
幾種常見的負載均衡演算法的工作原理
在分布式系統設計當中,一般會對服務進行集群部署,集群中的多個節點提供相同的服務,所以可以將對該服務的請求分發給集群的任意乙個節點來處理。為了將請求合理分發給集群的節點進行處理,即既要保證集群的每個節點都能夠分配到請求,又能夠實現不會給某個節點分配過多請求,導致超過節點處理能力,所以需要基於一定的規則...
負載均衡的幾種手段
1 http重定向 http重定向伺服器就是乙個普通的伺服器,當使用者訪問時,其會根據一定的演算法得到伺服器集群的乙個真實伺服器的ip位址,將其放在http響應頭中,響應狀態碼為 302 當使用者瀏覽器接收到這個響應時,會將得到的真實伺服器的ip位址提出並重新訪問。如上圖所示,當使用者訪問網域名稱時...