共用方式為


達到高可用性和延展性 - ARR 和 NLB

作者:Won Yoo

達到高可用性和延展性:
MICROSOFT 應用程式要求路由 (IIS 7.0 和更新版本和網路負載平衡 (NLB) 的 ARR) 。

Microsoft Corporation
作者:Bisht、Won Yoo
發行日期:2008 年 11 月 13 日

摘要

本檔提供應用程式要求路由 (ARR) 如何與網路負載平衡 (NLB) 搭配使用,以達到高可用性和延展性的規範指引。

概觀

Microsoft Application Request Routing (ARR) for IIS 7.0 和更新版本是 Proxy 型路由模組,可根據 HTTP 標頭、伺服器變數和負載平衡演算法,將 HTTP 要求轉送至內容伺服器。 下圖說明典型的 ARR 部署:

此圖顯示 R R 轉送 H T T P 要求。

雖然 ARR 為內容伺服器提供高可用性和延展性,但整體部署並非高度可用或可調整,因為:

  • ARR 是單一失敗點。
  • 內容伺服器的延展性受限於一部 ARR 伺服器的最大容量。

為了克服這些挑戰,系統管理員可能會考慮使用多個 ARR 伺服器搭配網路負載平衡 (NLB) 。 ARR 可以部署在主動/被動模式中,只達到高可用性或主動/主動模式,以達到高可用性和延展性。 本白皮書說明如何一起部署 ARR 和 NLB,以啟用核心 ARR 案例,同時達到整體高可用性和延展性。 NLB 可在 Windows Server 2008 的所有 SKU 上使用。

使用應用程式要求路由和網路負載平衡

ARR 建置為 IIS 之上的模組,其設計目的是在第 7 層 (應用程式) 做出路由決策。 更精確地說,ARR 依賴另一個 IIS 模組 URL 重寫,以檢查傳入的 HTTP 要求標頭和伺服器變數,以做出路由決策。 根據此設計,系統管理員可以根據應用層級資訊撰寫智慧型路由規則,例如:

  • 主機名稱 (HTTP_HOST) :根據主機名稱將流量路由傳送至不同的內容伺服器。
  • 要求的資源 (URL) :根據副檔名,判斷所要求的資源是針對靜態內容還是動態內容,並據以路由傳送要求。
  • 用戶端資訊 (HTTP_USER_AGENT) :根據瀏覽器類型和版本,將要求路由傳送至適當的內容伺服器。
  • 自訂標頭 (依應用程式設定為 Cookie) :根據應用程式所設定的 Cookie 資訊路由流量,例如使用者喜好設定或使用者識別碼。

上述只是其中一些範例。 如需 HTTP 標頭和伺服器變數的完整清單,請參閱 附錄 A

由於 NLB 會在第 3 層做出路由決策,因此無法使用 HTTP 標頭和伺服器變數等應用程式特定資訊來提供應用層級型路由。 同時,ARR 不會自行提供容錯部署功能,而且必須依賴其他互補技術和解決方案來達到 ARR 層的高可用性。 NLB 會在網路堆疊的不同層級運作,並在部署 ARR 的相同伺服器上啟用:

顯示 R R 1 與 2 與內容伺服器之間連線的 Digram。

案例 1:HTTP 型路由和負載平衡

HTTP 型路由和負載平衡案例可啟用包含下列的 3 層部署架構:

  • 第 1 層 (Web) :提供雙重用途,以處理靜態內容和路由和負載平衡第 2 層伺服器的其餘動態要求。
  • 第 2 層 (應用程式) :處理依賴商務邏輯的動態內容。
  • 第 3 層 (資料) :儲存資料。

下圖說明 3 層式部署:

此圖顯示 R R 與每一層內容伺服器之間的內容流程。

雖然上述範例顯示路由規則,可區分靜態內容與動態內容,但另一個常見案例是區分呈現要求與 Web 服務要求。

選項 1:主動/被動

在主動/被動模式中,通常會有兩部 ARR 伺服器,其中一部伺服器會處理要求,而另一部伺服器則代表容錯移轉伺服器。 如上所述,雖然此設定會移除單一失敗點來達到高可用性,但它不是向外延展解決方案,因為內容伺服器的匯總容量受限於一部 ARR 伺服器的最大容量。

在此設定中,由於兩部 ARR 伺服器設定的方式相同,因此會使用共用組態。 首先,在兩部伺服器上安裝 ARR,然後建立 NLB 叢集。 NLB 叢集設定為只接受其中一個叢集節點上的流量。 使用單一主機篩選模式來設定叢集連接埠規則,即可達成此目的。 接受流量的節點取決於 NLB 叢集節點的主機優先順序設定。 如需詳細資訊,請參閱 NLB 組態

