永遠的階梯1級:什麽是“SQL Server AlwaysOn”?
By Perry Whittle,2016/02/24(首次發布:2014/09/24)該系列本文是“階梯系列:AlwaysOn的階梯”的一部分 AlwaysOn是一套復雜的技術,往往被誤解。在這個階梯中,您將學習AlwaysOn技術,它們如何適應高可用性堆棧,以及如何充分利用它們。 歡迎來到“SQL Server AlwaysOn的階梯”系列的第一個級別。在這篇1級文章中,我們將發現“AlwaysOn”,“故障轉移群集實例”(FCI)和“Windows Server故障轉移群集”技術。我們將詳細介紹每個細節並總結它們所在的高可用性堆棧的位置。這將為我們提供一個良好的基礎,這對上升的樓梯水平是必不可少的。較高級別的樓梯將研究AlwaysOn可用性組和FCI使用的所需基礎架構和不同的存儲要求和選項。 在每個樓梯層次之後,您將進一步了解
Windows服務器故障轉移群集 Windows Server故障轉移群集(WSFC)是位於所有Microsoft高可用性應用程序下的核心高可用性(HA)產品。 WSFC是Windows Server操作系統軟件套件的一部分。在創建SQL Server的故障轉移群集實例,AlwaysOn高可用性組或甚至Microsoft Exchange郵件服務器群集之前,您需要部署和配置WSFC。 Windows Server故障轉移群集提供了將多個計算機節點(物理和/或虛擬)組合起來為一組應用程序提供高可用性的能力。應用程序是服務器軟件,如SQL Server或Exchange,我們希望能夠在任何節點上運行。通過向客戶端呈現包括唯一IP地址和唯一計算機名稱或“虛擬網絡名稱”的虛擬接入點來使應用高度可用。此地址和虛擬名稱成為應用程序組中的資源,並在參與節點(如令牌)之間傳遞。活動計算機節點的嚴重硬件故障將導致在該節點上運行的組服務的丟失。群集服務將根據故障類型(硬件或軟件)自動嘗試重新啟動當前節點或夥伴節點上的組。 在較高級別上,客戶端訪問點詳細信息與任何磁盤和服務資源一起傳輸到故障轉移夥伴節點。群集實例的故障轉移會導致客戶端連接斷開
為了部署FCI,計算機節點必須使用共享存儲,這些存儲通常從SAN出現給每個節點。為了部署一個典型的AlwaysOn組,節點利用自己的本地存儲,而不是與其他集群夥伴共享。 盡管群集節點可能具有不同的硬件,但通常最好將節點間的硬件保持一致,以避免功能較弱的節點無法處理超出其功能的負載。但是,節點必須使用相同的操作系統補丁級別和網絡配置;在部署Windows Server故障轉移群集之前驗證您的配置時,這將變得清晰。 Windows Server版本(Windows 2003中的8個節點,Windows 2008中的16個節點和Windows 2012中的64個節點)的最大群集節點數量不同。 部署強大的Windows Server故障轉移群集需要仔細的設計,支持的硬件和相應版本的Windows Server操作系統。地理分散的集群(跨多個WAN的集群)進一步增加了所需的設計和規劃的數量,並顯著增加了成本。 知道WSFC僅提供故障轉移夥伴功能很重要。應用程序在節點之間沒有負載平衡或擴展。每個服務都運行在一個且只有一個節點上。 通常,在大型多節點群集中,您可以跨Windows Server故障轉移群集節點的一個子集安裝群集應用程序。在所有節點上安裝應用程序的錯誤都可能導致一些不希望的故障轉移,我們將在後面看到,也違反了AlwaysOn組限制策略,這可以確保所有AlwaysOn實例駐留在集群中的不同節點上。 WSFC需要某種形式的中介來控制群集資源所有權。此仲裁以Cluster Quorum的形式提供。自Windows 2003 SP1以來,此Quorum采用節點投票系統的形式,維持Quorum所需的多數選票。您還可以使用磁盤形式的其他仲裁資源進行本地化群集,也可以使用多站點群集的遠程文件共享。從Windows Server 2012開始,法定人數使用動態節點權重配置在計劃中斷期間動態平衡群集投票,以防止不必要的故障轉移。我們將在未來的層面更詳細地討論法定人數。
故障轉移群集實例 SQL Server的故障轉移群集實例一直是SQL Server產品中流行的高可用性技術。 SQL Server高度可用的實例是集群化的,以減輕任何節點硬件故障和任何潛在的軟件故障。 這裏唯一的薄弱環節是存儲; 存儲子系統成為單點故障。 故障轉移群集實例是默認或命名的SQL Server實例,已作為群集應用程序安裝到WSFC上。 群集應用程序通常具有以下資源: ? IP地址 ? 網絡名字 ?共享磁盤 ?SQL Server服務 ?SQL Server代理服務 獨立實例共享相同的基本要求,不同之處在於,使用獨立實例時,IP地址和網絡名稱將從計算機節點本身獲取,而磁盤存儲由計算機的本地磁盤資源提供。
參考上面的圖,我們看到了具有單個FCI的2節點集群的典型視圖。 SQL Server的群集實例將使用已呈現給WSFC節點的任何共享存儲。通常這種存儲將采取從SAN提供的LUN的形式。 SQL Server的FCI部署在一個兩步的過程中,這個過程將在稍後的階梯中介紹。現在,下面是部署SQL Server的故障轉移群集實例的兩步過程的基本概述: 1.在參與FCI的第一臺計算機節點上啟動“新建SQL Server故障轉移群集安裝”向導。一旦完成並成功完成,您就可以進入第二階段了。 2.在希望加入新的SQL Server FCI的WSFC中的任何計算機節點上啟動“將節點添加到SQL Server故障轉移群集”向導。 註意:盡管標準版將FCI限制為2個節點,但並不指定有多少節點具有Windows群集的成員資格(您可能有任何數字,直到操作系統的最大值)。該限制是在SQL Server安裝程序級別執行的。 FCI有點像一個跑道接力隊的傳球過程;計算機節點擁有群集的SQL Server應用程序及其資源,然後為客戶端提供對SQL Server服務(持有接力棒)的訪問權限。當活動的計算機節點失敗(下落接力棒)時,合作夥伴節點進入並獲得集群應用程序及其資源的所有權(接上接力棒)。
AlwaysOn可用性組 多年來,故障轉移群集一直是為SQL Server提供高可用性的主要方法。當一個節點失敗時,另一個節點接管向客戶端提供SQL Server服務。 AlwaysOn與Windows Server故障轉移群集技術集成,提供更具彈性的高可用性平臺。 盡管群集在實例級別上工作,但AlwaysOn在數據庫級別配置。 AlwaysOn可用性組是SQL Server 2012中引入的新技術,用於將預定義的數據庫組復制到AlwaysOn中已知的一組只讀夥伴實例或副本。多個節點各自托管一個AlwaysOn數據庫的同步副本,並且最好通過監聽器的配置來提供訪問(稍後會詳細介紹)。 AlwaysOn可用性組需要一個或多個輔助副本來托管高可用性數據庫的副本。這些輔助數據庫可能是可讀或不可讀的。它們也可以以異步或同步的方式進行更新。異步副本僅支持手動強制故障轉移,而同步副本支持自動或手動故障轉移。 次要只讀副本可以配置為響應只讀查詢,您也可以將目標的次要目標作為備份/維護操作以減輕主數據庫的壓力。這種主從關系也是可逆的,以確保真正的高可用性。任何經過適當配置的只讀夥伴在系統發生故障時都可能承擔主角色。 AlwaysOn依靠WSFC核心功能實現AO提供的高可用性,但不需要與FCI相關的以下任何共享資源。 ?共享磁盤 ?共享IP地址 ?共享網絡名稱 共享的SQL Server和SQL Server代理資源 這個共享資源規則有一個例外。創建AlwaysOn組偵聽器時,將創建將由AO組副本共享的IP地址和網絡名稱資源。 正如我們所發現的,故障轉移群集實例鏈中的薄弱環節是共享存儲。這裏有很多方法可以實現冗余,但是通常成本很高,而且安裝和維護通常很困難。當然,如前所述,故障轉移群集實例只能緩解服務器硬件。它不提供單個或甚至多個輔助數據庫。我們在SQL Server 2012之前的SQL Server版本中有數據庫鏡像,但這些僅為單個不可讀的輔助數據庫提供了範圍。 AlwaysOn仍然使用熟悉的SQL Server端點作為實例通信。端點在使用可用性組部署向導時自動配置。向導驅動的部署提供了最簡單的部署路徑,而手動部署需要大量的手動交互。盡管如此,一個基本的AlwaysOn組配置仍然非常容易部署和配置,並提供以前不可用的HA級別,而無需采用復雜的功能集成級別。 您也可以創建一個高可用的偵聽器服務,您將使用該服務來接受到可用性組的傳入連接。監聽器由一個唯一的IP地址和一個唯一的虛擬網絡名稱組成。這是使組內數據庫高度可用的最重大變化之一。 在創建AlwaysOn可用性組期間,將在Windows Server故障轉移群集內創建一個群集角色,並包含一個資源。此資源在AlwaysOn組故障轉移期間在夥伴節點之間進行故障轉移,並標識AlwaysOn組的主副本。
AlwaysOn聽眾監聽程序在配置時將作為資源創建,並駐留在AlwaysOn可用性組的故障轉移群集應用程序角色中。資源是: ?虛擬IP地址 ?虛擬網絡名稱 偵聽器使用TCP端口來接受傳入的連接,並默認連接到主副本。當只讀路由已配置時,指向只讀意向連接的監聽程序的連接將被路由到輔助夥伴而不是主要副本。這是我們可以減輕主副本負載的另一種方式。 在AlwaysOn組的故障轉移期間,群集中的節點之間的群集應用程序及其資源將發生故障轉移。群集應用程序的節點位置跟??蹤主副本及其底層節點,並根據需要在群集中移動。在主副本是SQL Server的群集實例的情況下,偵聽器由該FCI \副本的主動節點擁有。 結論 這就是階梯1的結尾,它提供了3個核心技術的快速介紹,用來使我們的SQL Server實例及其對象高度可用。在我們的高可用性堆棧中,我們將WSFC作為基本級別,這是安裝FCI或AlwaysOn可用性組的主要要求。接下來,我們有了位於WSFC頂部的FCI,它依靠群集來服務和保護SQL Server實例。最後,我們有AlwaysOn組,坐在SQL Server的獨立實例和SQL服務器的故障轉移集群實例之上。 在2級中,我們將查看SQL Server High Availability中可用的存儲類型及其典型用法。這將幫助您了解系列中未來的階梯級別。
Glossary
AO |
AlwaysOn availability group |
FCI |
Failover cluster instance of SQL Server |
TCPIP |
Transport control protocol/internet protocol. The network protocol used by Microsoft client networks |
OS/NOS |
Network Operating system |
WSFC |
Windows Server failover cluster |
LAN |
Local area network |
WAN |
Wide area network |
DNS |
Domain name system |
DHCP |
Dynamic host configuration protocol, automatically assigns IP addresses to network computers |
IP Address |
a 32 bit (IPV4), unique address assigned to a computer object |
AD |
Active Directory, directory services. The Microsoft technology used for object management in Windows domains |
DR |
Disaster recovery |
SPF |
Single point of failure |
SCSI |
Small computer systems interface |
iSCSI |
Internet Small computer systems interface |
FC |
Fibre channel |
Replica |
The terminology used in SQL Server AlwaysOn Availability Groups to refer to an instance of SQL Server which is part of a particular AlwaysOn group |
永遠的階梯1級:什麽是“SQL Server AlwaysOn”?