達到高可用性和延展性 - ARR 和硬體Load Balancer
作者:Won Yoo
達到高可用性和延展性:
適用于 IIS 7.0 和更新版本和硬體Load Balancer的 Microsoft 應用程式要求路由 (ARR) 。
Microsoft Corporation | F5 |
---|---|
作者:Won Yoo | 作者:Ryan Korock |
發行日期:2008 年 11 月 13 日 |
摘要
本檔提供應用程式要求路由 (ARR) 如何與硬體負載平衡器搭配使用,以達到高可用性和延展性的規範指引。 本檔使用 F5 BIG-IP 負載平衡器來說明 ARR 與硬體負載平衡器之間的運作關聯性。
概觀
Microsoft Application Request Routing (ARR) for IIS 7.0 和更新版本是 Proxy 型路由模組,可根據 HTTP 標頭、伺服器變數和負載平衡演算法,將 HTTP 要求轉送至內容伺服器。 下圖說明典型的 ARR 部署:
雖然 ARR 為內容伺服器提供高可用性和延展性,但整體部署並非高度可用或可調整,因為:
- ARR 是單一失敗點。
- 內容伺服器的延展性受限於一部 ARR 伺服器的最大容量。
為了克服這些挑戰,系統管理員可以考慮搭配硬體負載平衡器使用多個 ARR 伺服器,例如 F5 BIG-IP。 ARR 可以部署在主動/被動模式中,只達到高可用性或主動/主動模式,以達到高可用性和延展性。 本白皮書說明如何一起部署 ARR 和 F5 BIG-IP,以啟用核心 ARR 案例,同時達到整體高可用性和延展性。
使用應用程式要求路由和 F5 BIG-IP
ARR 建置為 IIS 之上的模組,其設計目的是在第 7 層 (應用程式) 做出路由決策。 更精確地說,ARR 依賴另一個 IIS 模組 URL 重寫,以檢查傳入的 HTTP 要求標頭和伺服器變數,以做出路由決策。 根據此設計,系統管理員可以根據應用層級資訊撰寫智慧型路由規則,例如:
- 主機名稱 (HTTP_HOST) :根據主機名稱將流量路由傳送至不同的內容伺服器。
- 要求的資源 (URL) :根據副檔名,判斷所要求的資源是針對靜態內容還是動態內容,並據以路由傳送要求。
- 用戶端資訊 (HTTP_USER_AGENT) :根據瀏覽器類型和版本,將要求路由傳送至適當的內容伺服器。
- 自訂標頭 (依應用程式設定為 Cookie) :根據應用程式所設定的 Cookie 資訊路由流量,例如使用者喜好設定或使用者識別碼。
上述只是其中一些範例。 如需 HTTP 標頭和伺服器變數的完整清單,請參閱 附錄 A。
F5 Big-IP 第 3 層和第 4 層功能可補充 ARR 的強度,以根據第 7 層進行路由決策,例如 HTTP 標頭和伺服器變數。 同時,ARR 不會為本身提供容錯部署功能,而且必須依賴其他互補技術和解決方案來達到 ARR 層的高可用性,如下所示:
案例 1:HTTP 型路由和負載平衡
HTTP 型路由和負載平衡案例可啟用包含下列的 3 層部署架構:
- 第 1 層 (Web) :提供雙重用途,以處理靜態內容和路由和負載平衡第 2 層伺服器的其餘動態要求。
- 第 2 層 (應用程式) :處理依賴商務邏輯的動態內容。
- 第 3 層 (資料) :儲存資料。
下圖說明 3 層式部署:
雖然上述範例顯示路由規則,可區分靜態內容與動態內容,但另一個常見案例是區分呈現要求與 Web 服務要求。
選項 1:主動/被動
在主動/被動模式中,通常會有兩部 ARR 伺服器,其中一部伺服器會處理要求,而另一部伺服器則代表容錯移轉伺服器。 如上所述,雖然此設定會藉由移除單一失敗點來達到高可用性,但它不是向外延展解決方案,因為內容伺服器的匯總容量受限於一部 ARR 伺服器的最大容量。
在此設定中,由於兩部 ARR 伺服器設定的方式相同,因此會使用共用組態。 已設定 F5 BIG-IP,使其將所有要求路由傳送至主動 ARR 伺服器,並在必要時只將要求路由傳送至被動 ARR 伺服器。
除了 ARR 中的主機名稱親和性功能之外,兩部 ARR 伺服器之間沒有必須共用的執行時間狀態資訊。 因此,在此案例中,ARR 伺服器或 F5 BIG-IP 上不需要任何特殊設定。 即使您在 ARR 中使用伺服器親和性功能,當 F5 BIG-IP 將要求路由傳送至先前被動但現在是主動伺服器時,會透過要求標頭中的 Cookie,將同質化狀態資訊提供給被動伺服器。
ARR 第 1 版完全支援此案例。
ARR 設定
步驟 1:在兩部 ARR 伺服器上啟用共用設定。
- 請遵循 本 檔中的步驟,在 IIS 中設定共用組態。
步驟 2:使用 ARR 設定 3 層部署架構。
請遵循 本 檔中的步驟,在 3 層部署架構中設定 ARR。
概括而言,上述檔說明:
- 如何在 ARR 伺服器上提供靜態內容。
- 如何撰寫靜態內容的 URL 重寫規則,以便直接從 ARR 伺服器提供服務。
- 如何撰寫動態內容的 URL 重寫規則,以便將它們轉送到應用程式伺服器。
F5 BIG-IP 組態
在此案例中,您將建立一個虛擬伺服器,將負載平衡至兩部 (或更多) ARR 伺服器的集區。 您選取的負載平衡方法應該將所有流量傳送至主要 ARR 伺服器,直到無法使用為止。 此時,BIG-IP LTM 應該將所有流量傳送至次要 ARR 伺服器。
步驟 1:設定 ARR 伺服器的集區。
- 在 [本機流量] 區段中,按一下 [集區]。 然後按一下 [建立] 按鈕以建立集區。
- 任何唯一名稱都適用于集區;此範例使用 ARR_Pool。
- 針對健全狀況監視器,您可以使用自訂 HTTP 監視器或預設 HTTP 監視器。
- 您可以將 [負載平衡方法] 設定為 [迴圈配置資源]。 在此案例中,因為只有主動和被動 ARR 伺服器,所以不會使用負載平衡。
- 請務必啟用優先順序群組啟用。 這會設定 BIG-IP,以將流量傳送至具有最高優先順序值的伺服器 () 。 當這些伺服器 () 無法使用時,BIG-IP 會將流量傳送至具有下一個最高優先順序值的 ARR 伺服器。
- 在此案例中,10.0.0.1 的 ARR 伺服器優先順序值為 1,而 10.0.0.2 的優先順序值為 2。 所有流量都會傳送至 10.0.0.2,直到關閉為止,然後流量會傳送至 10.0.0.1。
步驟 2:設定 ARR 伺服器的集區。
- 在 [本機流量] 區段中,按一下 [虛擬伺服器]。 然後按一下 [建立] 按鈕以建立虛擬伺服器。
- 任何唯一名稱都適用于虛擬伺服器;此範例使用 ARR_VS。
- 針對目的地,您可以使用使用者指向其瀏覽器的 IP 位址。 在此特定範例中,我們使用 65.197.145.23。 針對服務埠,我們使用 '80'。
- 針對 [虛擬伺服器類型] 區段,您有數個選項。 由於相依于 ARR 來路由,因此您可以選取效能 HTTP,這是針對最佳效能所設計。
- 針對 [預設集區],選取您在步驟 1 中建立的集區。
- 此時,您應該能夠連線到此虛擬伺服器,這會傳送至適當的 ARR 伺服器。
選項 2:使用中/主動
在主動/主動模式中,您可以有兩部以上的 ARR 伺服器。 此組態可達到高可用性和延展性,與只達到高可用性的 Active/Pass 模式不同。 如先前所述,由於多個 ARR 伺服器設定的方式相同,因此會使用共用設定。 F5 BIG-IP 已設定為將所有可用且狀況良好的 ARR 伺服器負載平衡傳入要求,進而將要求轉送至內容伺服器。 不論 F5 BIG-IP 上是否使用伺服器親和性功能,ARR 伺服器上不需要任何特殊設定。 針對一個,ARR 伺服器會使用一個共用組態,讓它們以相同方式進行設定。 其次,由於 ARR 會使用用戶端 Cookie 來儲存伺服器親和性資訊以供自己使用,因此每個要求都可使用這項資訊,因此可在 ARR 伺服器上使用。 ARR 第 1 版完全支援此案例。
ARR 設定
主動/主動的 ARR 組態與主動/被動的組態相同。 主要差異在於 F5 的設定方式。
步驟 1:在兩部 ARR 伺服器上啟用共用設定。
- 請遵循 本 檔中的步驟,在 IIS 中設定共用組態。
步驟 2:使用 ARR 設定 3 層部署架構。
請遵循 本 檔中的步驟,在 3 層部署架構中設定 ARR。
在高階上,上述檔說明:
- 如何在 ARR 伺服器上提供靜態內容。
- 如何撰寫靜態內容的 URL 重寫規則,以便直接從 ARR 伺服器提供服務。
- 如何撰寫動態內容的 URL 重寫規則,以便將它們轉送到應用程式伺服器。
F5 BIG-IP 組態
在此案例中,所有可用的 ARR 伺服器都會被視為作用中,以及負載平衡流量的候選項目。 使用 BIG-IP LTM 來判斷 ARR 前端的健康情況和效能,並將流量導向最佳效能。
步驟 1:設定 ARR 伺服器的集區。
- 在 [本機流量] 區段中,按一下 [集區]。 然後按一下 [建立] 按鈕以建立集區。
- 任何唯一的名稱都適用于集區;範例會使用 ARR_Pool。 - 針對健全狀況監視器,您可以使用自訂 HTTP 監視器或預設 HTTP 監視器。 - 由於您有多個 ARR 伺服器要散發流量,因此您想要選取最符合您需求的負載平衡方法。 假設所有 ARR 伺服器都有類似的硬體特性,動態負載平衡方法,例如最快、觀察到或預測性,可提供效能型散發。
步驟 2:設定虛擬伺服器。
- 在 [本機流量] 區段中,按一下 [虛擬伺服器]。 然後按一下 [建立] 按鈕以建立虛擬伺服器。
- 任何唯一的名稱都適用于虛擬伺服器;此範例使用 ARR_VS。 - 針對目的地,您可以使用使用者指向其瀏覽器的 IP 位址。 在此特定範例中,我們使用 65.197.145.23。 針對服務埠,我們使用 '80'。 - 針對 [虛擬伺服器類型] 區段,您有數個選項。 由於您依賴 ARR 路由,因此您可以選取 [效能 HTTP],這是專為最佳效能而設計。 - 針對 [預設集區],選取您在步驟 1 中建立的集區。
案例 2:使用主機名稱親和性共用裝載
此案例會利用 ARR 中的主機名稱親和性功能來啟用共用主機部署,
- 減少與傳統共用主機部署相關的手動管理和維護。
- 最大化現有的伺服器資源,同時確保所有伺服器資源都平均使用。
- 輕鬆地相應放大環境。
- 建立商機以銷售額外的容量。
如需共用主機和 ARR 的詳細資訊,請參閱 本 檔。
選項 1:主動/被動
如先前所述,在主動/被動模式中,通常會有兩部 ARR 伺服器,其中一部伺服器會處理要求,而另一部伺服器則代表容錯移轉伺服器。 雖然此設定可藉由移除單一失敗點來達到高可用性,但它不是相應放大解決方案,因為內容伺服器的匯總容量受限於一部 ARR 伺服器的最大容量。
在此設定中,由於兩部 ARR 伺服器是以相同方式設定,因此會使用共用組態。 F5 BIG-IP 已設定為將所有要求路由傳送至主動 ARR 伺服器,並在必要時只將要求路由傳送至被動 ARR 伺服器。
ARR 中的主機名稱親和性功能會根據主機名稱,將要求同質化至特定伺服器 (或) RC 中的伺服器群組。 主機名稱與內容伺服器之間的同質對應執行時間狀態資訊會儲存在 ARR 伺服器實例內的記憶體中。 在 ARR 第 1 版中,ARR 會利用適用于 IIS 的 Microsoft 外部快取,在多個 ARR 伺服器之間共用和維護此執行時間狀態。 如需此案例的詳細資訊,請參閱 本 檔。
ARR 第 1 版完全支援此案例。
ARR 設定
步驟 1:在兩部 ARR 伺服器上啟用共用設定。
- 請遵循 本 檔中的步驟,在 IIS 中設定共用組態。
步驟 2:使用 ARR 設定 3 層部署架構。
請遵循 本 檔中的步驟,在 3 層部署架構中設定 ARR。
在高階上,上述檔說明:
- 如何在 ARR 伺服器上提供靜態內容。
- 如何撰寫靜態內容的 URL 重寫規則,以便直接從 ARR 伺服器提供服務。
- 如何撰寫動態內容的 URL 重寫規則,以便將它們轉送到應用程式伺服器。
步驟 3:啟用和設定外部快取。
- 請遵循 本 檔中的步驟,啟用及設定要與 ARR 搭配使用的外部快取。
F5 BIG-IP 組態
在此案例中,您將建立將負載平衡的虛擬伺服器負載平衡至兩部 (或更多) ARR 伺服器的集區。 您選取的負載平衡方法應該將所有流量傳送到主要 ARR 伺服器,直到無法使用為止。 此時,BIG-IP LTM 應該將所有流量傳送至次要 ARR 伺服器。
步驟 1:設定 ARR 伺服器的集區。
- 在 [本機流量] 區段中,按一下 [集區]。 然後按一下 [建立] 按鈕以建立集區。
- 任何唯一的名稱都適用于集區;此範例使用 ARR_Pool。 - 針對健全狀況監視器,您可以使用自訂 HTTP 監視器或預設 HTTP 監視器。 - 您可以將負載平衡方法設定為迴圈配置資源。 在此案例中,由於只有主動和被動 ARR 伺服器,因此不會使用負載平衡。 - 請務必啟用優先順序群組啟用。 這會設定 BIG-IP,以將流量傳送至具有最高優先順序值的伺服器 (s) 。 當這些伺服器 () 無法使用時,BIG-IP 會將流量傳送至具有下一個最高優先順序值的 ARR 伺服器。 - 在此案例中,10.0.0.1 的 ARR 伺服器優先順序值為 1,而 10.0.0.2 的優先順序值為 2。 所有流量都會傳送至 10.0.0.2,直到關閉為止,然後流量會傳送至 10.0.0.1。
步驟 2:設定虛擬伺服器。
- 在 [本機流量] 區段中,按一下 [虛擬伺服器]。 然後按一下 [建立] 按鈕以建立虛擬伺服器。
- 任何唯一的名稱都適用于虛擬伺服器;此範例使用 ARR_VS。 - 針對目的地,您可以使用使用者指向其瀏覽器的 IP 位址。 在此案例中,我們使用 。 針對服務埠,我們使用 '80'。 - 針對 [虛擬伺服器類型] 區段,您有數個選項。 由於您依賴 ARR 路由,因此您可以選取 [效能 HTTP],這是專為最佳效能而設計。 - 針對 [預設集區],選取您在步驟 1 中建立的集區。
- 此時,您應該能夠連線到此虛擬伺服器,這會傳送至適當的 ARR 伺服器。
選項 2:ARR 中的主動/主動
在主動/主動模式中,您可以有兩部以上的 ARR 伺服器。 此設定可同時達到高可用性和延展性,與 Active/Pass 模式不同,這只會達到高可用性。 由於多個 ARR 伺服器是以相同方式設定,因此會使用共用組態。 F5 BIG-IP 已設定為將傳入要求負載平衡至所有可用且狀況良好的 ARR 伺服器,進而將要求轉送至內容伺服器。
如先前所述,主機名稱與內容伺服器之間的同質對應執行時間狀態資訊會儲存在 ARR 伺服器實例內的記憶體中。 為了在多個 ARR 伺服器之間共用此資訊,會使用適用于 IIS 的 Microsoft 外部快取。 如需外部快取的詳細資訊,請參閱 本 檔。
ARR 設定
Active/Active 的 ARR 組態與主動/被動的設定相同。 主要差異在於 F5 的設定方式。
步驟 1:在兩部 ARR 伺服器上啟用共用設定。
- 請遵循 本 檔中的步驟,在 IIS 中設定共用組態。
步驟 2:使用 ARR 設定 3 層部署架構。
請遵循 本 檔中的步驟,在 3 層部署架構中設定 ARR。
概括而言,上述檔說明:
- 如何在 ARR 伺服器上提供靜態內容。
- 如何撰寫靜態內容的 URL 重寫規則,以便直接從 ARR 伺服器提供服務。
- 如何撰寫動態內容的 URL 重寫規則,以便將它們轉送到應用程式伺服器。
步驟 3:啟用和設定外部快取。
- 請遵循 本 檔中的步驟,啟用並設定要與 ARR 搭配使用的外部快取。
F5 BIG-IP 組態
在此案例中,所有可用的 ARR 伺服器都會被視為作用中和負載平衡流量的候選項目。 使用 BIG-IP LTM 來判斷 ARR 前端的健康情況和效能,並將流量導向最佳效能。
步驟 1:設定 ARR 伺服器的集區。
- 在 [本機流量] 區段中,按一下 [集區]。 然後按一下 [建立] 按鈕以建立集區。
- 任何唯一名稱都適用于集區;此範例使用 ARR_Pool。 - 針對健全狀況監視器,您可以使用自訂 HTTP 監視器或預設 HTTP 監視器。 - 由於您有多個要散發流量的 ARR 伺服器,因此您想要選取最符合您需求的負載平衡方法。 假設所有 ARR 伺服器都有類似的硬體特性,動態負載平衡方法,例如最快、觀察到或預測性,將為您提供以效能為基礎的散發。
步驟 2:設定虛擬伺服器。
- 在 [本機流量] 區段中,按一下 [虛擬伺服器]。 然後按一下 [建立] 按鈕以建立虛擬伺服器。
- 任何唯一名稱都適用于虛擬伺服器;此範例使用 ARR_VS。 - 針對目的地,您可以使用使用者指向其瀏覽器的 IP 位址。 在此案例中,我們使用 。 針對服務埠,我們使用 '80'。 - 針對 [虛擬伺服器類型] 區段,您有數個選項。 由於相依于 ARR 來路由,因此您可以選取效能 HTTP,這是針對最佳效能所設計。 - 針對 [預設集區],選取您在步驟 1 中建立的集區。
總結
在此白皮書中,已檢閱兩個主要 ARR 案例,藉由部署多個 ARR 伺服器並使用 F5 BIG-IP 來達到高可用性和延展性。
附錄
附錄 A:用於撰寫路由決策規則的所有可用 HTTP 標頭和伺服器變數。
ALL_HTTP | ALL_RAW | APPL_MD_PATH |
---|---|---|
APPL_PHYSICAL_PATH | CERT_COOKIE | CERT_FLAGS |
CERT_ISSUER | CERT_KEYSIZE | CERT_SECRETKEYSIZE |
CERT_SERIALNUMBER | CERT_SERVER_ISSUER | CERT_SERVER_SUBJECT |
CERT_SUBJECT | CONTENT_LENGTH | CONTENT_TYPE |
DOCUMENT_ROOT | GATEWAY_INTERFACE | HTTP_ACCEPT |
HTTP_ACCEPT_ENCODING | HTTP_ACCEPT_LANGUAGE | HTTP_CONNECTION |
HTTP_CONTENT_LENGTH | HTTP_HOST | HTTP_IF_MODIFIED_SINCE |
HTTP_IF_NONE_MATCH | HTTP_REFERER | HTTP_UA_CPU |
HTTP_USER_AGENT | HTTPS | HTTPS_KEYSIZE |
HTTPS_SECRETKEYSIZE | HTTPS_SERVER_ISSUER | HTTPS_SERVER_SUBJECT |
INSTANCE_ID | INSTANCE_META_PATH | LOCAL_ADDR |
PATH_INFO | PATH_TRANSLATED | QUERY_STRING |
REMOTE_ADDR | REMOTE_HOST | REMOTE_PORT |
REMOTE_USER | REQUEST_FILENAME | REQUEST_METHOD |
REQUEST_URI | SCRIPT_FILENAME | SCRIPT_NAME |
SERVER_ADDR | SERVER_NAME | SERVER_PORT |
SERVER_PORT_SECURE | SERVER_PROTOCOL | SERVER_SOFTWARE |
URL |