Web集群是由多個同時運行同一個web應用的服務器組成,在外界看來就像一個服務器一樣,這多臺服務器共同來為客戶提供更高性能的服務。集群更標準的定 義是:一組相互獨立的服務器在網絡中表現為單一的系統,并以單一系統的模式加以管理,此單一系統為客戶工作站提供高可靠性的服務。
而負載均衡的任務就是負責多個服務器之 間(集群內)實現合理的任務分配,使這些服務器(集群)不會出現因某一臺超負荷、而其他的服務器卻沒有充分發揮處理能力的情況。負載均衡有兩個方面的含 義:首先,把大量的并發訪問或數據流量分擔到多臺節點上分別處理,減少用戶等待響應的時間;其次,單個高負載的運算分擔到多臺節點上做并行處理,每個節點 設備處理結束后,將結果匯總,再返回給用戶,使得信息系統處理能力可以得到大幅度提高
因此可以看出,集群和負載均衡有本質上的不同,它們是解決兩方面問題的不同方案,不要混淆。
集群技術可以分為三大類:
1、高性能性集群(HPC Cluster)
2、高可用性集群(HA Cluster)
3、高可擴展性集群
一、高性能性集群(HPC Cluster)
指以提高科學計算能力為目標的集群技術。該集群技術主要用于科學計算,這里不打算介紹,如果感興趣可以參考相關的資料。
二、高可用性集群(HA Cluster)
指為了使群集的整體服務盡可能可用,減少服務宕機時間為目的的集群技術。如果高可用性集群中的某節點發生了故障,那么這段時間內將由其他節點代替它的工作。當然對于其他節點來講,負載相應的就增加了。
為了提高整個系統的可用性,除了提高計算機各個部件的可靠性以外,一般情況下都會采用該集群的方案。
對于該集群方案,一般會有兩種工作方式:
①主-主(Active-Active)工作方式
這是最常用的集群模型,它提供了高可用性,并且在只有一個節點時也能提供可以接受的性能,該模型允許最大程度的利用硬件資源。每個節點都通過網絡對客戶機 提供資源,每個節點的容量被定義好,使得性能達到最優,并且每個節點都可以在故障轉移時臨時接管另一個節點的工作。所有的服務在故障轉移后仍保持可用,但 是性能通常都會下降。

②主-從(Active-Standby)工作方式
為了提供最大的可用性,以及對性能最小的影響,主-從工作方式需要一個在正常工作時處于備用狀態的節點,主節點處理客戶機的請求,而備用節點處于空閑狀態,當主節點出現故障時,備用節點會接管主節點的工作,繼續為客戶機提供服務,并且不會有任何性能上影響。

