故障轉移群集(Failover Cluster)可以提供一個高可用性應用程序或服務的網絡環境,本章將接受如何搭建iSCSI SAN文件服務器故障轉移群集。
故障轉移群集概述
我們可以將多台服務器組成一個故障轉移群集,這些服務器會協同工作以提高一個高可用性的應用程序或群集內每台服務器被稱為一個節點(Node),節點之間通過網絡硬件與軟件連接在一起對用戶提供服務,這個過程被稱為故障轉移,它讓用戶能夠不中斷的繼續享有服務器提供的服務。
天太熱,其他不高興寫,寫一些注意事項,然后再把實驗過程寫一下。
群集仲裁配置
當群集中的節點發生故障時,會由其他節點接手繼續提供服務。不過,當節點之間通信出現問題或太多節點發生故障時,群集就會停止服務,可是群集可以容忍多少個節點發生故障,這要由仲裁配置(Quorum Configuration)決定,Quorum中文就是法定數量的意思,也就是只要群集中仍然正常運行的節點數量達到法定數量,群集就會繼續提供服務,否則就停止服務。在停止服務期間,仍然正常的節點會繼續監聽故障節點是否恢復正常,一旦正常節點的數量恢復到法定數量時,群集就會繼續提供服務器。
在計算法定數量時,有的仲裁配置會用到仲裁磁盤,又稱為見證磁盤(Witness Disk)。仲裁配置分為以下幾種。
-
多數節點(Node Majority)
此種配置不會用到仲裁磁盤,而所謂多數節點就是正常節點數量占多數的情況下,群集才會提供服務,否則就停止服務。此種配置適用於奇數節點的群集。例如,5個節點的群集,其正常節點的數量必須至少3個,群集才會提供服務。
-
多數節點與磁盤(Node and Disk Majority)
適用於偶數節點的群集,它在計算法定數量時會將仲裁磁盤計算進來,例如,4個節點+1個仲裁磁盤的群集,可以將其視為5個節點的群集,此時正常節點的數量必須至少3個,群集才會服務。
-
多數節點與文件共享(Node and File Share Majority)
它和多數節點與磁盤類似,不過將仲裁磁盤改為共享文件夾內的文件。
-
沒有多數:只有磁盤(No Majority :Disk Only)
只要仲裁磁盤脫機·,群集就會停止提供服務(不建議采用)。
創建故障轉移群集實例演示
我們將通過下圖來演示如何搭建一個iSCSI SAN兩節點的文件服務器故障轉移群集,其仲裁配置默認為多數節點與磁盤。
軟硬件需求
要創建上圖的兩節點群集,其軟硬件配備必須符合以下要求。可以使用我以前所得vmware workstation來實驗,也可以用hyper-v來實驗,因為這個現在windows 2012的實驗沒有涉及虛擬化。
服務器
架設群集需要AD域,群集中的節點服務器必須隸屬於同一個域,並且應該扮演同樣的域角色,也就是都是成員服務器或都是域控。我們的環境域名contoso.com,左上角DC為域控,Node1和Node2兩個節點,最下面的服務器為目標服務器,其中將安裝Windows Server2012 內置的iSCSI目標服務器軟件,不需要加域。
為了讓群集能正常運行,因此群集中的兩台節點服務器應該都要配備相同或類似的硬件,而且需要安裝相同版本的操作系統,包含相同的硬件版本(32位,64位),同時也要安裝相同的SP與軟件更新。在windows Server 2012系統產品中只有Datacenter與Enterprise版本才具備群集功能,因此2個節點服務器都安裝了Windows Server2012 Datacenter。為了方便,域控與目標服務器也都安裝Datacenter。
網絡設置
圖中兩台節點服務器各有三塊網卡,分別連接到Public,Private和iSCSI網絡。
- Public網絡:兩台節點服務器各有一塊網卡連接到public網絡,並通過public網絡與域控通信,客戶端也通過public來連接節點服務器。
-
Private網絡:兩台節點服務器之間需要隨時監聽對方的心跳(Heartbeat)情況,以便得知對方心跳狀態,因此建議節點之間通過專用網絡進行通信。
為了提高故障恢復能力,我們會設置讓節點之間也可以通過前面的public網絡來通信,她在節點之間因故無法通過private網絡通信時,還可以選擇public網絡。
- iSCSI網絡:兩個節點各有一塊網卡連接到iSCSI網絡,並通過此網絡來連接目標服務器並訪問存儲媒體內的文件,這個網絡應該僅用於節點與目標服務器之間使用iSCSI協議來通信的專用網絡,請勿作其他用處。兩個節點用來連接iSCSI網絡的網卡應該相同,而且iSCSI網絡內應采用高速交換機(1G,10G,或更高)。
注:為了避免單一點故障而影響到群集的運行,建議在兩個節點與客戶端之間,兩個節點與目標服務器之間的通信管道采用適當的故障恢復措施,例如以節點與客戶端之間來說,可以在節點中利用兩塊網卡來連接到兩個網絡,而通過這兩個網絡都可以和客戶端通信。還可以采用具備teaming功能的網卡來提供故障恢復功能,例如可以在public網絡采用teaming網卡,但是不要再private網絡采用teaming網卡,以免因為延遲問題而影響節點之間的通信的實時性。此外,iSCSI並不支持teaming,因此iSCSI網絡不要使用teaming網卡。Teaming就是將一台計算機內的多塊網卡,通過驅動程序將其變成一塊虛擬網卡,其他計算機通過此虛擬網卡與這台計算機通信,但是數據實際上通過多塊物理網卡來傳送。Teaming網卡可以提高網絡傳輸速度,提供負載平衡與故障處理功能。Windows Server2012 已經內置網卡teaming功能。
目標服務器與存儲媒體
Windows Server 2012 要求存儲媒體必須遵照SCSI Primary Command-3 (SPC-3)的標准,尤其是必須支持SPC-3 Persistent Reservation(SPC-3持續保留)。我們要利用Windows Server 2012內置的iSCSI目標服務器來搭建iSCSI目標服務器,通過他創建的iSCSI磁盤支持上述的SPC-3要求。
本例為兩個節點的文件服務器群集,因此仲裁配置為多數節點與磁盤,此時除了存儲文件的文件磁盤外,還需要一個仲裁磁盤,這兩個磁盤要求如下:
- 必須是基本磁盤,不可以是動態磁盤。
- 仲裁磁盤必須被格式化為NTFS,但是文件磁盤並沒有強制規定,不過建議NTFS。
- 磁盤分區樣式可以是MBR或GPT。
- 本列中的仲裁磁盤和文件磁盤都直接使用本地計算機c:磁盤內的文件來模擬,文件名分別是C:\iSCSIVirtualDisks\Quorum.vhd和C:\iSCSIVirtualDisks\Files.vhd
iSCSI SAN兩節點文件服務器群集實例演示
我們按部就班的來說明如何搭建群集,以減少出錯的機會。
准備網絡環境與4台服務器
-
DC的網卡連接到public網絡,目標服務器的網卡連接到iSCSI網絡,兩個節點的3快網卡分別連接3個網絡。
- 目標服務器必須多准備兩個磁盤
-
在這4台服務器上安裝windows Server2012 datacenter
安裝完成后,分別改為DC1,Node1,Node2,Target。
- 建議更改兩台節點服務器內3塊網卡的連接名稱,以便於識別。
- 務必執行ping測試來確認服務器之間可以正常通信。
- 將DC升級為域控。
- 將Node1和Node2分別加入域。
- Node1與Node2防火牆例外開放遠程卷管理的流量,否則無法在群集內創建共享文件夾。
適當的節點設置
為了讓群集運行的更有效率,建議調整兩台節點服務器的設置。例如,為了讓兩台節點服務器能夠實時通過private網絡來監聽對方的心跳情況,因此應該避免在這個網絡上發送其他不相干的流量;還有iSCSI網絡僅用於節點與目標服務器之間使用iSCSI protocol來通信的專用網絡,因此也應該避免在這個網絡上發送其他不相干的流量。例如,我們最好將節點服務器上連接這兩個網絡的網絡連接的dns和wins流量禁用。
- 登陸Node1 打開private網卡去掉Microsoft網絡客戶端和Microsoft網絡的文件和打印機共享,只使用ipv4
注:Microsoft網絡客戶端用來訪問網絡上其他計算機內的共享文件與打印機;Microsoft網絡的文件和打印機共享讓網絡上其他計算機來訪問本地計算機上的共享文件與打印機。由於不需要通過private和iSCSI網絡與其他計算機有此類型的互動,因此可以禁用。
- 不要設置DNS
- 不勾選在DNS中注冊此連接的地址
- 取消Netbios有關的功能
- 對於iSCSI網卡也重復上面設置
- 由於private和iscsi網絡都有專用用途,因此我們需要設置所有其他類型的流量都優先使用public網絡。
- 繼續到Node2重復以上步驟
注:兩個節點需要安裝相同的更新程序,然而在此建議不要啟動自動更新功能,而是由系統管理員手動更新,以便能夠確保兩個節點擁有相同的更新程序。
目標服務器與存儲媒體的設置
- 到目標服務器上添加服務器角色,iSCSI目標服務器
- 單擊文件和存儲服務
- 新建iSCSI虛擬磁盤
- 選擇磁盤路徑
- 輸入磁盤名稱
- 輸入磁盤大小,我們實驗環境小點無所謂,有個說法,仲裁磁盤的大小和機器的物理內存一樣
- 我們需要將此虛擬磁盤分配給一個iSCSI目標,安裝在Node1和Node2上的iSCSI發起程序需要通過iSCSI目標來連接虛擬磁盤。由於目前尚未有任何iSCSI目標,因此必須新建。
- 輸入名稱
- 添加iSCSI發起程序
- 輸入Node1的iSCSI卡ip地址
注:類型處也可以選擇節點的DNS名稱,MAC地址或iSCSI發起程序的IQN,IQN必須先到節點Node處查詢(在啟動iSCSI發起程序后,位於設置標簽下的發起程序名處)。
- 添加Node2的網卡ip
- 出現驗證服務界面直接單擊下一步
注:可以要求iSCSI發起程序端(群集節點)必須經過驗證后才可以連接iSCSI虛擬磁盤,其方法為 勾選啟用驗證服務界面中的啟用CHAP,然后設置用戶名與密碼,在iSCSI發起程序端必須提供此處的用戶名與密碼才可以連接iSCSI虛擬磁盤。
反過來說,iSCSI發起程序端也可以驗證iSCSI目標,此時需要勾選啟用驗證服務界面中的啟用反向CHAP,然后輸入iSCSI發起程序端指定的用戶名與密碼。
- 確認設置無誤后單擊創建
- 完成后,上半部為創建的iSCSI虛擬磁盤,下半部為iSCSI目標
注:如果要更改iSCSI虛擬磁盤或iSCSI目標的設置,可以直接對着iSCSI虛擬磁盤或iSCSI目標單擊鼠標右鍵,然后再彈出的快捷菜單進行設置。
- 單擊上圖的新建iSCSI虛擬磁盤來新建另一塊虛擬磁盤
- 為磁盤命名
- 設置磁盤大小
- 分配給磁盤一個iSCSI目標,新建iSCSI目標
- 輸入名稱Files
- 添加Node1和Node2發起程序的ip與前面一樣
- 驗證配置無誤后創建
- 完成
注:iSCSI目標所使用的連接端口號為TCP 3260,在通過服務器管理器安裝iSCSI目標時,系統就已經自動在防火牆上開放了端口的流量。
讓節點服務器可以連接iSCSI虛擬磁盤
分別到兩台節點服務器上設置iSCSI發起程序,以便通過它來連接目標服務器的目標,然后通過目標訪問iSCSI虛擬磁盤。
- 先到節點Node1上管理工具-iSCSI發起程序,啟動iSCSI服務
- 單擊發現門戶
- 輸入目標服務器ip。默認連接端口3260
注:如果連接失敗,請確認目標服務器的Windows防火牆已經關閉或有例外開發iSCSI流量。
- 選擇目標標簽下要連接的目標后單擊鏈接
- 直接單擊確認
注:如果目標服務器端有要求身份驗證,單擊高級勾選啟用CHAP登陸,輸入用戶名和密碼。
- 下圖為iSCSI目標連接成功后的界面
- 重復上面步驟在連接另一塊磁盤,全部連接完成后入下圖
(前面上圖我們只看到一塊盤,后來檢查了下,發現quorum磁盤iSCSI目標中Node1的ip打錯,所以沒有顯示出來)
-
打開磁盤管理,將兩塊磁盤進行聯機
-
初始化磁盤
- 新建簡單卷,並分配盤符Q和F
- 可以直接在節點Node1上在兩塊磁盤內添加文件,以便測試是否可以正常訪問這兩個硬盤。
- 到節點服務器上重新執行上述步驟,但是不要執行從第8步開始的步驟,防止數據丟失。
在節點服務器上安裝故障轉移群集功能
分別到兩台節點服務器安裝故障轉移群集功能,添加功能-故障轉移群集
驗證群集設置
在開始創建群集之前,強烈建議執行群集驗證程序,他會檢查節點服務器,網絡與存儲媒體等是否符合群集的要求。
- 在Node1或Node2打開故障轉移群集管理器,單擊驗證配置
- 輸入選擇要驗證的節點Node1和Node2
- 選擇運行所有測試
- 確認要驗證的項目無誤后單擊下一步
- 如果完全驗證通過,就可以直接單擊完成按鈕開始創建群集
注:
- 如果驗證結果只有警告,可能不會影響群集的創建,例如,如果群集節點之間zhi通過一塊網卡進行通信(沒有通過多塊網卡或沒有綁定功能等),則驗證向導會列出警告信息,但是它不會影響群集的創建。
- 如果驗證結果顯示有其他未通過驗證的失敗事件,則請排除此問題后再重新驗證,否則所創建的群集可能無法正常運行。
創建群集
我們將利用群集創建向導來創建群集。
- 輸入加入群集的名稱和IP(它隸屬於Public網絡)。你將通過此IP地址來管理群集,群集名稱與ip會被記錄到DNS服務器內。
- 確認配置無誤后下一步
- 出現摘要界面單擊完成
- 下圖為完成后的界面,從界面中可以看出其仲裁配置自動被設置為多數節點與磁盤,因為此群集為偶數節點(兩個節點)。括號內Cluster Disk 1表示仲裁盤為群集中的第1個磁盤。
注:如果要改用其他磁盤來扮演仲裁磁盤:單擊群集右側的更多操作-配置群集仲裁設置。
配置兩節點的文件服務器故障轉移群集
配置群集網絡的用途
我們要調整群集內Public,Private,iSCSI網絡的用途。
- Public網絡:我們要讓客戶端可以通過此網絡與群集節點通信,也要讓群集節點之間可以通過此網絡進行通信(當作private網絡的備用網絡)。
- Private網絡:此網絡專供群集節點之間通信使用。
- iSCSI網絡:它是群集節點利用iSCSI通信協議與目標服務器通信的專用網絡,不可以作為群集節點之間通信的網絡,當然也不可以用來與客戶端通信。
- 打開群集管理器選擇網絡
注:如果在窗口中沒有看到要管理的群集,請單擊連接到群集,然后選擇要管理的群集。
- 對着代表Public的網絡單擊屬性-選擇允許此網絡上進行群集網絡通信。勾選復選框
- 對着代表Private的網絡勾選允許此網絡上進行群集網絡通信,不勾選復選框
- 對着代表iSCSI的網絡勾選不允許在此網絡上進行群集網絡通信
創建與測試兩節點的文件服務器故障轉移群集
在Windows防火牆開放所需流量
在創建文件服務器故障轉移群集之前,需要在兩台節點服務器的Windows防火牆開放遠程卷管理流量,否則無法在群集內創建共享文件夾。由於兩個節點之間通過Public網絡進行通信,因此首先我們需要找出Public網絡的網絡位置,然后只需要針對此網絡位置來開放遠程卷管理即可。
- 到Node1上打開網絡和共享中心,查看可知Public網絡的位置為域網絡
- 打開Windows防火牆,選擇允許應用或功能通過Windows防火牆
- 勾選遠程卷管理並勾選域
- 繼續到Node2上重復以上步驟
創建文件服務器故障轉移群集
兩個節點服務器需要先安裝文件服務器角色服務。
- 添加角色-文件和iSCSI服務-文件服務器
- 打開故障轉移群集-配置角色
- 選擇文件服務器
- 單擊下一步
- 為文件服務器命名,並設置ip地址(和創建群集一樣)
- 勾選要指派給文件服務器來使用的磁盤
- 確認無誤后單擊下一步
- 單擊完成
- 完成后的界面,可知服務器目前所有者是Node1,因此當客戶端連接時,有Node1提供服務
- 單擊文件服務器MyClusterFS右邊的添加文件共享
注:如果兩台節點服務器的Windows防火牆未關閉或沒有開發遠程卷管理流量,此時將無法添加共享文件夾。
- 單擊下一步
- 單擊下一步采用默認即可,他會將F:\shares內的指定文件夾設置為共享文件夾。你還可以自行制定文件夾路徑。
- 設置共享名,例如Database,系統會見F:\Shares\Database設置為共享文件夾。客戶端可以通過\\MyClusterFS\Database訪問此文件夾。
注:通過故障轉移群集管理器控制台來共享群集磁盤內的文件夾,不要通過其他方法,例如不要通過文件資源管理器。
- 直接單擊下一步
- 直接單擊下一步來采用默認權限設置(開放完全控制的權限給系統管理員,開發讀取寫入的權限給日頭用戶等)。如果要更改權限,可以單擊自定義權限按鈕。
- 出現確認選擇項目界面時直接單擊創建按鈕,完成后單擊關閉
- 下圖為完成后的界面
- 到客戶端計算機測試是否可以訪問文件服務器共享文件夾database內的文件,我們使用DC來訪問,並且創建文件夾,添加文件。
- 嘗試將節點移動到Node1.
注:如果將某個節點暫停,此節點當前擁有的角色仍然會繼續提供服務,但是你無法將由其他節點擁有的角色轉移到這個被暫停的節點。
- 可以進一步驗證群集的故障轉移功能:將當前的所有者關機,此時另一個節點會自動檢測到所有者已經下線,因此他會接受來對客戶端提供服務,因此在客戶端上還是可以訪問到剛才創建的文件。
注:如果要讓群集停止對客戶端提供服務-對着群集右鍵-其他操作-關閉群集,以后選擇啟動群集服務來重新啟動。
在群集中添加節點,移除節點與刪除群集
添加節點
- 通過單擊文件服務器MyClusterFS 右邊停止角色來暫停文件服務器
- 在新節點服務器上完成所有設置:例如安裝網卡,設置防火牆等。
- 到其他節點上通過故障轉移群集管理器驗證設置來驗證此行節點是否符合要求
- 完成驗證后,點擊添加節點添加
- 添加完成后,界面會提示現在的節點數量變成奇數(3個節點),所以應該更改仲裁配置(例如改為節點多數)。配置群集仲裁設置-使用默認設置讓系統自動決定仲裁配置。
- 單擊文件服務器MyClusterFS 右邊啟用角色來重新啟動服務器
移除節點
如果要從群集中移除某個節點服務器,先查看該節點是否為文件服務器的所有者,如果是,轉移到其他節點。
接着通過逐出來移除此節點
刪除群集
請按照以下步驟來刪除群集。
- 必須先刪除群集內的角色后才可以將群集刪除。
- 然后銷毀群集
- 群集刪除后,建議到域控上確認,確認computers容器內與群集名稱相同的計算機對象已經被禁用或不存在此對象,否則下一次重建相同名稱的群集時,或出現警告。