群集 IIS 和 SQL Server
我在 IIS 上部署了 WCF 服務,並使用 SQL Server 2008 作為後端。
我的問題是:如何在 IIS 和 SQL Server 上創建集群(負載平衡/故障轉移),在這樣做之前我需要記住什麼樣的事情?(例如,我是否必須將會話從記憶體中移動到 SQL 伺服器等)
另外,如何確保兩個 SQL Server 始終擁有鏡像數據,並且兩個 SQL Server 是否實時共享鎖(行、頁、表)資訊?
這是我第一次這樣做。這叫網路農業嗎?
我猜 IIS 和 SQL 在不同的伺服器上:
IIS:您可以使用 Microsoft NLB 功能在 2 個或更多伺服器之間分散負載。它們可以是 Windows 的 Web 版本。它包含在 Windows 中。您將擁有一個客戶端將連接到的虛擬 IP。伺服器將“共享”此 ip 並將客戶端傳播到不同的伺服器。多播/單播取決於網路、網卡數量和伺服器內部通信與否。NLB 不是應用程序感知的,如果你關閉 IIS,如果你有親和力,使用者將會失去。如果從 ip 的角度來看它已關閉,NLB 只會刪除伺服器。您將不得不更改 IIS 元數據庫 (loadbalancercapabilities),如下所述: http ://technet.microsoft.com/en-us/library/cc757659(WS.10).aspx 從許可證的角度來看,它包含在 Windows 中,沒有更多的成本。
從 WCF 的角度來看:客戶端將連接到 X Web 伺服器之一。當這台伺服器工作時,您可以在同一台伺服器上維護它們(通過親和力)。關聯性基於客戶端 IP 和虛擬 IP 之間的雜湊值。如果伺服器發生故障,客戶端將被分派到其他伺服器。如果您使用 http 會話/身份驗證,則必須將會話儲存在伺服器之外,例如在數據庫中。否則,當伺服器出現故障時,客戶端會話將失去。
SQL:您有不同的選擇:使用 SQL 機制複製數據庫,或使用 Microsoft MSCS(集群)。最後一種是Windows企業版和外部共享儲存,成本高(但仍然是SQL標準版)。使用 SQL 純層,您可以鏡像您的數據庫。每台伺服器都有一個本地儲存,主伺服器即時發送事務到備用伺服器(同步或非同步)。當您的網路伺服器連接時,伺服器會通過 SQL 本機客戶端和/或 ADO.Net 告訴他備用伺服器可用以防出現問題。因此,如果出現問題,您的網路伺服器會自動切換到備用伺服器。這一切都適用於標準 SQL 版本。數據庫需要處於完全恢復模式。它是每個數據庫的,所以如果你的 WCF 使用多個數據庫,並且只有一個被破壞,
更多資訊在這裡: http ://technet.microsoft.com/en-us/library/cc917680.aspx