負載平衡

負載平衡能夠以透通方式進行 Proxy 伺服器和 Application Server 的叢集作業,從而改進網站的可用性和可調整性。 由於能夠以透通方式新增後端處理功能,大幅改進了 IT 基礎架構的可調整性。

多部內容主機的負載平衡

您可以在多部主機上複製內容來滿足高度需求,但如此一來,您必須有在各部主機之間進行負載平衡的方法。 「網域名稱服務 (DNS)」可以提供基本的循環式負載平衡,但在若干狀況下其執行情況可能欠佳。

更準確地在多部內容主機之間進行負載平衡的解決方案是依照圖 5 所描述,使用 Load Balancer 的「分派器」元件。 在這個配置中,所有內容主機(標示 5 的機器)都儲存相同的內容。 它們會定義以形成一個負載平衡叢集,且叢集專用的主機名稱和 IP 位址會指派給 Load Balancer 機器 (4) 的其中一個網路介面。 當在其中一部標示 1 之機器上運作的一般使用者要求 X 檔時,要求會穿越網際網路 (2),並透過企業的網際網路閘道 (3) 進入企業的內部網路。 「分派器」會截取要求,因為它的 URL 對映至「分派器」的主機名稱和 IP 位址。 「分派器」會決定叢集中的哪部內容主機目前最能夠處理要求,然後將要求轉遞給這部主機,這部主機在配置了 MAC 轉遞方法的情況下,會將 X 檔直接傳回給用戶端(也就是說,X 檔不會通過 Load Balancer)。

圖 5. 多部內容主機的負載平衡
此圖描述多部內容主機的負載平衡
圖註:1—用戶端   2—網際網路   3—路由器/閘道   4—分派器   5—內容主機
註:
「分派器」提供三種轉遞方法:

依預設,「分派器」會使用類似 DNS 的循環式負載平衡,但即便如此,它也會處理 DNS 的許多不充分之處。 有別於 DNS,它會去追蹤內容主機是否無法使用或無法存取,且不會繼續將用戶端引導到無法使用的內容主機。 不但如此,它還會追蹤全新、作用中和已完成的連線,以考量內容主機的現行負載。 您可以啟動 Load Balancer 的選用顧問和管理程式元件,以便更精確追蹤內容主機的狀態,以及將其他資訊納入負載平衡決策程序中,進一步將負載平衡最佳化。 管理程式可供您指派不同的加權給決策程序所用的不同因素,進一步自訂網站的負載平衡。

多部反向 Proxy 伺服器的負載平衡

Load Balancer 的「分派器」也能夠執行多部 Caching Proxy 機器的負載平衡。 如果您的企業網站普及程度很高,對其內容需求可能會大於單一 Proxy 伺服器所能有效滿足的範圍,因此可能會降低 Proxy 伺服器的效能。

您可以讓多部 Caching Proxy 系統執行單一內容主機(類似於圖 1 所描述的配置)的 Proxy 功能,但如果您的網站普及程度需要使用多部 Proxy 伺服器,您也可能需要由 Load Balancer 來進行負載平衡的多部內容主機。 圖 6 描述這個配置。 標示 4 的「分派器」進行兩部 Proxy 伺服器 (5) 之叢集的負載平衡,標示 7 的「分派器」進行三部內容主機 (8) 之叢集的負載平衡。

圖 6. 多部反向 Proxy 伺服器和內容主機的負載平衡
此圖描述多部 Proxy 伺服器和內容主機的負載平衡
圖註:1—用戶端   2—網際網路   3—路由器/閘道   4—分派器   5—Proxy 伺服器   6—快取   7—分派器   8—內容主機

標示 4 之「分派器」的叢集主機名稱是出現在企業 Web 內容之 URL 中的主機名稱(也就是說,它是網際網路上所能見到的網站名稱)。 在網際網路中,無法見到標示 7 之「分派器」的叢集主機名稱,因此,它可以是您想要的任何值。 例如,對於 ABC 公司而言,標示 4 之「分派器」的適當主機名稱是 www.abc.com,而標示 7 之「分派器」可以採用 http-balancer.abc.com 之類的名稱。