這里指帶有負載均衡策略(算法)的服務器群集技術。帶負載均衡集群為企業需求提供了更實用的方案,它使負載可以在計算機集群中盡可能平均地分攤處理。而需 要均衡的可能是應用程序處理負載或是網絡流量負載。該方案非常適合于運行同一組應用程序的節點。每個節點都可以處理一部分負載,并且可以在節點之間動態分 配負載, 以實現平衡。對于網絡流量也是如此。通常,單個節點對于太大的網絡流量無法迅速處理,這就需要將流量發送給在其它節點。還可以根據每個節點上不同的可用資 源或網絡的特殊環境來進行優化。
負載均衡集群在多節點之間按照一定的策略(算法)分發網絡或計算處理負載。負載均衡建立在現有網絡結構之上,它提供了一種廉價有效的方法來擴展服務器帶寬,增加吞吐量,提高數據處理能力,同時又可以避免單點故障。
而負載均衡的任務就是負責多個服務器之 間(集群內)實現合理的任務分配,使這些服務器(集群)不會出現因某一臺超負荷、而其他的服務器卻沒有充分發揮處理能力的情況。負載均衡有兩個方面的含 義:首先,把大量的并發訪問或數據流量分擔到多臺節點上分別處理,減少用戶等待響應的時間;其次,單個高負載的運算分擔到多臺節點上做并行處理,每個節點 設備處理結束后,將結果匯總,再返回給用戶,使得信息系統處理能力可以得到大幅度提高
因此可以看出,集群和負載均衡有本質上的不同,它們是解決兩方面問題的不同方案,不要混淆。
集群技術可以分為三大類:
1、高性能性集群(HPC Cluster)
2、高可用性集群(HA Cluster)
3、高可擴展性集群
一、高性能性集群(HPC Cluster)
指以提高科學計算能力為目標的集群技術。該集群技術主要用于科學計算,這里不打算介紹,如果感興趣可以參考相關的資料。
二、高可用性集群(HA Cluster)
指為了使群集的整體服務盡可能可用,減少服務宕機時間為目的的集群技術。如果高可用性集群中的某節點發生了故障,那么這段時間內將由其他節點代替它的工作。當然對于其他節點來講,負載相應的就增加了。
為了提高整個系統的可用性,除了提高計算機各個部件的可靠性以外,一般情況下都會采用該集群的方案。
對于該集群方案,一般會有兩種工作方式:
①主-主(Active-Active)工作方式
這是最常用的集群模型,它提供了高可用性,并且在只有一個節點時也能提供可以接受的性能,該模型允許最大程度的利用硬件資源。每個節點都通過網絡對客戶機 提供資源,每個節點的容量被定義好,使得性能達到最優,并且每個節點都可以在故障轉移時臨時接管另一個節點的工作。所有的服務在故障轉移后仍保持可用,但 是性能通常都會下降。

這是目前運用最為廣泛的雙節點雙應用的Active/Active模式。
支撐用戶業務的應用程序在正常狀態下分別在兩臺節點上運行,各自有自己的資源,比如IP地址、磁盤陣列上的卷或者文件系統。當某一方的系統或者資源出現故障時,就會將應用和相關資源切換到對方的節點上。
這種模式的最大優點是不會有服務器的“閑置”,兩臺服務器在正常情況下都在工作。但如果有故障發生導致切換,應用將放在同一臺服務器上運行,由于服務器的處理能力有可能不能同時滿足數據庫和應用程序的峰值要求,這將會出現處理能力不夠的情況,降低業務響應水平。
②主-從(Active-Standby)工作方式
為了提供最大的可用性,以及對性能最小的影響,主-從工作方式需要一個在正常工作時處于備用狀態的節點,主節點處理客戶機的請求,而備用節點處于空閑狀態,當主節點出現故障時,備用節點會接管主節點的工作,繼續為客戶機提供服務,并且不會有任何性能上影響。

兩節點的Active/Standby模式是HA中最簡單的一種,兩臺服務器通過雙心跳線路組成一個集群。應用Application聯合各個可選的系統組件如:外置共享的磁盤陣列、文件系統和浮動IP地址等組成業務運行環境。
PCL為此環境提供了完全冗余的服務器配置。這種模式的優缺點:
- 缺點:Node2在Node1正常工作時是處于“閑置”狀態,造成服務器資源的浪費。
- 優點:當Node1發生故障時,Node2能完全接管應用,并且能保證應用運行時的對處理能力要求。
這里指帶有負載均衡策略(算法)的服務器群集技術。帶負載均衡集群為企業需求提供了更實用的方案,它使負載可以在計算機集群中盡可能平均地分攤處理。而需 要均衡的可能是應用程序處理負載或是網絡流量負載。該方案非常適合于運行同一組應用程序的節點。每個節點都可以處理一部分負載,并且可以在節點之間動態分 配負載, 以實現平衡。對于網絡流量也是如此。通常,單個節點對于太大的網絡流量無法迅速處理,這就需要將流量發送給在其它節點。還可以根據每個節點上不同的可用資 源或網絡的特殊環境來進行優化。
負載均衡集群在多節點之間按照一定的策略(算法)分發網絡或計算處理負載。負載均衡建立在現有網絡結構之上,它提供了一種廉價有效的方法來擴展服務器帶寬,增加吞吐量,提高數據處理能力,同時又可以避免單點故障。
前面已經說過負載均衡的作用是在多個節點之間按照一定的策略(算法)分發網絡或計算處理負載。負載均衡可以采用軟件和硬件來實現。一般的框架結構可以參考下圖。

