如何在主動/被動(又稱故障轉移)模式下設定 ARR?

如何在主動/被動(又稱故障轉移)模式下設定 ARR?

問題

我正在嘗試配置幾個網路場(針對不同的網站)NLB+ARR架構。假設我有 6 個虛擬機器:

  1. 2 個虛擬機器的 ARR+NLB 叢集。它接收流量並將其轉發到內容伺服器。具有 HTTP 主機標頭條件的 URL 重寫規則用於將請求路由到正確的內容伺服器。
  2. 網站 1 內容伺服器:2 台虛擬機器。託管http://www.mysite1.com/
  3. 網站 2 內容伺服器:2 台虛擬機器。託管http://www.mysite2.com/

一切工作正常,我已經測試過我在兩層上都具有高可用性。

現在,出於某種原因,站點 2 必須在主動/被動模式下工作,以便只有 1 個虛擬機器接收流量,而另一個虛擬機器用於故障轉移。在某種程度上,我想要類似 NLB 的單主機模式,但適用於 ARR。

如何才能實現這個目標?

解決方法

我嘗試了幾種間接方法來實現所需的行為。

  1. 負載平衡演算法。嘗試將循環權重設為 1/0。問題是你不能設定 0。
  2. 主機名稱與伺服器的關聯性。在主機名稱關聯性的進階設定中,我只能設定 1 台伺服器指派給網站 2。因此,ARR1 有時會將流量關聯到一個節點,而 ARR2 會關聯到另一個節點,這不是主動/被動的。
  3. 主機名稱關聯性 + NLB 單主機。作為先前方法的修改,我還可以將 NLB 切換到單主機模式來解決路由表同步問題。本例中的問題是我也關閉了站點 1 的 ARR 負載平衡。
  4. 主機名稱關聯性 + NLB 單一主機 + 2 個 IP 位址。如果我將第二個 IP 位址新增至先前的解決方案中,建立 2 個以不同模式工作的 NLB 集群,一切都會正常運作。問題是我不想為第二個公共IP付費。

沒有一個解決方案是完美的。

理想解決方案的形象

我真的很想知道一種將 ARR 置於單主機模式的方法,就像對 NLB 所做的那樣。並讓它同步節點之間的路由。

有人知道該怎麼做嗎?或知道替代方法?

答案1

我找到了一種似乎有效的方法,儘管並不完全有效。是這樣描述的這裡。這個想法是使用“伺服器變數雜湊”負載平衡演算法和“HTTP_HOST”作為變數。這樣,ARR 的所有實例都會將給定主機對應到相同內容伺服器。我已經測試過,如果映射的伺服器無法工作,它們會回退到另一台可用的伺服器。

然而,該解決方案的問題是您無法控制主機映射到哪個內容伺服器,它是由雜湊函數決定的。然而,在某種程度上它是正確的 - 如果您擔心讓任何節點成為活動節點,那麼您怎麼能期望可靠的故障轉移?您必須同時確定所有內容伺服器。

另一個問題是您不能為每個網站使用多個主機名,因為您可能會將它們對應到不同的伺服器。

相關內容