Sql-Server

關於 Hyper-V 虛擬機和集群的幾個問題

  • October 29, 2013

我使用 Microsoft 的 Hyper-V 技術已經有一段時間了,但我現在才開始涉足集群。

特別是,我正在嘗試實現一個容錯的 SQL 數據庫。這包括設置兩個虛擬機,通過故障轉移集群將它們集群,然後以某種方式安裝 SQL Server。我有兩台物理機——一台高端且相當強大的“重型升降機”來容納大多數虛擬機,另一台“備份”(重新調整用途的桌面)來保存基本的“輔助”(或故障轉移)AD-DC, SQL 和 FS 虛擬機。

我發現虛擬機級別的故障轉移集群如此吸引人的主要原因是,它向整個網路提供了一個 IP 和 DNS 條目——如果一台機器(物理或虛擬)出現故障,您可能會失去一些 ping 和連接被重置,但網路應用程序(Microsoft RMS 到後端 SQL 的連接)仍然可以連接到一個可行的數據庫,而不必完全搞亂設置。

我的第一個問題是關於 SQL Server 本身的。如果我在兩個 VM 之間有一個集群,在故障轉移集群配置中安裝 SQL Server 是否更有意義,或者我應該將它簡單地安裝在獨立配置中並鏡像數據庫?例如,這篇文章建議只鏡像數據庫,但我是否只是在獨立 VM 上鏡像獨立數據庫,或者我是否可以獲得集群 VM 的網路和故障轉移優勢,同時仍然使用(在每個集群 VM 上)已經鏡像的獨立數據庫彼此?

同樣,我遇到過很多關於 SQL 集群的文件,但大多數都假設一定數量 (#>2) 的物理機器不僅可以容納實際的 SQL VM,還可以容納 Quorum 和 Witness 儲存。我將無法召集超過兩台物理機器。因此,我必須對不超過兩個 VM(每台物理機一個)的 VM 集群感到滿意。

另一個問題涉及 MSDTC - 分佈式事務協調器。當嘗試安裝 SQL 故障轉移集群時(因為這個原因我從來沒有完成過),因為 MSDTC 沒有被集群,所以它拋出了一個嘶嘶聲。盡我所能搜尋,我還沒有找到在 Windows Server 2012 R2 下這樣做的方法。我找到了大量適用於 Windows 2008 和 2008 R2 的文件,但這些說明與 2012 R2 不一致(至少,不是以允許我成功集群 MSDTC 的方式)。另外,一些說明我發現 SQL Server 故障轉移群集安裝表明數據庫本身(和其他功能)需要第三個“網路設備” - 共享網路儲存(SAN)。我沒有這個,也不會得到這個。我的大部分儲存都存在於為所有“主要”虛擬機設計的“重型升降機”上。如果該物理機出現故障,儲存也會出現故障。輔助伺服器確實為 AD-DC 伺服器、SQL 伺服器和文件伺服器提供了足夠的資源,因此它將處理這些 VM 的“輔助”故障轉移版本(集群或非集群)。

我的最後一個問題涉及文件伺服器。如果我在兩個虛擬機之間集群文件伺服器(一個在我的“重載”上,另一個在我的“備份”上,我如何在它們之間鏡像數據?集群虛擬機只為網路上的資源提供單點訪問,它不完全複製兩者之間的數據 - 留給提供該數據的服務。我不確定如何確保兩個集群文件伺服器虛擬機之間的文件伺服器數據可以正確鏡像。記住,我只有兩個在這裡使用的設備 - 我的主要機器和備用輔助機器。我沒有機會獲得 SAN 或任何其他類型的網路連接儲存。機器上存在的東西必須充當儲存。

在此先感謝您的任何建議。

您可能希望將其分解為一系列更有針對性的問題。

  1. 如果您正在尋找無縫的、應用程序透明的故障轉移,那麼您需要使用故障轉移集群或 AlwaysOn 可用性組。只有在您使用 SQL 2012 Enterprise 時,才可以選擇 AOAG。鏡像將為您提供簡單的(手動)故障轉移;如果您想要自動故障轉移,您必須添加見證伺服器,但即便如此,您的應用程序也必須具有故障轉移意識,因為它需要使用新的 IP/名稱來連接輔助伺服器,這與故障轉移集群/AOAG。事實上,微軟打算在未來用可用性組來取代傳統的鏡像,所以為了面向未來,我建議盡可能不要在新部署中使用鏡像。
  2. Windows 2012 上的 SQL Server 2012 並不絕對需要群集 MSDTC,但如果您需要,只需添加 DTC 群集角色即可:添加集群 DTC
  3. 對於故障轉移集群,您需要某種類型的數據庫外部儲存。這可以是 SAN、DAS 或(如果您有 SQL 2012)NAS。如果您不打算使用外部儲存,則應使用 AlwaysOn 可用性組,因為它會為您複製數據,同時提供類似集群的故障轉移功能。這仍然需要一個 Windows 集群,但 SQL 本身不會被集群。
  4. 集群文件伺服器旨在與後端的共享儲存一起使用,就像集群 SQL 實例一樣。另一種選擇是將DFS 複製與 DFS 命名空間一起使用,以提供高度可用的文件共享,而無需集群。

引用自:https://serverfault.com/questions/549446