后 臺的多個Web節點上面有相同的Web應用,用戶的訪問請求首先進入負載均衡分配節點(可能是軟件或者硬件),由它根據負載均衡策略(算法)合理地分配給 某個Web應用節點。每個Web節點相同的內容做起來不難,所以選擇負載均衡策略(算法)是個關鍵問題。下面會專門介紹均衡算法。
web 負載均衡的作用就是把請求均勻的分配給各個節點,它是一種動態均衡,通過一些工具實時地分析數據包,掌握網絡中的數據流量狀況,把請求理分配出去。對于不 同的應用環境(如電子商務網站,它的計 算負荷大;再如網絡數據庫應用,讀寫頻繁,服務器的存儲子系統系統面臨很大壓力;再如視頻服務應用,數據傳輸量大,網絡接口負擔重壓。),使用的均衡策略 (算法)是不同的。 所以均衡策略(算法)也就有了多種多樣的形式,廣義上的負載均衡既可以設置專門的網關、負載均衡器,也可以通過一些專用軟件與協議來實現。在OSI七層協 議模型中的第二(數據鏈路層)、第三(網絡層)、第四(傳輸層)、第七層(應用層)都有相應的負載均衡策略(算法),在數據鏈路層上實現負載均衡的原理是 根據數據包的目的MAC地址選擇不同的路徑;在網絡層上可利用基于IP地址的分配方式將數據流疏通到多個節點;而傳輸層和應用層的交換(Switch), 本身便是一種基于訪問流量的控制方式,能夠實現負載均衡。
目前,基于負載均衡的算法主要有三種:輪循(Round-Robin)、最小連接數(Least Connections First),和快速響應優先(Faster Response Precedence)。
①輪循算法,就是將來自網絡的請求依次分配給集群中的節點進行處理。
②最小連接數算法,就是為集群中的每臺服務器設置一個記數器,記錄每個服務器當前的連接數,負載均衡系統總是選擇當前連接數最少的服務器分配任務。 這要比"輪循算法"好很多,因為在有些場合中,簡單的輪循不能判斷哪個節點的負載更低,也許新的工作又被分配給了一個已經很忙的服務器了。
③快速響應優先算法,是根據群集中的節點的狀態(CPU、內存等主要處理部分)來分配任務。 這一點很難做到,事實上到目前為止,采用這個算法的負載均衡系統還很少。尤其對于硬件負載均衡設備來說,只能在TCP/IP協議方面做工作,幾乎不可能深入到服務器的處理系統中進行監測。但是它是未來發展的方向。
上面是負載均衡常用的算法,基于以上負載均衡算法的使用方式上,又分為如下幾種:
1、DNS輪詢
最早的負載均衡技術是通過DNS來實現的,在DNS中為多個地址配置同一個名字,因而查詢這個名字的客戶機將得到其中一個地址,從而使得不同的客戶訪問不同的服務器,達到負載均衡的目的。
DNS負載均衡是一種簡單而有效的方法,但是它不能區分服務器的差異,也不能反映服務器的當前運行狀態。當使用DNS負載均衡的時候,必須盡量保證不同的 客戶計算機能均勻獲得不同的地址。由于DNS數據具備刷新時間標志,一旦超過這個時間限制,其他DNS服務器就需要和這個服務器交互,以重新獲得地址數 據,就有可能獲得不同IP地址。因此為了使地址能隨機分配,就應使刷新時間盡量短,不同地方的DNS服務器能更新對應的地址,達到隨機獲得地址,然而將過 期時間設置得過短,將使DNS流量大增,而造成額外的網絡問題。DNS負載均衡的另一個問題是,一旦某個服務器出現故障,即使及時修改了DNS設置,還是 要等待足夠的時間(刷新時間)才能發揮作用,在此期間,保存了故障服務器地址的客戶計算機將不能正常訪問服務器
2、反向代理服務器
使用代理服務器,可以將請求轉發給內部的服務器,使用這種加速模式顯然可以提升靜態網頁的訪問速度。然而,也可以考慮這樣一種技術,使用代理服務器將請求均勻轉發給多臺服務器,從而達到負載均衡的目的。
這種代理方式與普通的代理方式有所不同,標準代理方式是客戶使用代理訪問多個外部服務器,而這種代理方式是代理多個客戶訪問內部服務器,因此也被稱為反向代理模式。雖然實現這個任務并不算是特別復雜,然而由于要求特別高的效率,實現起來并不簡單。
使用反向代理的好處是,可以將負載均衡和代理服務器的高速緩存技術結合在一起,提供有益的性能。然而它本身也存在一些問題,首先就是必須為每一種服務都專門開發一個反向代理服務器,這就不是一個輕松的任務。
代理服務器本身雖然可以達到很高效率,但是針對每一次代理,代理服務器就必須維護兩個連接,一個對外的連接,一個對內的連接,因此對于特別高的連接請求, 代理服務器的負載也就非常之大。反向代理方式下能應用優化的負載均衡策略,每次訪問最空閑的內部服務器來提供服務。但是隨著并發連接數量的增加,代理服務 器本身的負載也變得非常大,最后反向代理服務器本身會成為服務的瓶頸。
3、地址轉換網關
支持負載均衡的地址轉換網關,可以將一個外部IP地址映射為多個內部IP地址,對每次TCP連接請求動態使用其中一個內部地址,達到負載均衡的目的。很多 硬件廠商將這種技術集成在他們的交換機中,作為他們第四層交換的一種功能來實現,一般采用隨機選擇、根據服務器的連接數量或者響應時間進行選擇的負載均衡 策略來分配負載。由于地址轉換相對來講比較接近網絡的低層,因此就有可能將它集成在硬件設備中,通常這樣的硬件設備是局域網交換機。