假設標示 1 之其中一部用戶端機器的瀏覽器,需要存取標示 8 之內容伺服器所儲存的 X 檔。 HTTP 要求會穿越網際網路 (2),並透過閘道 (3) 進入企業的內部網路。 路由器會將要求引導到標示 4 的「分派器」,並根據負載平衡演算法,由它將要求傳給目前最能夠處理要求的 Proxy 伺服器 (5)。 如果 Proxy 伺服器的快取 (6) 含有 X 檔,它會略過標示 4 的「分派器」,將檔案直接傳回給瀏覽器。

如果 Proxy 伺服器的快取中不含 X 檔的副本,它會建立一個將其主機名稱放在標頭原始欄位中的新要求,然後將該要求傳給標示 7 的「分派器」。 Load Balancer 會決定哪部內容主機 (8) 目前最能夠滿足要求,然後將要求引導到這部主機。 內容主機會從儲存體中擷取 X 檔,且會略過標示 7 的「分派器」,將檔案直接傳回給 Proxy 伺服器。 Proxy 伺服器會適時快取 X 檔,然後略過標示 4 的分派器,將它轉遞給瀏覽器。

多部轉遞 Proxy 伺服器的 Load Balancer

如果您向大量用戶端提供網際網路存取,這些用戶端產生的網際網路存取要求,會超出單一 Proxy 所能有效提供的範圍。 當 Caching Proxy 因太多要求而超載,用戶端經歷的回應時間有可能會比直接存取網際網路還慢。 如果因網路失敗而造成 Caching Proxy 失敗或無法存取,也就不可能進行網際網路存取。 解決方案是安裝多部 Caching Proxy 機器,利用 Load Balancer 的「分派器」,在各部機器之間進行負載平衡。

未使用「分派器」時,只有在路由器能夠將同類型的資料流量遞送至多部 Caching Proxy 的情況下,您才能向多部 Caching Proxy 機器提供實際的透通 Proxy ;並非所有路由器都支援這項功能。 未使用「分派器」時,您有可能在多部 Caching Proxy 機器中提供一般轉遞 Proxy 服務,但您必須明確配置用戶端瀏覽器,以利用其中一部 Caching Proxy 機器作為主要 Proxy。 如果這個 Caching Proxy 失敗,或超載或無法存取,一般使用者可能無法存取網際網路。 如果要避免這個狀況,您可以建立一個 Proxy 自動配置 (PAC) 檔(依照透通轉遞 Caching Proxy(只限 Linux 系統)所說明),引導瀏覽器失效接手到一或多部次要 Caching Proxy。 PAC 檔並不會處理各部 Caching Proxy 機器之間的負載平衡需求;不過,如果一部 Caching Proxy 接收的要求超出另一部 Caching Proxy,它的效能有可能降低,因而使其瀏覽器用戶端經歷較慢的回應時間。 如果要使所有用戶端都感受到類似的效能,您必須為每部 Caching Proxy 配置大約相同數目的瀏覽器以供使用,並手動追蹤瀏覽器的分佈情況,以便在新增或移除瀏覽器時保持負載平衡。

圖 7 描述由「分派器」進行 Caching Proxy 機器叢集之負載平衡的網路配置。 「分派器」機器的其中一個網路介面,會配置成具有叢集專用的主機名稱和 IP 位址。 用戶端瀏覽器會配置成將它們的網際網路要求引導到該叢集主機名稱。 比方說,當其中一部標示 1 之用戶端機器的瀏覽器,需要存取位於內容主機 (7) 的 X 檔時,它會將要求引導到叢集主機名稱或位址,而「分派器」(2) 會在這裡截取要求,然後將要求引導到適當的 Caching Proxy (3)。 Caching Proxy 會依照轉遞 Caching Proxy所詳述,建立一個新的要求,然後通過企業的閘道 (5) 並跨越網際網路 (6) 來傳遞要求,且會適時將傳回的檔案儲存在它的快取 (4) 中。

註:
只有在 Linux 系統上才能使用透通 Proxy 特性。
圖 7. 利用「分派器」進行多部 Caching Proxy 的負載平衡。
此圖描述多部 Proxy 的負載平衡

