1. 程式人生 > >SQL Server故障轉移叢集

SQL Server故障轉移叢集

在XenServer叢集上給客戶搭建一個應用服務,要求有負載均衡,Web伺服器用Windows Server 2008 R2 + IIS,資料庫Sql Server 2008 R2,並且使用SAN儲存。我設計的邏輯架構如下圖:


上面的架構圖中包含7VM,分別是作為轉發器的LVS DirectorLVS Backup、作為Web伺服器裝

Windows Server 2008 R2系統的2VM、裝有Sql Server 2008 R22VM以及作為SQL Server故障轉移叢集域控制器

DNSISCSI Target1VM

客戶端通過虛擬IP訪問Web伺服器,請求首先到達LVS Director

LVS Director根據特定的演算法將請求轉發到2Web

務器其中的一臺,Web伺服器根據具體情況,往SQL Server伺服器讀或寫資料。Web伺服器通過虛擬IP訪問SQL Server

務器,其中接到請求的SQL Server伺服器將讀取存放在ISCSI Target中的相應資料或往ISCSI Target中寫入相應的數

據,而最終資料都存放在SAN儲存中。

LVS DirectorLVS Backup的功能一樣,它們之間通過Heartbeat來探測對方的狀態,如果LVS Director出問

題,LVS Backup將接管服務,即LVS Backup將會接收到來自客戶端的請求,這樣其中一臺轉發器出現故障不會影響到

負載均衡的功能。同樣,後面的Web伺服器如果一臺出現了故障,LVS會將請求傳送到正常的那臺Web伺服器上。Web

伺服器通過虛擬IP訪問SQL Server伺服器,在Web伺服器看來,就像後端只有一臺SQL Server伺服器一樣,如果其中一

SQL Server伺服器出現故障,另一臺SQL Server伺服器將接受Web伺服器的請求繼續服務。這樣一來,LVSWeb

器、SQL Server伺服器均不存在單點故障,只要每一種伺服器還有一臺能正常工作,服務就不會受影響。注意到了

吧,作為域控制器、DNSISCSI Target的伺服器只有一臺,這裡又引入了單點故障,但是這臺VM基本上不裝什麼應

用,一般認為是比較穩定的,不太容易出現問題,這裡用一臺應該就夠了。

我猜可能有童鞋又有疑問了,我們不都是在用SAN儲存嗎,本來就是共享的,為何要搞個ISCSI Target呢?按本人的理

解,沒有一臺VM作為ISCSI Target好像還真搞不了這個故障轉移叢集(如有誤請指出)Windows Server 2008在建立集

群時需要叢集的成員有ISCSI共享盤,這些磁碟有作為仲裁磁碟的,也有作為共享資料盤的。我們的SAN儲存是掛載

XenServer上的,這些XenServer之間是共享SAN儲存,但是對於XenServer2VM來說,它們新增磁碟就是通過你

所熟悉的“add disk”操作來完成,這樣一來,他們雖然也是用到了SAN儲存,但是兩個VM使用了SAN儲存的不同部

分的空間,在VM看來它們並沒有共享什麼儲存。現在的做法是通過“add disk”給作為ISCSI TargetVM新增一

1000G的磁碟,這個1000G空間來自SAN儲存,然後在該VMMicrosoft ISCSI Target軟體,通過這個軟體將這

1000G的磁碟作為ISCSI目標共享給兩臺Sql Server伺服器,這樣兩臺Sql Server伺服器有了共享的ISCSI(作為仲裁

盤、資料盤),就可以建立故障轉移叢集,並且將以後web伺服器產生的資料儲存在這個1000G的磁碟中。