2012年1月6日 星期五

SQL Server - 雙主動模式叢集環境架設

        許多人抱怨說使架設SQL Server的Cluster有點可惜,因為第二台電腦(Passive)的電腦只能 Standby ,當沒有問題發生時,根本一點用途也沒有,所以許多公司通常在購買第二台電腦的時候只會用很少的預算進行採購,所以當問題發生時,只能短暫的替代第一台主機 (Active)的角色,很快的就會撐不住,而第一台又來不及復原進行上線服務時,整個服務只能停擺了。

        針對上述的問題,所以我在這介紹如何將原本的 AP (Active/Passive) Mode Cluster,變成 AA (Active/Active) Mode Cluster,方法上非常的簡單,只需多新增一顆Share Disk與再另外安裝一個 Instance即可,詳細的步驟如下,再請參考下列的步驟。



圖表說明:在我的SAN Storage中總共會先切出六顆磁碟,Quotum與MSDTC的磁碟會共用,而SysDB-1與UserDB-1會給第一個Instance,而另外二顆則給第二個Instance使用。

1、請先將原本的 AP (Active/Passive) Mode Cluster安裝完成,詳細步驟請參考我之前的作品。

相關文章:

2、請再新增二個叢集磁碟,分別存放 System Database與 User Database。
3、先在第一個節點進行SQL Server安裝,方法與第一個 Instance 的方法相同。
4、安裝到 [執行個體組態] 的時候,請輸入不同的 [SQL Server 網路名稱] ,在這我以 [CLUSTER-AA-2] 為例,Instance Name則輸入 [AAMODE]。

5、安裝到 [叢集資源群組] 的時候,你會看到資源的偵測,此時候請將 SQL Server 安裝到另外一顆新的叢集磁碟上。



6、此處由於是另外一個Instance,所以請使用不同 IP 位址,然後安裝到最後即可完成。

7、安裝完成後,即可看到 [服務與應用程式] 已可以看到另外一個應用程式的名稱。

8、再來請進行第二台主機的安裝,安裝時請選擇 [新的SQL Server容錯移轉叢安裝],啟動安裝後,你就可以看到系統會列出目前所擁有執行個體名稱,並自動選擇合適的執行個體名稱,再一直安裝到最後即可完成。

9、安裝完成後,再到 [服務與應用程式],將 SQL Server (AAMODE) 切換到第二台上。

10、切換完成後,你就可以看到 SQL Server (AAMODE) 的目前擁有者即切換到第二台上,如此即大功告成。

12、測試完成後,我們再到 SQL Server (AAMODE) 點選 [內容],將慣用擁用者的順序調整。

13、最後由於我們是設定成 AA-Mode的模式,所以請記得在最壞的情況下,你的SQL Server可能會同時放在同一台上,所以在資源的分配上,也請盡量分成好,比較常見的是 (資源數/Instance) 的數量,但往往有時候不一定是相對的,所以請依照你自已的環境進行調整。

參考文件:
Failover Cluster Step-by-Step Guide - Configuring a Two-Node File Server Failover Cluster
http://www.microsoft.com/download/en/confirmation.aspx?id=11247

關鍵字:ClusterAA-ModeAP-ModeActive/PassiveActive/Active、High AvailableClusterFailover容錯移轉叢集

15 則留言:

  1. 請問一下,這個所謂的AA Mode,是不是只是兩個獨立的SQL Instance而已,並不是可以讓兩個SQL Instance同時存取同一個DB呢?謝謝囉^^

    回覆刪除
  2. Hi Danny:

    的確如你所說,他會在每一個節點多增加一個Instance,但他與Oracle的RAC是不同的,但是他可以讓原本的Passive Node,進行服務,讓硬體資源發揮更大的極限。

    回覆刪除
  3. 這樣資料好像無法同步??怪怪的!

    回覆刪除
    回覆
    1. 不會有資料同步的問題才對,因為是A/A模式,不是進行Load Balance,所以不需要進行資料同步。

      刪除
  4. 請教兩個問題
    1.請問A/A Mode,第二個Node,Port可以也設成1433嗎?找不到文件在細說SQL Server Cluster網路組態內的設定
    2.如果前端AP要連Cluster內的Named Instance(非Default Instance)時,在ACL設定上,Port要設多少??我目前是在Physical NIC開445,Vistual NIC設1433,1434

    回覆刪除
    回覆
    1. Port的設定都還是設定成相同即可,就好像一台電腦裝了兩個Instance一樣,不需要特別更改,除非你有特別的需求。

      刪除
    2. 謝謝您的回覆,不過一台電腦裝兩個Instance,用SSMS連第二個Instance不是要特別指定,1433,例如msserver\mssql2,1433;我現在遇到的問題是第二個Instance切到第一台Server,和Instance共存時,前端AP就需要在連接字串後加,1433,但如果是第一個Instance切到第二台Server來,就沒這問題,很納悶!!

      刪除
    3. 基本上非預設的Instance,你就必須啟動SQL Server Browser的服務,如此也不需特別設定不同的Port即可進行連線,我另外模擬你說的情況,可能是你有啟用防火牆的關係,你可以嘗試將防火牆關閉後再試看看吧,如有問題再Post上來討論。 ^^

      如果真的還是不行,你可以透過截取網路封包的方式進行確認。

      刪除
  5. 請問一個問題;在SQL Server中是否可以做到多台SQL Server主機同時用到一個DB

    回覆刪除
    回覆
    1. 不知你是否指的是Oracle的RAC機制,基本上SQL Server與Oracle是走不同的方式,我的前幾篇文章也有講到,在下列的參考中有提出一些兩者之間比較的論點,建議你可以參考,有任何問題歡迎提出討論。

      A Competitive Review of Oracle Real Application Clusters
      http://www.google.com.tw/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&cad=rja&ved=0CGcQFjAG&url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2F6%2F9%2Fd%2F69d1fea7-5b42-437a-b3ba-a4ad13e34ef6%2Fwhynotoraclerac.docx&ei=QzaCUP38CcrmmAXT74HgDQ&usg=AFQjCNHedg8EtxHNBE84ORaP0fnp3R6aXA&sig2=2vf6fvyDyXFjEEMkHxMRqw

      刪除
  6. 想請教一個問題,這種對SAN存取的架構是不是SAN故障的話會造成SQL服務全部停擺,如果是的話那是否有其他方式可以避免這種情況? 感謝

    回覆刪除
    回覆
    1. 的確在Cluster的架構下,SAN是一個主要重點,如果SAN掛掉的話,就會造成整個系統的問題,但通常SAN有一定的機制避免類似的情況發生,但其主要建議可以尋求SAN的廠商進一步的確認。

      刪除
    2. 不好意思,挖到這舊寶藏..^^
      請較,,我沒有SAN Storage,,,是否可以用兩個獨立的VM 來取代呢? 還是說一定要用SAN Storage?
      我的想法是 兩個DB的 VM安裝在不同實體機的ESXI中,來避免因SAN Storage掛點而造成QL服務全部停擺,不知是否可行?

      刪除
  7. 請問在SQL2012 AA mode下,是否還能夠用AlwaysOn設定?

    回覆刪除
    回覆
    1. 你的資料庫於架構在Cluster上,就不需要再透過Alwayson了,大部份是會透過Replication或Log Shipping等方法,或是你有其特別的需求,歡迎一同提出討論。

      刪除