「分派器」會偵測無法使用的 Caching Proxy 機器,然後將要求自動傳遞給另一部 Caching Proxy 機器。 如此一來,您就可以在不岔斷網際網路存取的情況下,關閉 Caching Proxy 機器來進行維護。 「分派器」有許多配置選項,供您在進行負載平衡決策時,用來控制它所考量的因素。 另外,您也可以將輔助「分派器」程式安裝在 Caching Proxy 機器上,以監視它們的狀態,並將資訊傳回給「分派器」。 如需詳細資料,請參閱 WebSphere®Application Server Load Balancer 管理手冊。 使用多部 Caching Proxy 有可能使效率降低,因為如果不同的用戶端透過不同的 Caching Proxy 機器來要求檔案,多部 Caching Proxy 可能會快取相同的檔案。 如果要消除冗餘,您可以配置遠端快取存取 (RCA),使已定義群組中的所有 Proxy 能夠彼此共用它們的快取內容。 RCA 群組中的 Proxy 全部利用相同的演算法來決定哪個 Caching Proxy 負責給定的 URL。 當 Caching Proxy 截取並不是它負責的 URL 時,它會將要求傳給負責的 Caching Proxy。 負責的 Caching Proxy 會進行必要的工作來滿足要求,可能會從它的快取中擷取要求,也可能會將要求轉遞給相關的內容主機,且會適時快取傳回的檔案。 然後負責的 Caching Proxy 會將檔案傳給原始 Caching Proxy,由原始 Caching Proxy 將它遞送給發出要求的一般使用者。

在 RCA 群組中,如果負責給定 URL 的 Caching Proxy 失敗,接收用戶端要求的原始 Caching Proxy 就會直接存取內容主機(如果已定義備份 Caching Proxy 伺服器,就會存取這部備份伺服器)。 這表示只要至少有一個 Caching Proxy 能在 RCA 群組中正確運作,使用者就可以存取檔案。

這個配置利用「分派器」來進行跨多部 Caching Proxy 機器之要求的負載平衡,從而滿足網際網路存取的高度需求。 「分派器」為單一失敗點可能會是個問題。 如果因為網路失敗,造成分派器失敗或無法存取,瀏覽器用戶端就無法存取 Caching Proxy 或網際網路。 這個解決方案是依照圖 8 所描述,配置另一個「分派器」來作為主要「分派器」的備份。

圖 8. 利用主要和備份「分派器」來提供具備高可用性的網際網路存取。
此圖描述進行多部 Proxy 之負載平衡的主要和備份分派器

在此圖中,在其中一部標示 1 之機器上執行的瀏覽器,通常會將它對於 X 檔的要求引導到主要「分派器」(2),而主要「分派器」會將要求遞送至根據「分派器」的負載平衡準則而選取的 Caching Proxy (4)。 Caching Proxy 會建立一個新的要求,然後透過企業的閘道 (6) 並跨越網際網路 (7),將這個要求遞送至內容主機 (8),並會適時將傳回的 X 檔儲存在它的快取 (5) 中(如需關於這部分程序的詳細說明,請參閱轉遞 Caching Proxy)。

在這個配置中,只要主要「分派器」能夠運作,備份「分派器」(3) 就不會執行負載平衡。 主要和備份「分派器」會定期交換稱為「活動訊號」的訊息,以追蹤彼此的狀態。 如果備份「分派器」偵測到主要「分派器」失敗,它會截取導向主要「分派器」之主機名稱和 IP 位址的要求,以自動接管負載平衡的責任。 另外,也有可能配置兩個「分派器」來實現相互高可用性。 在此情況下,每個分派器都會主動針對個別的 Caching Proxy 叢集來執行負載平衡,同步扮演其夥伴的備份角色。 如需進一步的討論,請參閱 WebSphere Application Server Load Balancer 管理手冊

一般而言,「分派器」不會耗用許多處理或記憶體資源,在分派器機器上,可以執行其他應用程式。 如果將設備成本減少很重要,您甚至可以在同一部機器上執行備份「分派器」和 Caching Proxy。 圖 9 描述這類配置,其中備份「分派器」和 Caching Proxy 是在同一部機器 (3) 上執行。

圖 9. 將備份分派器放在 Caching Proxy 機器上。
此圖描述進行多部 Proxy 之負載平衡的主要和備份分派器