除了 ARR 中的主機名稱親和性功能之外,兩部 ARR 伺服器之間沒有必須共用的執行時間狀態資訊。 因此,在此案例中,ARR 或 NLB 上不需要任何特殊設定。 即使您在 ARR 中使用伺服器親和性功能,同質性狀態資訊也會透過要求標頭中的 Cookie 提供給被動伺服器。

ARR 第 1 版完全支援此案例。

ARR 設定

步驟 1:在兩部 ARR 伺服器上啟用共用設定。

  • 請遵循 檔中的步驟,在 IIS 中設定共用組態。

步驟 2:使用 ARR 設定 3 層部署架構。

  • 請遵循 檔中的步驟,在 3 層部署架構中設定 ARR。

  • 概括而言,上述檔說明:

    • 如何在 ARR 伺服器上提供靜態內容。
    • 如何撰寫靜態內容的 URL 重寫規則,以便直接從 ARR 伺服器提供服務。
    • 如何撰寫動態內容的 URL 重寫規則,以便將它們轉送到應用程式伺服器。

NLB 設定

NLB 組態分成下列步驟:

  1. 在所有 ARR 伺服器上安裝 NLB 功能。
  2. 建立 ARR 的 NLB 叢集。
  3. 設定 NLB 以進行主動/被動部署。

在所有 ARR 伺服器上安裝 NLB 功能

  1. 開啟 [伺服器管理員]
    伺服器管理員視窗的螢幕擷取畫面,其中顯示主窗格中的詳細資料。
  2. 展開 [功能]。
  3. 按一下 [新增功能]
  4. 在 [新增功能精靈] 中,選取 [ 網路負載平衡]。
    [新增功能精靈] 視窗的螢幕擷取畫面,其中顯示主窗格中的功能。
  5. 按一下 [安裝 ] 以確認 NLB 功能的安裝。
    [新增功能精靈] 視窗的螢幕擷取畫面,其中顯示主窗格中的 [確認安裝選取專案]。
  6. 確認已成功安裝 NLB 功能。
    [新增功能精靈] 視窗的螢幕擷取畫面,其中顯示主窗格中的 [安裝結果] 頁面。
  7. 在所有 ARR 伺服器上重複上述步驟。

