2010-05-13 60 views
0

我是一個完全unix方式的人,但現在我們公司在ASP.NET + SQL Server集羣平臺下創建了一個新的應用程序。從ASP.Net訪問SQL Server集羣

所以我知道最好和最有效的原則和方法來縮放負載,但我想知道水平縮放的MS背景。

這個問題很簡單 - ASP.Net中有沒有內置的功能可以從SQL Server集羣中訪問最小加載的SQL Server?

任何單詞,庫,鏈接都受到高度讚賞。

我也很樂意聽到圍繞這個主題的最佳SQL Server實踐或成功案例。

謝謝。 Pavel

回答

0

SQL Server集羣不是負載平衡,它用於高可用性(例如,一臺服務器死亡,集羣仍然存在)。

+0

Yeap,那完全是我需要的。那麼我們是否可以訪問一些路由查詢的proxy-sql-server,或者應該在應用程序端設計路由和集羣邏輯? – Pavel 2010-05-13 16:58:34

+0

等等 - 什麼是LB的MS技術?我正在閱讀谷歌,但真正的經驗也很有趣。 – Pavel 2010-05-13 16:59:47

+0

你是否已經知道你有負載問題,或者不是?你聲明你需要負載平衡,但你沒有說什麼方式,所以很難指導建議。我們通過傳統的集羣(主節點完成大部分工作)運行一些非常繁重的負載,而沒有真正的問題。 – Joe 2010-05-13 17:03:20

0

如果您使用的是SQL Server集羣,則集羣是主動/被動集羣,因爲集羣中只有一臺服務器擁有SQL實例,因此無法在兩者之間分攤負載。

如果您有兩個正在使用的數據庫,您可以創建兩個SQL實例,並使羣集中的一臺服務器擁有兩個實例之一,另一臺服務器擁有另一個實例。然後,將一個數據庫的連接字符串指向第一個實例,將第二個數據庫的連接字符串指向第二個實例。如果兩個實例中的一個發生故障,它將故障切換到該實例的被動服務器。

替代方案(仍然不是負載平衡,但更容易設置IMO比羣集)是數據庫鏡像:http://msdn.microsoft.com/en-us/library/ms189852.aspx。對於鏡像,您可以在連接字符串中指定夥伴服務器名稱:Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;Failover Partner=myBackupServerAddress;如果主服務器出現故障,ADO.Net將自動切換到故障轉移夥伴。

最後,另一個需要考慮的選擇是複製。如果您將主數據庫複製到多個訂戶,則可以將您的負載分配給訂戶。沒有我知道的用於分割負載的內置功能,因此您的代碼需要處理該邏輯。

+0

有用,謝謝。 – Pavel 2010-05-13 17:18:07