標籤:ica sql 2012 jsb groups 允許 應用程式 位置 director 光纖
本文屬於SQL Server AlwaysON從入門到進階系列文章
本文原文出自Stairway to AlwaysOn系列文章。根據工作需要在學習過程中順帶翻譯以供參考。系列文章包含:
- SQL Server AlwaysON從入門到進階(1)——何為AlwaysON?
- SQL Server AlwaysON從入門到進階(2)——儲存
- SQL Server AlwaysON從入門到進階(3)——基礎架構
- SQL Server AlwaysON從入門到進階(4)——分析和部署Windows Server Failover Cluster
- SQL Server AlwaysON從入門到進階(5)——分析和部署Failover Cluster Instance
- SQL Server AlwaysON從入門到進階(6)——分析和部署AlwaysOn Availability Group
- SQL Server AlwaysON從入門到進階(7)——FCI和高可用組的組合使用
- SQL Server AlwaysON從入門到進階(8)——在AlwaysOn中隔離鏡像流量
本文為第一節。即SQL Server AlwaysON從入門到進階(1)——何為AlwaysON?
前言:
AlwaysOn是經常被誤解的一系列複雜技術的集合。本系列將介紹關於AlwaysOn的技術,並且如何把它用在高可用策略中,及如何用好AlwaysOn。在本節中,會先介紹一下幾個概念:AlwaysOn、Failover Cluster Instance(FCI)和Windows Server Failover Cluster(WSFC)。理解這些基礎概念能夠在日常營運過程中起到很大的作用。
Windows Server Failover Cluster(WSFC):
WSFC(windows 容錯移轉叢集)是微軟高可用技術(HA)的核心組成部分。WSFC跟FCI、AlwaysOn相比,它更多的是Windows Server的一個功能,而後面兩個則是SQL Server的功能,同時,WSFC更加底層,在建立SQL Server Failover Cluster Instance(FCI,SQL Server容錯移轉叢集執行個體)、SQL Server AlwaysOn 高可用組、其他如Exchange等高可用技術之前,都需要部署和配置WSFC。WSFC可以把多台電腦節點(純物理機、純虛擬機器、物理機混合虛擬機器)組合在一起並對外部應用程式提供高可用服務。伺服器上的一個應用如SQL Server,可以運行在cluster的任何一個節點上,這種運行方式是通過cluster提供一個虛擬訪問點(由一個唯一IP地址和一個唯一機器名組成,或者“虛擬網路名”)給用戶端程式作為連結方式。地址和虛擬名作為一個應用程式的“資源群組”,在多個參與節點之間像令牌形式地被傳輸。當活動節點出現嚴重故障時,會使得活動節點停止對外服務。這時候叢集服務會自動嘗試重啟當前節點或夥伴節點的資源群組。從高層次的角度來說,用戶端的訪問點是沿著容錯移轉夥伴節點中的所有硬碟和服務起源傳輸的。一個已叢集的執行個體在發生容錯移轉時,會引發用戶端串連的斷開,然後在其他節點可用之後馬上重連。常見的引發容錯移轉的故障有以下幾個:
- 公用網卡或網路故障
- 電源故障
- 主板故障
- CPU故障
在WSFC中,已叢集的應用程式被安裝在獨立的組或者“應用程式”中,這些組包含了一系列如硬碟、服務、IP地址等的資源。組及其資源在某個時刻只能屬於一個節點,除非發生計劃或突發容錯移轉,否則其他夥伴節點不能訪問這些資源。典型的WSFC如所示,通過網路把所有節點互連,然後Domain Controller(域控)和DNS伺服器用於實現用戶端通過虛擬IP或者虛擬網路名去訪問節點,而不需要知道當前哪個節點是活動的。
對於FCI部署,電腦節點“必須”使用共用儲存,而對於常規的AlwaysOn可用組的部署,節點可以使用本機存放區,而不是必須使用共用儲存。雖然叢集節點允許使用完全不同的硬體,但是最好還是統一配置,避免在容錯移轉過程中發生負載不均衡從而無法承受故障節點的壓力使得轉移失敗。但是,各節點必須使用相同的OS及補丁版本、網路設定。另外對於叢集最大節點數,根據不同的Windows Server版本不同而不同(2003 為8節點,2008為16節點,2012為64節點)。穩定、健壯的Windows Server Failover Cluster需要嚴謹的設計、足夠的硬體支援和合適的作業系統版本。如果使用跨公網的叢集也會增加叢集設計、計劃和資源方面的開銷。需要重點提醒的是,WSFC僅提供容錯移轉功能,沒有提供負載平衡和橫向擴充功能,每個服務只能運行在一個節點上。通常情況下,在大型多節點叢集中,應用可能是跨子網的部署。在後續會看到,如果忽略了一些設定,會引起非必要的容錯移轉,同時不要違反AlwaysOn可用組的限制策略。WSFC需要某些形式的中介來控制叢集資源所屬方。這個中介就是叢集的仲裁。從Windows 2003 SP1開始,這個仲裁以節點投票並按多數服從少數的原則來維護。也可以使用如叢集本地碟或多網站叢集共用的遠程檔案形式來添加額外的仲裁資源。從Windows Server 2012 開始,仲裁開始使用一個成為動態節點權重配置的功能來平衡叢集在計劃內停機中避免不必要的故障切換過程,這部分在後續會繼續深入介紹。
Failover Cluster Instances(容錯移轉叢集執行個體):Failover Cluster Instance of SQL Server(FCI)在過去很長時間都是SQL Server的常用高可用技術。SQL Server FCI可以在叢集的任何可用節點之間進行容錯移轉。其唯一缺點就是儲存。由於需要使用共用儲存,所以儲存子系統就成了單點故障的風險點。FCI是一個安裝在WSFC上的SQL Server 執行個體,不管是預設執行個體還是具名執行個體。這個執行個體最少需要下面的資源:
- IP地址
- 網路名稱
- 共用硬碟(N個)
- SQL Server 服務
- SQL Server Agent服務
上面的資源對於單獨的執行個體而言也一樣,只是IP地址和網路名稱是來自於本機,硬碟也屬於本機,而FCI則不同。
所示,一個兩節點的FCI中,SQL Server執行個體會使用WSFC節點都能可用的共用儲存作為SQL Server的儲存。通常這次儲存是在SAN中划出來的LUNs,FCI的部署粗略分為兩步,後續將會深入介紹,這裡只做簡介:
- 在FCI的第一個節點上運行SQL Server安裝嚮導,並選擇“新的SQL Server 容錯移轉叢集安裝”。完成第一步之後,就可以開始第二步。
- 在WSFC的其他參與節點上運行SQL Server安裝嚮導並選擇“向SQL Server容錯移轉叢集添加節點”並完成安裝。
注意:雖然標準版限制了2節點的FCI,但是它不影響WSFC,僅在SQL Server層面限制。FCI有點像團隊接力過程。一個電腦節點運行這已群集的SQL Server應用程式及其配套資源,並向用戶端提供服務(持有接力棒)。一旦活動節點發生故障(接力棒掉了),夥伴節點會啟動並承接任務繼續(撿起接力棒)。
AlwaysOn Availability Groups(AlwaysOn可用組):
多年以來,容錯移轉叢集是SQL Server高可用的主要技術。當一個節點發生故障,其他節點會承接對用戶端的服務。AlwaysOn 繼承了WSFC技術,並提供更加彈性的高可用平台。但是群集是在執行個體層面運作,而AlwaysOn是在庫層面運作。從SQL 2012開始引入的AlwaysOn可用組技術,通過預定義一組資料庫集合(可用組)並複製到唯讀夥伴執行個體或副本中。每個節點都有AlwaysOn資料庫的同步複本,並且通過接聽程式進行訪問。AlwaysOn可用組(下稱AG)需要1到多個次要複本來存放高可用資料庫的副本。這些次要資料庫要麼是可讀的,要麼是不可讀的。也可以同步或非同步形式更新。非同步副本僅支援手動強制容錯移轉,而同步複本支援自動或手動容錯移轉。次要唯讀副本可以配置成只支援唯讀查詢,也可以使得次要複本成為成備份、維護操作的地方,從而減少主副本的壓力。AlwaysOn依賴WSFC的核心功能來完成AO(AlwaysOn)的高可用功能,但是相對於FCI,它又在下面部分有所區別:
- 共用硬碟
- 共用IP地址
- 共用網路名稱
- 共用的SQL Server和SQL Server代理資源
但是當使用了AlwaysOn接聽程式之後,會建立一個共用給AO組各個副本的IP地址和網路名稱資源。正如上面提到的,FCI的缺點是共用儲存,雖然有很多方式可以緩解這種單點故障的風險,但是通常都帶有明顯的開銷(不管是配置還是費用),並且通常很難配置和管理。另外前面也說了,FCI是遷移伺服器硬體,不提供單個或多個資料庫的遷移。需要搭配資料庫鏡像,但是鏡像是“單庫”、不可讀,AlwaysOn可用組是可以以多個庫為一個單位遷移,備庫可讀。AlwaysOn也使用SQL Server端點來進行執行個體之間的通訊。端點會在使用可用組部署嚮導過程中自動設定。也可以建立高可用接聽程式服務,用於接收入站串連,接聽程式包含唯一IP地址和唯一虛擬網路名。這是目前為止其中一個關於使得在組內資料庫高可用方面最大的改變之一。在建立AlwaysOn可用組過程中,會在WSFC中建立一個叢集角色,並且包含獨立資源。這個資源會在容錯移轉過程中同步轉移,並且標識主副本的位置。
AlwaysOn Listener(AlwaysOn接聽程式):
當配置了接聽程式之後,會在容錯移轉叢集中的應用程式\角色看到建立了一些資源:
接聽程式使用TCP連接埠接收入站串連,預設連到主副本(Primary replica)。如果配置了唯讀路由(read only routing),那麼指定使用“僅意向讀”的串連會被路由到次要複本而不是主副本。從很大程度上分流了對主副本的壓力。在AlwaysOn組發生容錯移轉時,已群集的應用程式及其資源會被轉移到群集的其他節點上。群集應用會跟蹤主副本的節點位置然後按需把叢集服務在底層節點中移動。在這個過程中,接聽程式由FCI\AlwaysOn的活動節點持有。
結論:
本節介紹了三種SQL Server相關的核心高可用技術。我們使用WSFC作為基礎,並在此之上部署FCI或者AlwaysOn可用組。接下來會介紹使用FCI作為SQL Server的高可用技術示範,然後就是AlwaysOn可用組搭建。下一節會介紹關於SQL Server高可用中儲存方面的內容。
術語表:
|
AO(AlwaysOn availability group) |
AlwaysOn 高可用組 |
|
FCI(Failover cluster instance of SQL Server) |
SQL Server容錯移轉叢集執行個體 |
|
TCP/IP |
傳輸控制通訊協定/網際網路互聯協議。 |
|
OS/NOS |
網路作業系統 |
|
WSFC(Windows Server failover cluster) |
Windows容錯移轉叢集 |
|
LAN(Local area network) |
區域網路 |
|
WAN(Wide area network) |
廣域網路 |
|
DNS(Domain name system) |
網域名稱系統 |
|
DHCP |
動態主機設定協定 |
|
IP Address |
IP地址 |
|
AD(Active Directory) |
Windows活動目錄 |
|
DR(Disaster recovery) |
災難恢複 |
|
SPF(Single point of failure) |
單點故障 |
|
SCSI(Small computer systems interface) |
小型電腦系統介面 |
|
iSCSI(Internet Small computer systems interface) |
互連網小型電腦系統介面
|
|
FC(Fibre channel) |
光纖 |
|
Replica |
副本,SQL Server AlwaysOn可用組中,參與到AlwaysOn的SQL Server執行個體 |
SQL Server AlwaysON從入門到進階(1)——何為AlwaysON?