在Windows Server 2012 R2 DataCenter 環境中搭建集羣以前,首先要對Windows服務器故障轉移集羣(Windows Server Failover Cluster,簡稱WSFC)有基本的瞭解。WSFC必須部署在域管理環境中,由多臺服務器組成,每臺服務器稱做一個「結點」(Node),每一個結點上都運行了Windows服務器故障轉移集羣服務,整個集羣系統容許部分結點掉線、故障或損壞而不影響整個系統的正常運做。集羣自動檢測結點的健康狀態,一旦活躍結點發生異常,變爲不可用,則另外一臺結點服務器自動接管發生故障的服務器,升級爲活躍服務器,並繼續處理任務,一臺服務器接管發生故障的服務器的過程稱爲"故障轉移"。html
一,Windows故障轉移集羣的基本組成要素sql
結點和活躍結點(Active Node):組成集羣的每臺Server叫作一個結點,在同一時刻,只能有一個結點處理用戶的請求,提供服務,該結點叫作活躍結點;活躍結點是由集羣決定的,對用戶徹底透明;服務器
虛擬服務器(Virtual Server):集羣中的全部結點組成一個虛擬服務器,也就是說,從集羣的外部看,只能看到一個服務器,而看不到背後的一堆結點服務器,虛擬服務器擁有本身的機器名和IP地址,也稱做「虛擬網絡名」和「虛擬IP」,用戶經過虛擬網絡名和虛擬IP地址來訪問集羣,實際上,虛擬網絡名和虛擬IP都在DNS服務器上登記在冊,和物理服務器的網絡名和IP地址沒有任何區別;網絡
共享磁盤(Shared Array):全部須要在結點之間共享的資源,例如,SQL Server數據文件,錯誤日誌等,都被存儲在Shared Array上,不須要共享的文件則被存儲在每一個結點的本地磁盤(Local Disk)上;負載均衡
私有網絡和公共網絡:組成集羣的多個結點之間,經過私有網絡(Private Network)和公共網絡(Public Network)鏈接起來,結點之間經過私有網絡發送「心跳信號」來感知彼此是否工做正常;公共網絡用來被集羣外部的客戶端使用的網絡,外部客戶端經過公共網絡訪問集羣節點;ide
二,Windows 集羣提供的功能post
Windows集羣沒法提供負載均衡的能力,在任意時刻,集羣中只有一個結點可以處理用戶的請求,而其餘結點都處於空閒狀態,處理用戶請求的結點叫作活躍(Active Node),活躍結點是由集羣決定的,對用戶徹底透明。ui
1,健康檢測和自動故障轉移spa
AlwaysOn高可用技術利用Windows服務器故障轉移集羣的健康檢測和自動故障轉移特性,所以,AlwaysOn必須創建在WSFC之上:3d
健康檢測:結點之間,經過私有網絡互相發送心跳信號來感知彼此是否工做正常,這類信號稱做「心跳線」,一旦某臺服務器由於異常而沒法迴應信號,那麼剩餘的結點就認爲該結點「Dead」,把該結點從當前集羣排除;集羣的總體健康情況,是由集羣中結點的仲裁投票決定的。
自動故障轉移:以「心跳信號」監視各個結點服務器的健康情況,若是主結點(Primary Node)不能響應心跳信號,那麼另外一臺服務器自動升級爲Primary Node,繼續處理任務,故障轉移的過程不會對應用程序形成影響,用戶甚至察覺不到虛擬服務器內部的故障轉移;
WSFC提供的功能不少,可是,部署AlwaysOn只須要了解這兩個機制,對於WSFC的其餘應用,能夠暫時不用瞭解,下面的第三,四,五章節,分步驟搭建WSFC。
2,集羣的仲裁配置
仲裁投票(Quorum Voting):Quorum是仲裁,法定數量的意思,在仲裁模式下,仲裁配置決定集羣在正常提供服務時,可以容忍多少個結點發生故障。在集羣中的故障結點達到仲裁(Quorum)規定的數量以前,集羣可以繼續提供服務。
WSFC在集羣的結點之間進行健康檢測和仲裁投票,每個結點經過週期性地發送心跳信號,檢測其餘其餘結點的健康狀態,並和其餘結點共享健康數據,沒法響應心跳信號的結點被認爲處於異常狀態,集羣的全部健康結點都會很快知道該結點出現故障。
仲裁結點集合是投票結點和見證結點(Witness)結合,仲裁結果由多數(Majority)結點決定,集羣總體的健康狀態是由週期性的仲裁投票的結果決定的,WSFC根據仲裁投票的結果,執行自動故障轉移或者使集羣離線:若是仲裁結點集合(Quorum Node Set)的投票結果代表大多數結點是健康的,那麼集羣將進行故障轉移,繼續提供服務;若是投票結果是少數結點,那麼集羣將處於離線狀態。關於集羣的仲裁配置,請參考個人隨筆:《故障轉移集羣的仲裁》。
3,集羣的資源組
資源組:資源組是由一個或多個資源組成的組,故障轉移是以資源組爲單位發生的,在任什麼時候候,每一個資源組都僅屬於集羣中的一個結點,該結點是活躍結點。在配置資源組時,一個資源所依賴的其餘資源必須和該資源配置在同一個資源組中,跨資源組的依賴關係是不存在的。
活躍結點擁有集羣的資源組,可以處理客戶端的請求,也就是說,擁有資源的結點爲用戶提供服務。活躍結點也稱做主結點(Primary Node),集羣中的其餘結點稱做輔助結點(Secondary Nodes),在Primary Node出現故障時,集羣自動將資源轉移到其餘輔助結點。基於健康檢測的策略控制自動故障轉移的過程,故障轉移其實是資源擁有關係(Resource Ownership)的轉移。
三,安裝Windows Server Failover Clustering(WSFC)服務
集羣的每一個結點服務器都必須在同一域中,而且都安裝了Windows Server Failover Clustering(WSFC)服務,安裝的過程十分簡單,按照該章節的步驟,只需幾步就安裝成功。
1,打開服務器管理器(Server Manager),選擇「Add roles and features」
2,在添加功能嚮導中,勾選「Failover Clustering」,點擊「Next」,開始安裝
3,在「Confirmation」 Tab中,進行確認,點擊「Instanll」按鈕,進行安裝操做
四,配置故障轉移集羣
1,打開故障轉移機器管理器
安裝Failover Clustering 功能完成以後,打開Server Manager,在菜單Tools中選擇「FailOver Cluster Manager」,打開故障轉移機器管理器
2,在故障轉移管理器中,建立集羣
用戶在故障轉移管理器(Failover Cluster Manager)中,可以對已經建立成功的Failover Cluster進行管理,查看集羣的信息,監控集羣的狀態和驗證(Validate)集羣的配置等。在截圖的標記處,點擊Create Cluster,開始建立新的集羣。
3,添加集羣的結點服務器
輸入集羣的結點服務器名稱,節點服務器必須位於相同網段中,可以相互訪問;
4,驗證警告
若是須要對集羣的基本環境,包括硬件,進行WSFC需求驗證,能夠選擇「Yes」,本例選擇「No」,不驗證
5,定義「用於管理羣集的訪問點」
爲集羣命名,Cluster Name其實是虛擬服務器的網絡名;集羣的IP地址由系統自動配置,該IP地址其實是虛擬服務器的IP地址;
6,確認配置信息,點擊「Next」,建立新的集羣
五,配置集羣仲裁設置
當集羣中的結點發生故障時,會由其餘結點接手繼續提供服務,不過,當結點之間通訊出現問題,或大多數結點發生故障時,集羣就會中止服務,但是集羣能夠容忍多少個結點發生故障呢?這要由仲裁配置(Quorum Configuration)決定,仲裁配置使用多數原則,只要集羣中健康運行的結點數量達到仲裁規定的數量(多數結點投同意票),集羣就會繼續提供服務,不然集羣就中止提供服務。在中止提供服務期間,正常結點持續監控故障結點是否恢復正常,一旦正常結點的數量恢復到仲裁規定的數量,集羣就恢復正常,繼續提供服務。
1,返回到故障轉移集羣管理器,在「Failover Cluster Manage」下拉列表中展現建立成功的集羣
2, 右擊羣集節點,在上下文菜單中點擊「More Actions」,在擴展菜單中選擇「Configure Cluster Quorum Settings」爲該集羣配置仲裁
3,打開配置集羣仲裁的嚮導
4,選擇仲裁配置選項,使用默認的仲裁配置,由集羣決定仲裁管理選項
微軟推薦配置一個Quorum Witness,幫助實現集羣的最高可用性,若是對仲裁配置不是很瞭解的話,可使用默認選項,由集羣決定仲裁配置。
5,確認仲裁配置選項,點擊「Next」,開始配置集羣的仲裁設置
至此,Windows 服務器故障轉移集羣搭建完成,用戶能夠在WSFC的基礎之上,部署AlwaysOn高可用技術,建立可用性組(Availability Group)。
參考文檔:
Failover Cluster Step-by-Step Guide: Configuring the Quorum in a Failover Cluster
從0開始搭建SQL Server AlwaysOn 第二篇(配置故障轉移集羣)