Hyper V 上的 SQL 叢集 - 是叢集中的叢集的一個優點

Hyper V 上的 SQL 叢集 - 是叢集中的叢集的一個優點

這是一個重新哈希問題我不久前問過——在一名顧問向部門中的其他團隊提出想法後,整個問題再次被提出,因此我正在尋找更詳細的答案。

我們打算跨多個實體刀片設定一個多實例 SQL 集群,這些刀片將在每個 SQL 實例上運行各種不同的系統。一般情況下,每個 VM 主機上都會執行一個虛擬 SQL 實例。同樣,在一般操作中,每個 VM 主機將在專用的底層刀片上運行。該設定應該為我們維護任何單一虛擬機器或底層刀片提供很大的靈活性,並且所有 SQL 實例都能夠根據需要進行故障轉移。

我最初的計劃是執行以下操作:

  1. 在每個刀片上安裝 2008 R2
  2. 將 Hyper V 新增至每個刀片
  3. 為每個刀片安裝一個 2008 R2 VM
  4. 在 VM 內 - 建立故障轉移群集,然後安裝 SQL Server 叢集。

顧問建議我們改為執行以下操作:

  1. 在每個刀片上安裝 2008 R2
  2. 將 Hyper V 新增至每個刀片
  3. 為每個刀片安裝一個 2008 R2 VM
  4. 在將託管所有虛擬機器的主機上建立一個叢集。
  5. 在 VM 內 - 建立故障轉移群集,然後安裝 SQL Server 叢集。

最大的差異是新增了第 4 步,我們也對所有來賓虛擬機器進行了叢集。爭論的焦點是,它進一步改善了維護,因為 SQL 叢集和實體硬體之間根本沒有聯繫。理論上,我們可以在主機周圍即時遷移來賓虛擬機,而完全不會影響 SQL 集群,因此,為了進行日常維護實體刀片,我們可以在不中斷且不需要故障轉移的情況下移動 SQL 集群。

這聽起來是個好主意,但我在互聯網上沒有發現任何人們說他們已經做到了這一點並且效果很好。我真的可以對來賓進行即時遷移,而不會讓其中託管的 SQL 叢集感到不安嗎?

有沒有人有過這種設定的經驗,好還是不好?是否有一些我沒有考慮到的優點和缺點?

我很欣賞鏡像也是一個值得考慮的有價值的選擇 - 在這種情況下,我們傾向於集群,因為它將完成每個實例的全部工作,並且我們擁有大量資料庫。一些資料庫用於笨重的第三方系統,這些系統甚至可能無法很好地與鏡像一起工作(我對叢集的理解是故障轉移對客戶端來說是完全透明的)。

謝謝。

答案1

如果這些刀片完全專用於運行 SQL Server,那麼您為什麼還要為虛擬化煩惱呢?

為什麼不簡單地在每個伺服器上安裝 Windows Server 和 SQL Server 並相應地設定集群,而不需要額外的虛擬化開銷?

答案2

聽起來很複雜。

我必須權衡解決方案的「複雜性」與標準實體叢集 SQL 伺服器實現的可靠性和相對簡單性。

所有資料庫都是關鍵任務嗎?根據我的經驗,通常不會,因此我傾向於將最重要的資料庫託管在具有完全復原能力的伺服器上,並將其餘資料庫(通常佔很大比例)託管在簡單的 SQL 伺服器上。

這使您可以集中精力保持最重要的系統正常運行,而不是試圖讓「所有的球同時懸掛在空中」。

所有伺服器都需要定期維護。考慮到安全修補程式的規律性、嚴重性和重要性,我們已經從試圖維持理論上的5 個九的正常運行時間(用戶喜歡,但實際上並不需要)轉向更現實的「我們將確保伺服器安全”並且安全 - 但將會有短暫的強制維護窗口,以便我們能夠正確地為伺服器打補丁。”

答案3

在列出的選項中,我會選擇#2,但我不會對 SQL 進行叢集(步驟 5),因為它增加了一層複雜性,而您不會從中獲得太多好處。 Hyper-V 叢集已經允許您在任一主機上運行該虛擬機,這樣您就可以避免硬體故障。

我假設您計劃對 SQL 日誌和資料庫磁碟區使用固定大小的 VHD。

我完全理解其他人關於完全跳過 Hyper-V 並僅使用 2 個刀片作為普通 SQL 叢集的評論 - 這肯定是傳統方法。然而,虛擬化工作負載的靈活性優勢對於維護、升級和硬體故障來說是巨大的。虛擬機器的可攜性非常有吸引力。

但請注意,此解決方案的價值也取決於您的環境。如果您沒有其他 Hyper-V 伺服器,而且您的員工在 Hyper-V 方面經驗不足,那麼虛擬化您最關鍵的工作負載之一可能不是一個好主意。然而,如果您像許多IT 商店一樣,開始虛擬化不太重要的伺服器,已經建立了一些主機,並且擁有可靠運行Hyper-V 的技能和程序,那麼將重點擴展到更關鍵的工作負載是完全合理的。就我個人而言,我寧願在主機層級管理集群,而不是在 SQL 層級管理集群,而且我認為我們會看到越來越多的人這樣做,儘管它還不太常見。

最後,關於在Hyper-V 上運行SQL 的問題:是的,實時遷移可以與SQL 一起正常工作,並且不會注意到- 並且- SQL 資料庫鏡像很棒,但是,它並未得到普遍支持,因此並不適合所有人情況。

答案4

我認為你的顧問說得對。我和他有同樣的想法,我希望在當前的環境中實施。 2 個實體硬件,每個硬體運行 Hyper-V,並安裝 2 個 W2k8。

  1. 在第一台實體主機上安裝 2 個虛擬機器。
  2. 在 VM1 上安裝 SQL,並將 SQL 映像檔或叢集安裝到 VM2 上,並在 O/S 層級上進行容錯設置,以便故障轉移到複製環境。
  3. 在第二台實體伺服器和故障轉移叢集 Hyper-V 上安裝 W2k8。

這為您的 SQL 環境提供了完整層級的故障轉移叢集和完整的 H/A。

或者也許我的想法很愚蠢?

相關內容