2009-12-19 157 views
7

我打算將我的web應用程序部署到EC2。我有幾個Web服務器實例。我有1個主數據庫實例。我有1個故障轉移數據庫實例。當主數據庫實例失敗時,我需要一種策略將Web服務器重定向到故障切換數據庫實例IP。EC2數據庫服務器故障轉移策略

我希望我可以在我的連接字符串中使用彈性IP。但是,網絡服務器無法訪問/ ping彈性IP。我有幾個蠻力想法來解決這個問題。但是,我試圖找到最優雅的解決方案。

我使用的是.Net和SQL Server。我的連接字符串被加密。

有沒有人有策略使用某種形式的自動化或DNS配置故障轉移到EC2中的數據庫實例?

請讓我知道。

回答

0

沒有使用EC2,但肯定你需要:

(一)把你的前端到一些自定義的維護模式,您所定義的,當你切換IP上;並使前端執行必要的步驟來管理潛在的數據完整性和與先前服務器關閉有關的數據丟失問題,並且新服務器在進入和離開您的定製維護模式時即將到來

或者,對於零降(b)從零開始設計目標/關係和事務級別的系統,以支持零停機故障切換。這不是你可以用任何應用程序快速鎖定的東西。 (c)使用某些數據庫支持進行自動故障轉移。我不知道SQL Server是否支持適用於您的應用程序的故障轉移,或者在此處適用。我建議在問題中添加一個「sql-server」標籤以開始搜索合適的受衆。

如果彈性IP不起作用(聽起來很奇怪,至少可以說 - 你不應該跟EC2談談),你可能需要指導你的前端使用哪個新的數據庫IP同時告訴它從維護模式轉到正常模式。

+0

可能值得在姐妹網站serverfault.com和/或superuser.com上提問...... – martinr

+0

感謝您的回覆。我問EC2 ..但他們有非常糟糕的形式。非常浪費時間。 (b)我已經在那裏與應用程序。我有一個接口來獲取/設置連接字符串的IP。所以,我可以隨時改變它......我只是希望有人有一個聰明的DNS解決方案。我會在serverfault.com上問這個問題,看看我得到了什麼。 – Dave

0

如果你願意掏出一點額外的錢,看看Rightscale's工具;他們已經構建了自定義服務器映像和支持數據庫故障轉移(在其他許多事情中)的支持工具。 This link解釋瞭如何使用MySQL,因此儘管它不使用SQL Server,但希望能夠向您展示一些原則。

0

我一直認爲有這種可能性在connnection串

這是從How to add Failover Partner to a connection string in VB.NET採取(但尚未測試):

如果使用ADO.NET或者SQL 本機客戶端連接到 被鏡像的數據庫中,您的應用程序可以利用 的驅動程序能力 自動重定向連接 當數據庫鏡像故障轉移 發生時。您必須在 連接字符串和故障轉移 夥伴服務器中指定初始的 主體服務器和數據庫。

Data Source=myServerAddress;Failover Partner=myMirrorServerAddress; 
Initial Catalog=myDataBase;Integrated Security=True; 

有ofcourse許多其他方式來 編寫使用 數據庫鏡像連接字符串中,這僅僅是一個例子 指出故障轉移 功能。您可以將此 與其他連接字符串 選項結合使用。

0

爲了擴大gareth的答案,雲管理軟件通常可以解決這類問題。 RightScale就是其中之一,但你可以試試enStratus或Scalr(免責聲明:我在Scalr工作)。這些工具提供了故障轉移解決方案,如:

  • 備份:您可以安排包含數據
  • 容錯數據庫EBS卷的自動快照:在失敗的情況下,奴隸被提升主並安裝存儲將如果發生故障的主,新主人是在同一AZ進行切換,或採取體積

如果你想建立自己的解決方案,您可以複製以下,詳細的過程中,我們在Scalr使用的快照:

  • 在同一個AZ中有奴隸嗎?如果是,則將其升級,切換EBS 卷(限於單個AZ),切換您可能具有的任何ElasticIP,重新配置其餘從節點的複製。
  • 如果沒有,是否有一個從另一個AZ完全複製的奴隸?如果是這樣,推廣它, 然後做到上述。
  • 如果在同一AZ中沒有從站,並且在另一個AZ中沒有完全複製從站,則從主站的 卷創建一個快照,然後使用此快照在正在運行從站的AZ中創建一個新卷。然後執行上述操作。
相關問題