Upload
ngotram
View
244
Download
0
Embed Size (px)
Citation preview
SQL Cluster 的高可用性叢集架構與應用
許春凱
企業持續營運 主機永不停機
企業 e 化,已經是企業營運的必備條件,商業行為不分畫夜的持續進行,企
業對企業資訊系統有著高度的依賴性,如何提升資訊系統的可用度及穩定度,早
已成為 IT 人員重要的話題,尤其是對外服務的系統,更緊緊關聯著企業對外服務
品質及客戶滿意度的重要課程。例如:連上 Yahoo 首頁時,出現「今日主機暫停
服務」甚至出現網頁無法連結的字樣!說不定就對此企業的信譽及可靠性從此大
大折扣,試問您還敢把個人重要資料提供給該企業嗎?資訊系統的高可用,就是
要確保因為突發因素所造成的系統延遲服務。
資訊系統延遲服務的因素有很多,像是人為的失誤、硬體的故障、作業系統
的錯誤、應用程式的錯誤、天然災害、人為災害…等;如果又是發生在重要的資
料庫系統上面,所帶來的企業衝擊及損失更是難以想像,說明如下:
硬體的故障
一般而言,企業重要資訊系統主機,都一定會使用磁碟陣列(RAID)組態,
除了提升磁碟 I/O 的效能,同時也能保護磁碟機的故障;但對於該主機的其他硬碟
設備就不見得有容錯保護機制了,例如 CPU 處理器、RAM 記憶體、RAID 控制卡、
主機板…等,但最好的方式,就是另備一台主機待命。
應用程式錯誤
因為系統環境變更等因素,造成使用者無法得到所需要的資訊,是常發生在
應用程式錯誤常見的原因。要解決這一類的問題就必須建立適當的工作變更流程
及備份機制,以利問題發生後,可以有記錄回溯查詢變更前的程式設定,迅速將
系統恢復。
使用者操作錯誤
這是最難防範的一個課題了,因為有時使用者的操作並非全是技術性問題,
例如:使用者誤刪資料表、資料庫,下錯指令等等,對於系統看來是正常的行為,
但就結果論而言,卻是企業的大災難,所以要解決此類問題,還是著重於人員授
權,與人員訓練,以及與上述的工作流程記錄,及定期的備份機制 以達到最低的
損失結果。
容易維護 低成本 主機高可用度 不再遙不可及 企業高可用性系統,由 IT 的觀點來看,就是減少資訊系統停止營運的時間,
例如:IT 主管常會問:「我們系統的可用性為幾個 9 呀?(99%、99.9%、
99.99%...)」,一般常見的可用度公式:
A=(F-R)/F
A=可用度
F=運作時間
R=修護時間
所以要達到 99.999%,每一年的停機時間必須小於 5 分鐘又 16 秒。當然極高
的可用度以及所需花費的成本,絕對是成正比的。今日作者這裡要討論的,就是
希望以低成本,高可用,甚至又能以輕鬆維護的前提下,建置企業高可用度系統。
Windows 2008 Server 加上 SQL Server 2008
輕鬆達成容錯移轉叢集機制 Windows 作業系統,容錯轉移(Failover Clustering)早已不是新鮮話題;但
因為早期叢集系統所需要的共用磁碟(Share Storage)硬體價格非常昂貴,動輒
都以百萬元起算,且設定及管理較為複雜,以致中小企業的用戶望之卻步。於近
期因 Storage 硬體普及,對於 I/O 存取的高效能,無論是價格下降或是考量效能的
前提,常已經將 Storage 列入企業資訊系統主機採購時的必要設備了(ex:資料
庫主機)。
容錯移轉叢集,是 Windows 作業系統所提供的高可用性容錯技術,基本架構
由二或以上實體節點(Node)所組成,且具有一個以上的共用磁碟(Shared Disk)架構如下圖:
以下,作者就以 SQL Server 服務當作節點上運作的服務進行說明:當一個節
點發生故障時,SQL Server 的 Instance 會自動的移轉於另一個節點,以防止 SQL Server 的服務中斷。
組成條件如下:
Windows Member Server
.NET Framework 3.5 with Service Pack 1 及 Windows Installer 4.5
虛擬伺服器專屬的 IP 及 Server name
叢集(Cluster)環境的建置,每個 Cluster 服務,都專屬的 IP 及 Server name,例如:Windows Cluster 會有獨自的 IP 及 Server name;SQL Cluster 也會有獨自
的 IP 及 Server name;
Shared Disk Array
Windows2008 Cluster,基本要有一個 Quorum Disk 作為見證(Witness)磁
碟,需建置的額外 Cluster 服務,也要有自行的磁碟。
外部網卡、內部網卡
外部網卡,作為提供主機服務之用。內部網卡,則作為心跳線(Heart beat)
偵測 Cluster 狀態之用。
今天,我們以實際架構測試,帶大家了解 Windows Cluster 架構,以及整合
SQL Server 2008 Cluster 服務:
一、磁碟配置:
目前主機 SQL1、SQL2,磁碟配置為 C:\本機系統磁碟;Q:\為共用磁碟做
Quorum Disk;M:\為共用磁碟做 MSDTC(Microsoft Distributed Transaction Coordination) 分散式異動交易協調器;E:\為共用磁碟 SQL_DATA 用。
二、安裝容錯移轉叢集
新增角色,於 SQL1、SQL2 二個 Node 主機勾選安裝「容錯移轉叢集」。
三、驗證 Cluster Node 基本環境
Windows2008 於 Cluster 建立叢集之前,做整備測試,以減少建置時所發生
的異常,打開「容錯移轉叢集管理」工具 -> 「驗證設定」。
瀏覽驗證要加入的叢集 Node server。
四、建立叢集
選取要加入 Cluster Node 的伺服器,例如:SQL1、SQL2
輸入 Windows Cluster 叢集名稱,例如:“WinCluster”。以及叢集 IP,例如:
192.168.111.100
完成後,基本的 Windows Cluster 已經建立完成,於容錯移轉叢集管理工具,
可檢查每個磁碟狀態是否已經正常線上。
五:建立分散式交易協調器
於服務和應用程式,選取分散式交易調器。
指定叢集分散式協調器的 Server name 及 IP。
選取分散式協調器的磁碟,例如:M:
“WinClusterDtc”分散式協調器服務,狀態:線上。
六、安裝 SQL Server 2008 Node1
於光碟片安裝畫面,選取「新的 SQL Server 容錯移轉叢集安裝」
於 SQL Server 安裝時的支援規則,應不可出現失敗項目,若有異常,需排除
後才可繼續安裝。
設定 SQL Server 叢集的網路名稱,例如:“SQLCluster”
選擇 SQL Server,所要使用的共用叢集磁碟,例如:磁碟 3(E:\)
設定 SQL Server 的 Cluster IP,例如:192.168.111.200
確定「資料目錄」,均安裝於共用叢集磁碟中,例如:E:\。
完成後,可看到 SQL Server 的服務已經正常啟動,且目前擁有者為 SQL1。
七、安裝 SQL Server 2008 Node2
於安裝畫面,選取「將節點加入到 SQL Server 容錯移轉叢集」。
完成後,可於 Windows 容錯移轉叢集工具,看到節點有 SQL1、SQL2 二個
節點,可嘗試將 Node1 主機,手動關機,可發現 SQL Server 服務自動由 Node2主機接手上線,這樣就大功告成囉!
結論
Windows 2008 叢集服務,預防了主機硬體損毀,減少企業資訊服務的中斷,
以及做到自動容錯移轉,使得災難發生時,不需要人為的介入失誤判斷;加上
Windows Cluster 可保護的服務眾多,如 SQL Server、Exchange Server、DFS、File Server …等,並且在容錯移轉的狀態下,可確保已經 Commit 的資料不會有
損失。
在建置 SQL Server Cluster 架構中,都是依服務的組成方式來分類,所以在
彈性應用上,我們甚至可以做到 Active-Active 的主機服務架構。
以實際應用為例:Node1 主機主要服務 SQL Service Node2(Passive)為其
備援,而 Node2 主機主要服務為 ERP AP 角色,Node1(Passive)為其備援;
當災難發生時,各自為可自動容錯接手對方的主要服務,可使企業 IT 環境的服務
盡可能不中斷,達到提高企業核心系統可用性的目的。