負載均衡演算法及手段

2022-07-05 09:42:10 字數 2998 閱讀 3553

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

private mapservermap = new hashmap()};

public void random()

public void weightrandom()

server = keylist.get(pos);

pos++;

}system.out.println(server);

}

public void weightroundrobin()

server = servers.get(pos);

pos++;

}system.out.println(server);

}

public void hash()
通過管理傳送方ip和目的地ip位址的雜湊,將來自同一傳送方的分組(或傳送至同一目的地的分組)統一**到相同伺服器的演算法。當客戶端有一系列業務需要處理而必須和乙個伺服器反覆通訊時,該演算法能夠以流(會話)為單位,保證來自相同客戶端的通訊能夠一直在同一伺服器中進行處理。

通過管理客戶端請求url資訊的雜湊,將傳送至相同url的請求**至同一伺服器的演算法。

利用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網域名稱解析,作為第一級負載均衡手段,然後再在內部做第二級負載均衡。

資料鏈路層負載均衡是指在通訊協議的資料鏈路層修改mac位址進行負載均衡。

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

在上圖中,使用者請求到達負載均衡伺服器後,負載均衡伺服器將請求資料的目的mac位址修改為真是web伺服器的mac位址,並不修改資料報目標ip位址,因此資料可以正常到達目標web伺服器,該伺服器在處理完資料後可以經過網管伺服器而不是負載均衡伺服器直接到達使用者瀏覽器。

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

使用者請求資料報到達負載均衡伺服器後,負載均衡伺服器在作業系統核心進行獲取網路資料報,根據負載均衡演算法計算得到一台真實的web伺服器位址,然後將資料報的ip位址修改為真實的web伺服器位址,不需要通過使用者程序處理。真實的web伺服器處理完畢後,相應資料報回到負載均衡伺服器,負載均衡伺服器再將資料報源位址修改為自身的ip位址傳送給使用者瀏覽器。

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

ip負載均衡在核心程序完成資料分發,較反向**均衡有更好的處理效能。但由於所有請求響應的資料報都需要經過負載均衡伺服器,因此負載均衡的網絡卡頻寬成為系統的瓶頸。

http重定向伺服器是一台普通的應用伺服器,其唯一的功能就是根據使用者的http請求計算一台真實的伺服器位址,並將真實的伺服器位址寫入http重定向響應中(響應狀態嗎302)返回給瀏覽器,然後瀏覽器再自動請求真實的伺服器。

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

傳統**伺服器位於瀏覽器一端,**瀏覽器將http請求傳送到網際網路上。而反向**伺服器則位於**機房一側,****web伺服器接收http請求。

反向**的作用是保護**安全,所有網際網路的請求都必須經過**伺服器,相當於在web伺服器和可能的網路攻擊之間建立了乙個屏障。

除此之外,**伺服器也可以配置快取加速web請求。當使用者第一次訪問靜態內容的時候,靜態記憶體就被快取在反向**伺服器上,這樣當其他使用者訪問該靜態內容時,就可以直接從反向**伺服器返回,加速web請求響應速度,減輕web伺服器負載壓力。

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

由於反向**伺服器**請求在http協議層面,因此也叫應用層負載均衡。優點是部署簡單,缺點是可能成功系統的瓶頸。

原文:

負載均衡演算法及手段

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

負載均衡的幾種手段

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

負載均衡手段之DNS輪詢

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