使用 HAProxy 為鏡像 SQL Server 提供容錯能力

使用 HAProxy 為鏡像 SQL Server 提供容錯能力

我們正在為即將推出的網路產品建構生產環境。對於此堆疊,主 SQL Server 2008 將用於即時資料庫操作,輔助 SQL Server 2008 將獲得從主 SQL Server 映像的資料(透過 SQL Server 的內建鏡像能力)。我們將讓報表服務針對輔助 SQL Server 執行,同時在主 SQL Server 不可用時使其具有熱備用狀態。

在應用程式層面,我們有兩個選擇:

  1. 在應用程式層中實作故障偵測,以便如果主 SQL Server 無回應,讓我們的 DAL 存取輔助 SQL Server。或者
  2. 讓應用程式層指向 vip 並讓 HAProxy 處理故障檢測。

問題是,選項#2 是可行的選項嗎?

注意:我們知道還有其他方法可以在資料庫層級提供高可用性(例如叢集),但我們的目標是找到一種經濟高效的解決方案。

答案1

“數據鏡像”是什麼意思?

您可以擁有資料庫鏡像,在這種情況下,客戶端(即您的 DAL)可以在連接字串中使用 FailoverPartner 並追蹤故障轉移事件並連接到新主體。您的報告將運行資料庫快照,而不是資料庫本身,因為鏡像不可用。

您可以擁有一個故障轉移集群,並且客戶端連接到集群資源名稱來啟動,並且它不知道啟動時的活動節點主機名,但這並不能讓您存取備用夥伴上的資料。

您可以使用硬體鏡像,但這是一個單獨的主題。

有人說複製是一種選擇,我不屬於那個陣營。

而且……差不多就是這樣。不管這代表什麼,都無法建立自己的內部資料鏡像技術。

更新

如果您使用資料庫鏡像,只需在連線字串中指定故障轉移夥伴,請參閱將客戶端連接到鏡像資料庫。您的應用程式必須在發生故障轉移事件時處理交易一致性。故障轉移事件將突然斷開客戶端連接,並在客戶端程式碼中引發異常。任何待處理的交易都將被中止。客戶端程式碼必須重新連線、讀取持久性並從資料庫中找到的狀態復原工作。正確編寫的應用程式將優雅地處理這個問題,不會有任何問題。

鏡像始終處於離線狀態,無法存取。如果要在鏡像上執行報告,則必須拍攝資料庫快照並在快照上執行報告。快照必須定期刷新(刪除並重新建立)。看資料庫鏡像和資料庫快照

網路層負載平衡器與鏡像無關,且不解決任何問題。

答案2

怎麼樣以上都不是?

請澄清鏡像 sql 伺服器的意思。您是否使用某種 SAN 來進行鏡像,或使用 SQL Server 的內建鏡像功能?
我知道如何在 Web 層使用 HAProxy,但為什麼要使用 SQL Server 呢? SQL Server 還有其他更多支援的 HA 選項,例如叢集、鏡像和複製。我會先調查那些。

相關內容