22
SQL Cluster 的高可用性叢集架構與應用 許春凱 企業持續營運 主機永不停機 企業 e 化,已經是企業營運的必備條件,商業行為不分畫夜的持續進行,企 業對企業資訊系統有著高度的依賴性,如何提升資訊系統的可用度及穩定度,早 已成為 IT 人員重要的話題,尤其是對外服務的系統,更緊緊關聯著企業對外服務 品質及客戶滿意度的重要課程。例如:連上 Yahoo 首頁時,出現「今日主機暫停 服務」甚至出現網頁無法連結的字樣!說不定就對此企業的信譽及可靠性從此大 大折扣,試問您還敢把個人重要資料提供給該企業嗎?資訊系統的高可用,就是 要確保因為突發因素所造成的系統延遲服務。 資訊系統延遲服務的因素有很多,像是人為的失誤、硬體的故障、作業系統 的錯誤、應用程式的錯誤、天然災害、人為災害等;如果又是發生在重要的資 料庫系統上面,所帶來的企業衝擊及損失更是難以想像,說明如下: 硬體的故障 一般而言,企業重要資訊系統主機,都一定會使用磁碟陣列(RAID)組態, 除了提升磁碟 I/O 的效能,同時也能保護磁碟機的故障;但對於該主機的其他硬碟 設備就不見得有容錯保護機制了,例如 CPU 處理器、 RAM 記憶體、 RAID 控制卡、 主機板等,但最好的方式,就是另備一台主機待命。 應用程式錯誤 因為系統環境變更等因素,造成使用者無法得到所需要的資訊,是常發生在 應用程式錯誤常見的原因。要解決這一類的問題就必須建立適當的工作變更流程 及備份機制,以利問題發生後,可以有記錄回溯查詢變更前的程式設定,迅速將 系統恢復。 使用者操作錯誤 這是最難防範的一個課題了,因為有時使用者的操作並非全是技術性問題, 例如:使用者誤刪資料表、資料庫,下錯指令等等,對於系統看來是正常的行為,

SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

  • Upload
    ngotram

  • View
    244

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

SQL Cluster 的高可用性叢集架構與應用

許春凱

企業持續營運 主機永不停機

企業 e 化,已經是企業營運的必備條件,商業行為不分畫夜的持續進行,企

業對企業資訊系統有著高度的依賴性,如何提升資訊系統的可用度及穩定度,早

已成為 IT 人員重要的話題,尤其是對外服務的系統,更緊緊關聯著企業對外服務

品質及客戶滿意度的重要課程。例如:連上 Yahoo 首頁時,出現「今日主機暫停

服務」甚至出現網頁無法連結的字樣!說不定就對此企業的信譽及可靠性從此大

大折扣,試問您還敢把個人重要資料提供給該企業嗎?資訊系統的高可用,就是

要確保因為突發因素所造成的系統延遲服務。

資訊系統延遲服務的因素有很多,像是人為的失誤、硬體的故障、作業系統

的錯誤、應用程式的錯誤、天然災害、人為災害…等;如果又是發生在重要的資

料庫系統上面,所帶來的企業衝擊及損失更是難以想像,說明如下:

硬體的故障

一般而言,企業重要資訊系統主機,都一定會使用磁碟陣列(RAID)組態,

除了提升磁碟 I/O 的效能,同時也能保護磁碟機的故障;但對於該主機的其他硬碟

設備就不見得有容錯保護機制了,例如 CPU 處理器、RAM 記憶體、RAID 控制卡、

主機板…等,但最好的方式,就是另備一台主機待命。

應用程式錯誤

因為系統環境變更等因素,造成使用者無法得到所需要的資訊,是常發生在

應用程式錯誤常見的原因。要解決這一類的問題就必須建立適當的工作變更流程

及備份機制,以利問題發生後,可以有記錄回溯查詢變更前的程式設定,迅速將

系統恢復。

使用者操作錯誤

這是最難防範的一個課題了,因為有時使用者的操作並非全是技術性問題,

