
在接下來的幾個月中,我們希望在我們的環境中添加故障轉移和負載平衡。我們將有 2 台作為 Hyper V 主機的伺服器。我們希望在兩台主機上都有 IIS 應用程式伺服器和 SQL 資料庫伺服器。這樣,如果一個盒子故障,另一個盒子就會接替它的位置。現在我的困惑來自於我一直在進行的一些谷歌搜尋。據我所知,似乎有 SQL 叢集/點對點交易設置,以及 Hyper-V 叢集。我不確定在這種情況下什麼最有效。主機還將有隨機的其他伺服器,例如係統中心、我們的票證伺服器、Exchange 管理伺服器以及介於兩者之間的其他幾個伺服器。所以我不確定現在 Hyper-V 叢集是否是最糟糕的選擇。
謝謝。
答案1
透過 Hyper-V 群集,您可以擁有一個 Hyper-V 伺服器池(2 個以上),所有伺服器都連接到同一組網路存儲,以便 Hyper-V 群集中的所有伺服器都可以使用 LUN。您必須具有用於此設定的網路儲存。透過 Hyper-V 即時遷移,您可以將正在運行的虛擬機器從一台 Hyper-V 主機移至另一台。如果伺服器發生故障,這允許將工作負載從一台伺服器轉移到另一台伺服器。如果您的剩餘伺服器能夠處理額外虛擬機器的負載,這將為您提供實體冗餘。此設定不能保護您免受虛擬機器作業系統和應用程式本身損壞的影響。 (看http://technet.microsoft.com/en-us/library/dd446679(WS.10).aspx有關此設定的詳細資訊。
SQL 有自己的冗餘,可用於多種不同的叢集選項。您可以使用一個主動節點和一個或多個被動節點進行傳統的主動/被動叢集。此設定需要伺服器之間的共用磁碟,並且僅安裝在活動節點上。 SQL 也支援多種類型的複製,允許多個活動節點。此方法不需要共享存儲,並在每台伺服器上保留資料庫的單獨副本。 (看http://msdn.microsoft.com/en-us/library/ee523927(v=sql.100).aspx對於 SQL 2008 高可用性選項)
SQL 層級的叢集可防止單一節點上發生故障的作業系統或應用程序,從而允許在該情況下進行自動故障轉移。如果每個執行個體位於不同的 Hyper-V 伺服器上,您也可以免受硬體故障的影響。此外,SQL Server 的一些叢集方法可以防止單一節點上的資料庫損壞。使用 Hyper-V 叢集且僅使用 SQL Server 的單一執行個體並不能保護您免受虛擬機器中作業系統/軟體故障的影響。如果停機不是一個大問題,您可以在短時間內從虛擬機器快照進行還原。
編輯:忘記了 IIS 負載平衡部分。
對於 IIS 負載平衡,您可以使用 Window 網路負載平衡,它會建立在兩台主機之間共用的虛擬 IP。 (看http://technet.microsoft.com/en-us/library/cc770689(v=ws.10).aspx)
無論 Hyper-V 叢集或 NLB 是正確的選擇,對於 IIS 伺服器和 SQL 伺服器都適用相同的規則。此外,對於其他虛擬機,除非它們也進行了叢集/負載平衡,否則它們無法免受沒有 Hyper-V 叢集的 Hyper-V 主機問題的影響。
答案2
如果要在兩台主機之間鏡像虛擬來賓,請避免使用 HyperV 叢集。這樣,當一台主機發生故障時,虛擬來賓可以在另一台主機上啟動,並允許您在主機層級平衡負載。
如果您正在進行 SQL 集群,則可以更快地執行備份 SQL 步驟並開始處理請求。對於 Web 負載平衡,請使用 NLB(讓您的網路人員參與正確操作,閱讀多播 NLB)。並在兩個 Exchange 虛擬之間使用 Exchange 群集。你會更快樂。