建立 ARR 的 NLB 叢集

  1. 確認 NLB 已安裝在 ARR 伺服器的所有實例上。
  2. 移至 [啟動 > 所有程式 > 管理工具],然後開啟 [網路負載平衡管理員]。
    [網路負載平衡管理員] 視窗的螢幕擷取畫面,其中已醒目提示 [網路負載平衡叢集]。
  3. 以滑鼠右鍵按一下 [網路負載平衡叢集],然後選取 [ 新增叢集]。
    [新增叢集] 對話方塊的螢幕擷取畫面。
  4. 在 [新增叢集] 對話方塊的 [主機] 文字方塊中,輸入其中一個 ARR 伺服器的伺服器位址。 如果有多個介面,請輸入您要建立 NLB 叢集的伺服器位址。
    [新增叢集] 對話方塊的螢幕擷取畫面,其中顯示主機輸入方塊中的 I P 位址。
  5. 在 NLB) 中的主動/被動模式 (單一主機模式中,優先順序會決定容錯移轉發生的順序。 根據預設,優先順序為 1 的伺服器是作用中的節點。
    [新增叢集主機參數] 對話方塊的螢幕擷取畫面,其中包含預設設定。
  6. 需要叢集 IP,這是虛擬 IP 位址。 按一下 [新增 ]。這是用戶端將與其通訊的 IP 位址。
    [新增叢集叢集 I P 位址] 對話方塊的螢幕擷取畫面。
  7. 輸入虛擬 IP 位址,然後按一下 [ 確定]。
    [新增 I P 位址] 對話方塊的螢幕擷取畫面
  8. 按一下 [下一步] 。
    [叢集 I P 位址] 對話方塊的螢幕擷取畫面,其中顯示 I P 位址和子網路遮罩。
  9. 接受預設值。 如需詳細資訊,請參閱 附錄
    [叢集參數] 對話方塊的螢幕擷取畫面,其中顯示預設參數。
  10. 按一下 [完成 ] 以完成 NLB 叢集的建立。
    [連接埠規則] 對話方塊的螢幕擷取畫面
  11. 現在已建立 NLB 叢集,您可以將其他成員新增至叢集。 遵循所有其他成員伺服器上的其餘步驟。 在 [網路負載平衡管理員] 中,以滑鼠右鍵按一下新選取的叢集,然後選取 [ 新增主機至叢集]。
    [將主機新增至叢集] 對話方塊的螢幕擷取畫面。
  12. 輸入要加入之成員的伺服器位址。 如果有多個介面,請選取 NLB 叢集應該使用的介面。
    [連線] 對話方塊的螢幕擷取畫面。主機輸入方塊中有 I P 位址。
  13. 請注意,優先順序指派在叢集中的成員伺服器之間互斥且是唯一的。 在 NLB) 中的主動/被動模式 (單一主機模式中,優先順序會決定容錯移轉的順序。
    [主機參數] 對話方塊的螢幕擷取畫面。優先順序設定為 2。
  14. 按一下 [完成 ] 將成員伺服器新增至叢集。
    [連接埠規則] 對話方塊的螢幕擷取畫面。已選取 [完成] 按鈕。
  15. 網路Load Balancer管理員看起來應該如下所示:
    [網路負載平衡管理員] 視窗的螢幕擷取畫面。

設定 NLB 以進行主動/被動部署

  1. 若要設定主動/被動部署的 NLB,請在 [網路負載平衡管理員] 中,以滑鼠右鍵按一下叢集,然後選取 [ 叢集屬性]。 按一下 [ 連接埠規則] 索引標籤。按一下 [編輯]。
    [屬性] 對話方塊的螢幕擷取畫面,其中已選取 [連接埠規則] 索引標籤。
  2. 選取 [單一主機],然後按一下 [ 確定]。
    [新增/編輯連接埠規則] 對話方塊的螢幕擷取畫面。在 [篩選模式] 區段中選取了單一主機。

NLB 已順利設定為使用 ARR 在主動/被動模式中運作。

選項 2:使用中/主動

在主動/主動模式中,您可以有兩部以上的 ARR 伺服器。 此組態可達到高可用性和延展性,與只達到高可用性的 Active/Pass 模式不同。

如先前所述,由於多個 ARR 伺服器設定的方式相同,因此會使用共用設定。 主要差異在於 NLB 的設定方式。 為了同時利用所有 ARR 伺服器,NLB 叢集連接埠規則會以多個主機模式設定。

不論是否在 NLB 上啟用親和性功能,ARR 伺服器上都不需要任何特殊設定。 針對一個,ARR 伺服器會使用一個共用組態,讓它們以相同方式進行設定。 其次,由於 ARR 會使用用戶端 Cookie 來儲存伺服器親和性資訊以供自己使用,因此這項資訊可在每個要求中使用,因此可在 ARR 伺服器上使用。 NLB 的建議是將親和性設定為 none,因為它會產生更平均的負載分配。

ARR 第 1 版完全支援此案例。

ARR 設定

Active/Active 的 ARR 組態與主動/被動的設定相同。 主要差異在於 NLB 的設定方式。

步驟 1:在兩部 ARR 伺服器上啟用共用設定。

  • 請遵循 檔中的步驟,在 IIS 中設定共用組態。

步驟 2:使用 ARR 設定 3 層部署架構。

  • 請遵循 檔中的步驟,在 3 層部署架構中設定 ARR。

  • 概括而言,上述檔說明:

    • 如何在 ARR 伺服器上提供靜態內容。
    • 如何撰寫靜態內容的 URL 重寫規則,以便直接從 ARR 伺服器提供服務。
    • 如何撰寫動態內容的 URL 重寫規則,以便將它們轉送到應用程式伺服器。

NLB 設定

NLB 組態分成下列步驟:

  1. 在所有 ARR 伺服器上安裝 NLB 功能。
  2. 建立 ARR 的 NLB 叢集。
  3. 設定 NLB 以進行主動/主動部署。

在所有 ARR 伺服器上安裝 NLB 功能:記載于 [這裡] (達到高可用性和延展性-arr-and-nlb.md#install NLB) 。

建立 ARR 的 NLB 叢集:記載于 [這裡] (達到高可用性和延展性-arr-and-nlb.md#create nlb) 。

設定 NLB 以進行主動/主動部署。

  1. 若要為作用中/主動部署設定 NLB,請在[網路負載平衡管理員] 中,以滑鼠右鍵按一下叢集,然後選取 [叢集屬性]。 按一下 [ 連接埠規則] 索引標籤。按一下 [編輯]。
    [屬性] 對話方塊的螢幕擷取畫面。
  2. 選取 [多部主機]。 針對 [同質] 設定,選取 [ ]。 如上所述,建議不要在 NLB 中使用親和性,因為它會導致較佳的負載分佈。
    [新增/編輯連接埠規則] 對話方塊的螢幕擷取畫面。已選取 [篩選模式] 區段中的多個主機。

NLB 已順利設定為使用 ARR 在作用中/主動模式中運作。

案例 2:使用主機名稱親和性共用裝載

此案例會利用 ARR 中的主機名稱親和性功能來啟用共用裝載部署,以:

  • 減少傳統共用主機部署所涉及的手動管理和維護。
  • 最大化現有的伺服器資源,同時確保所有伺服器資源都平均使用。
  • 輕鬆地相應放大環境。
  • 建立銷售額外容量的商機。

如需共用主機和 ARR 的詳細資訊,請參閱 檔。

下圖說明使用 ARR 的共用裝載環境:

顯示要求和回應流程的圖表。

選項 1:主動/被動

如先前所述,在主動/被動模式中,通常會有兩部 ARR 伺服器,其中一部伺服器會處理要求,而另一部伺服器則代表容錯移轉伺服器。 雖然此設定藉由移除單一失敗點來達到高可用性,但它不是向外延展解決方案,因為內容伺服器的匯總容量受限於一部 ARR 伺服器的最大容量。

在此設定中,由於兩部 ARR 伺服器設定的方式相同,因此會使用共用組態。 NLB 叢集設定為只接受其中一個叢集節點上的流量。 使用單一主機篩選模式設定叢集規則即可達成此目的。 接受流量的節點取決於 NLB 叢集節點的主機優先順序設定。 如需詳細資訊,請參閱 NLB 組態

ARR 中的主機名稱親和性功能會根據主機名稱,將要求同質化至特定伺服器 (或 RC 中的一組伺服器) 。 主機名稱與內容伺服器之間的同質對應執行時間狀態資訊會儲存在 ARR 伺服器實例內的記憶體中。 在 ARR 第 1 版中,ARR 會利用 Microsoft 外部快取第 1 版讓 IIS 在多個 ARR 伺服器之間共用和維護此執行時間狀態。 如需此案例的詳細資訊,請參閱 檔。

ARR 第 1 版完全支援此案例。

ARR 設定

步驟 1:針對具有主機名稱親和性的共用裝載設定 ARR。

  • 請遵循 檔中的步驟,在 ARR 中設定共用主機的主機名稱親和性功能。

步驟 2:啟用和設定外部快取。

  • 請遵循 檔中的步驟來啟用和設定外部快取。

NLB 設定

NLB 組態分成下列步驟:

  1. 安裝 NLB 功能。
  2. 建立 ARR 的 NLB 叢集。
  3. 設定 NLB 以進行主動/被動部署。

安裝 NLB 功能:記載于 [這裡] (達成-高可用性和延展性-arr-and-nlb.md#安裝 NLB 功能) 。

建立 ARR 的 NLB 叢集:記載 [這裡] (達到高可用性和延展性-arr-and-nlb.md#建立 ARR) 的 NLB 叢集。

設定 NLB 以進行主動/被動部署:記載 [這裡] (達到高可用性和延展性-arr-and-nlb.md#設定主動/被動) 的 NLB。

選項2:ARR 中的主動/主動

在主動/主動模式中,您可以有兩部以上的 ARR 伺服器。 此設定可同時達到高可用性和延展性,不同于主動/被動模式,這只會達到高可用性。 由於多個 ARR 伺服器是以相同方式設定,因此會使用共用組態。 為了同時利用所有 ARR 伺服器,NLB 會以多個主機模式進行設定。 如先前所述,主機名稱與內容伺服器之間的同質對應執行時間狀態資訊會儲存在 ARR 伺服器實例內的記憶體中。 為了在多個 ARR 伺服器之間共用此資訊,會使用適用于 IIS 的 Microsoft 外部快取。 如需外部快取的詳細資訊,請參閱本檔。

ARR 設定

主動/主動的 ARR 組態與主動/被動的組態相同。 主要差異在於 NLB 的設定方式。

步驟 1:針對具有主機名稱親和性的共用裝載設定 ARR。

  • 請遵循 檔中的步驟,在 ARR 中設定共用主機的主機名稱親和性功能。

步驟 2:啟用及設定外部快取。

  • 請遵循 檔中的步驟來啟用和設定外部快取。

NLB 設定

NLB 組態分成下列步驟:

  1. 安裝 NLB 功能。
  2. 建立 ARR 的 NLB 叢集。
  3. 設定 NLB 以進行主動/主動部署。

安裝 NLB 功能:記載于 [這裡] (達到高可用性和延展性-arr-and-nlb.md#安裝 NLB 功能) 。

建立 ARR 的 NLB 叢集:記載 [這裡] (達到高可用性和延展性-arr-and-nlb.md#建立 ARR) 的 NLB 叢集。

設定 NLB 以進行主動/主動部署:記載 [這裡] (達到高可用性和延展性-arr-and-nlb.md#設定適用于主動/主動) 的 NLB。 建議不要在此 ARR 案例中使用 NLB 中的親和性。

摘要

在此白皮書中,已檢閱兩個主要 ARR 案例,藉由部署多個 ARR 伺服器和使用 NLB 來達到高可用性和延展性。

附錄

附錄 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

附錄 B:其他 NLB 檔