后 臺的多個Web節點上面有相同的Web應用,用戶的訪問請求首先進入負載均衡分配節點(可能是軟件或者硬件),由它根據負載均衡策略(算法)合理地分配給 某個Web應用節點。每個Web節點相同的內容做起來不難,所以選擇負載均衡策略(算法)是個關鍵問題。下面會專門介紹均衡算法。
web 負載均衡的作用就是把請求均勻的分配給各個節點,它是一種動態均衡,通過一些工具實時地分析數據包,掌握網絡中的數據流量狀況,把請求理分配出去。對于不 同的應用環境(如電子商務網站,它的計 算負荷大;再如網絡數據庫應用,讀寫頻繁,服務器的存儲子系統系統面臨很大壓力;再如視頻服務應用,數據傳輸量大,網絡接口負擔重壓。),使用的均衡策略 (算法)是不同的。 所以均衡策略(算法)也就有了多種多樣的形式,廣義上的負載均衡既可以設置專門的網關、負載均衡器,也可以通過一些專用軟件與協議來實現。在OSI七層協 議模型中的第二(數據鏈路層)、第三(網絡層)、第四(傳輸層)、第七層(應用層)都有相應的負載均衡策略(算法),在數據鏈路層上實現負載均衡的原理是 根據數據包的目的MAC地址選擇不同的路徑;在網絡層上可利用基于IP地址的分配方式將數據流疏通到多個節點;而傳輸層和應用層的交換(Switch), 本身便是一種基于訪問流量的控制方式,能夠實現負載均衡。
目前,基于負載均衡的算法主要有三種:輪循(Round-Robin)、最小連接數(Least Connections First),和快速響應優先(Faster Response Precedence)。
①輪循算法,就是將來自網絡的請求依次分配給集群中的節點進行處理。
②最小連接數算法,就是為集群中的每臺服務器設置一個記數器,記錄每個服務器當前的連接數,負載均衡系統總是選擇當前連接數最少的服務器分配任務。 這要比"輪循算法"好很多,因為在有些場合中,簡單的輪循不能判斷哪個節點的負載更低,也許新的工作又被分配給了一個已經很忙的服務器了。
③快速響應優先算法,是根據群集中的節點的狀態(CPU、內存等主要處理部分)來分配任務。 這一點很難做到,事實上到目前為止,采用這個算法的負載均衡系統還很少。尤其對于硬件負載均衡設備來說,只能在TCP/IP協議方面做工作,幾乎不可能深入到服務器的處理系統中進行監測。但是它是未來發展的方向。
上面是負載均衡常用的算法,基于以上負載均衡算法的使用方式上,又分為如下幾種:
1、DNS輪詢
最早的負載均衡技術是通過DNS來實現的,在DNS中為多個地址配置同一個名字,因而查詢這個名字的客戶機將得到其中一個地址,從而使得不同的客戶訪問不同的服務器,達到負載均衡的目的。
DNS負載均衡是一種簡單而有效的方法,但是它不能區分服務器的差異,也不能反映服務器的當前運行狀態。當使用DNS負載均衡的時候,必須盡量保證不同的 客戶計算機能均勻獲得不同的地址。由于DNS數據具備刷新時間標志,一旦超過這個時間限制,其他DNS服務器就需要和這個服務器交互,以重新獲得地址數 據,就有可能獲得不同IP地址。因此為了使地址能隨機分配,就應使刷新時間盡量短,不同地方的DNS服務器能更新對應的地址,達到隨機獲得地址,然而將過 期時間設置得過短,將使DNS流量大增,而造成額外的網絡問題。DNS負載均衡的另一個問題是,一旦某個服務器出現故障,即使及時修改了DNS設置,還是 要等待足夠的時間(刷新時間)才能發揮作用,在此期間,保存了故障服務器地址的客戶計算機將不能正常訪問服務器
2、反向代理服務器
使用代理服務器,可以將請求轉發給內部的服務器,使用這種加速模式顯然可以提升靜態網頁的訪問速度。然而,也可以考慮這樣一種技術,使用代理服務器將請求均勻轉發給多臺服務器,從而達到負載均衡的目的。
這種代理方式與普通的代理方式有所不同,標準代理方式是客戶使用代理訪問多個外部服務器,而這種代理方式是代理多個客戶訪問內部服務器,因此也被稱為反向代理模式。雖然實現這個任務并不算是特別復雜,然而由于要求特別高的效率,實現起來并不簡單。
使用反向代理的好處是,可以將負載均衡和代理服務器的高速緩存技術結合在一起,提供有益的性能。然而它本身也存在一些問題,首先就是必須為每一種服務都專門開發一個反向代理服務器,這就不是一個輕松的任務。
代理服務器本身雖然可以達到很高效率,但是針對每一次代理,代理服務器就必須維護兩個連接,一個對外的連接,一個對內的連接,因此對于特別高的連接請求, 代理服務器的負載也就非常之大。反向代理方式下能應用優化的負載均衡策略,每次訪問最空閑的內部服務器來提供服務。但是隨著并發連接數量的增加,代理服務 器本身的負載也變得非常大,最后反向代理服務器本身會成為服務的瓶頸。
3、地址轉換網關
支持負載均衡的地址轉換網關,可以將一個外部IP地址映射為多個內部IP地址,對每次TCP連接請求動態使用其中一個內部地址,達到負載均衡的目的。很多 硬件廠商將這種技術集成在他們的交換機中,作為他們第四層交換的一種功能來實現,一般采用隨機選擇、根據服務器的連接數量或者響應時間進行選擇的負載均衡 策略來分配負載。由于地址轉換相對來講比較接近網絡的低層,因此就有可能將它集成在硬件設備中,通常這樣的硬件設備是局域網交換機。
原文出自:
http://blog.csdn.net/lovingprince/article/details/3290871