例如:使用者誤刪資料表、資料庫,下錯指令等等,對於系統看來是正常的行為,

Page 2: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

但就結果論而言,卻是企業的大災難,所以要解決此類問題,還是著重於人員授

權,與人員訓練,以及與上述的工作流程記錄,及定期的備份機制 以達到最低的

損失結果。

容易維護 低成本 主機高可用度 不再遙不可及 企業高可用性系統,由 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)架構如下圖:

Page 3: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

以下,作者就以 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)

Page 4: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

偵測 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 主機勾選安裝「容錯移轉叢集」。

Page 5: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

三、驗證 Cluster Node 基本環境

Windows2008 於 Cluster 建立叢集之前,做整備測試,以減少建置時所發生

的異常,打開「容錯移轉叢集管理」工具 -> 「驗證設定」。

Page 6: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

瀏覽驗證要加入的叢集 Node server。

Page 7: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

四、建立叢集

Page 8: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

選取要加入 Cluster Node 的伺服器,例如:SQL1、SQL2

Page 9: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

輸入 Windows Cluster 叢集名稱,例如:“WinCluster”。以及叢集 IP,例如:

192.168.111.100

完成後,基本的 Windows Cluster 已經建立完成,於容錯移轉叢集管理工具,

可檢查每個磁碟狀態是否已經正常線上。

Page 10: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

五:建立分散式交易協調器

於服務和應用程式,選取分散式交易調器。

Page 11: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

指定叢集分散式協調器的 Server name 及 IP。

選取分散式協調器的磁碟,例如:M:

Page 12: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

“WinClusterDtc”分散式協調器服務,狀態:線上。

Page 13: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

六、安裝 SQL Server 2008 Node1

於光碟片安裝畫面,選取「新的 SQL Server 容錯移轉叢集安裝」

Page 14: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

於 SQL Server 安裝時的支援規則,應不可出現失敗項目,若有異常,需排除

後才可繼續安裝。

設定 SQL Server 叢集的網路名稱,例如:“SQLCluster”

Page 15: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

選擇 SQL Server,所要使用的共用叢集磁碟,例如:磁碟 3(E:\)

設定 SQL Server 的 Cluster IP,例如:192.168.111.200

Page 16: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

確定「資料目錄」,均安裝於共用叢集磁碟中,例如:E:\。

Page 17: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

完成後,可看到 SQL Server 的服務已經正常啟動,且目前擁有者為 SQL1。

Page 18: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

七、安裝 SQL Server 2008 Node2

於安裝畫面,選取「將節點加入到 SQL Server 容錯移轉叢集」。

Page 19: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

Page 20: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

完成後,可於 Windows 容錯移轉叢集工具,看到節點有 SQL1、SQL2 二個

節點,可嘗試將 Node1 主機,手動關機,可發現 SQL Server 服務自動由 Node2主機接手上線,這樣就大功告成囉!

Page 21: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

結論

Windows 2008 叢集服務,預防了主機硬體損毀,減少企業資訊服務的中斷,

以及做到自動容錯移轉,使得災難發生時,不需要人為的介入失誤判斷;加上

Windows Cluster 可保護的服務眾多,如 SQL Server、Exchange Server、DFS、File Server …等,並且在容錯移轉的狀態下,可確保已經 Commit 的資料不會有

損失。

在建置 SQL Server Cluster 架構中,都是依服務的組成方式來分類,所以在

彈性應用上,我們甚至可以做到 Active-Active 的主機服務架構。

Page 22: SQL Cluster 的高可用性叢集架構與應用 - dsc.com.t · 以下,作者就以SQL Server 服務當作節點上運作的服務進行說明:當一個節 點發生故障時,SQL

 

 

以實際應用為例:Node1 主機主要服務 SQL Service Node2(Passive)為其

備援,而 Node2 主機主要服務為 ERP AP 角色,Node1(Passive)為其備援;

當災難發生時,各自為可自動容錯接手對方的主要服務,可使企業 IT 環境的服務

盡可能不中斷,達到提高企業核心系統可用性的目的。