網管人 171 期 - 動手部署叢集集合彙整容錯資源組成大群



網管人雜誌

本文刊載於 網管人雜誌第 171 期 - 2020 年 4 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它,或透過城邦出版人讀者服務網進行訂閱。






本文目錄

前言
剖析叢集集合運作架構
          叢集集合運作架構和角色
          叢集集合的常見疑問
實戰叢集集合
          建立叢集集合
          加入成員叢集
          檢查叢集集合命名空間功能
          建立容錯網域
          建立可用性集合
          組態設定即時遷移權限
          部署 VM 虛擬主機至叢集集合
          跨成員叢集遷移 VM 虛擬主機
結語





前言

在現代化 IT 基礎架構中,企業和組織的資料中心架構,已經從過去單獨或多個各自運作的容錯移轉叢集,轉變成「軟體定義資料中心」(Software Defined Data Center,SDDC)的運作架構(如圖 1 所示)。因此,在 SDDC 軟體定義資料中心的架構下,多個容錯移轉叢集之間,不僅能夠互相支援達到負載平衡,並且當災難發生時更能夠達到容錯移轉的目的。

圖 1、在 SDDC 軟體定義資料中心架構下多個容錯移轉叢集運作架構示意圖

新一代雲端作業系統 Windows Server 2019,新增「叢集集合」(Cluster Set)容錯移轉叢集特色功能。簡單來說,叢集集合能夠將多個各自運作的容錯移轉叢集,透過「鬆散耦合」(Loosely-Coupled)的方式將資源彙整,也就是將多個容錯移轉叢集把 運算 / 儲存 / 網路 等硬體資源融合在一起,建構出一個採用「統一儲存命名空間」(Unified Storage Namespace)的超大型融合式容錯移轉叢集。

那麼,對於企業和組織來說使用叢集集合能夠帶來什麼好處? 首先,對於資料中心的維運人員來說,過去所有的管理經驗和工具都能持續使用無須變更,同時多個容錯移轉叢集雖然融合為一個超大型容錯移轉叢集,然而每個容錯移轉叢集仍然具備獨立性和彈性,舉例來說,管理人員倘若有兩個不同儲存資源的 S2D HCI 超融合容錯移轉叢集,其中一個 HCI 叢集採用 Hybrid(SSD+HDD)儲存資源,另一個 HCI 叢集採用 All-Flash(NVMe+SSD)儲存資源,那麼企業便可以將正式營運環境或需要大量儲存資源的 VM 虛擬主機,運作在採用 All-Flash 儲存資源的 HCI 叢集上,而第二線營運服務或測試用途的 VM 虛擬主機,則運作在 Hybrid 儲存資源的 HCI 叢集即可。

此外,採用叢集集合也能增加容錯移轉叢集的可用性,舉例來說,企業和組織建構一個具有 8 台節點主機的 HCI 叢集,資料保護則採用自動複寫三份的 3-Way Mirror 方式進行保護,然而當這個 HCI 叢集發生重大災難事件,導致 3 台節點主機發生故障無法服務,那麼仍然會導致 VM 虛擬主機無法運作並且遺失資料。

同樣的基礎架構運作環境,企業和組織分別建構兩個 HCI 叢集,並且每個 HCI 叢集具備 4 台節點主機,並且同樣採自動複寫三份的 3-Way Mirror 方式進行資料保護,當災難事件發生時,其中一個 HCI 叢集 2 台節點主機發生故障無法服務,另一個 HCI 叢集 1 台節點主機發生故障無法服務。此時,運作在兩個 HCI 叢集中的 VM 虛擬主機,仍然能夠持續正常運作並且不會發生任何資料遺失的情況。





剖析叢集集合運作架構

事實上,透過叢集集合的運作機制,能夠幫助企業和組織在自家地端資料中心內,輕鬆建構出類似 Azure 公有雲環境中,高可用性和叢集生命週期管理的「容錯網域」(Fault Domains)「可用性集合」(Availability Sets)機制(如圖 2 所示)。

圖 2、Azure 容錯網域和可用性集合機制運作架構示意圖



叢集集合運作架構和角色

在開始實戰演練叢集集合技術之前,我們必須先了解叢集集合的運作架構和角色(如圖 3 所示),以便稍後實作演練時能夠順利建構叢集集合,並且在後續發生問題時能夠進行故障排除作業。

  • 管理叢集: 在叢集集合運作架構中,擔任「管理叢集」(Management Cluster)角色的容錯移轉叢集,將會負責指揮和承載整個叢集集合的高可用性管理的工作任務,並且採用「向外延展檔案伺服器」(Scale-Out File Server,SOFS)機制,提供對外服務和統一的「叢集集合命名空間」(Cluster Set Namespace)。在一般情況下,擔任管理叢集角色的容錯移轉叢集,並不會運作任何 VM 虛擬主機的工作負載,除非發生重大災難事件或特殊情況。
  • 成員叢集: 擔任「成員叢集」(Member Cluster)角色的容錯移轉叢集,一般來說將會建構新一代的 S2D 超融合容錯移轉叢集,並且運作大量的 VM 虛擬主機或容器等工作負載,並且加入叢集集合運作架構中的「容錯網域」(Fault Domains)和「可用性集合」(Availability Sets)。
  • 叢集集合命名空間轉介至 SOFS: 由管理叢集透過 SOFS 機制所建構的唯一叢集集合命名空間,而這個 SOFS 轉介採用的 SMB 共享機制,為新一代 Windows Server 2019 雲端作業系統中,新增的「SimpleReferral」特色功能,讓 SMB Client 的存取作業能夠自動導向至適合的成員叢集。由於,這個特殊的 SOFS 為輕量級的轉介機制,所以不會參與 SMB I/O 路徑,這也是一般情況下管理叢集不會運作 VM 虛擬主機和容器等工作負載的主要原因。
  • 主要叢集集合: 在叢集集合運作架構中多個成員叢集彼此之間,將會透過機制自動選舉出「主要叢集集合」(Cluster Set Master,CS-Master)角色,並採用新式的叢集集合 WMI 提供者機制,與成員叢集進行互相通訊,以便因應管理叢集或成員叢集發生災難事件時執行復原程序。
  • 工作者叢集集合: 每個成員叢集都會運作一個「工作者叢集集合」(Cluster Set Worker,CS-Worker)執行個體,並且與 CS-Master 角色互相通訊,以便將成員叢集的硬體資源和 VM 虛擬主機存放資訊提供給 CS-Master 角色,以利後續運作 VM 虛擬主機和容器等工作負載。
  • 容錯網域: 一般來說,企業和組織的資料中心管理人員,會將同一組可能發生故障的成員叢集,指定為同一個「容錯網域」(Fault Domains),例如,這些成員叢集內的成員主機,共用同一個機櫃中的 PDU 機櫃排插,或連接至同一台網路交換器。但是,不管成員主機是否同為一個容錯網域,都可以加入可用性集合內。
  • 可用性集合: 透過「可用性集合」(Availability Sets)機制,為叢集集合內運作的 VM 虛擬主機或容器等工作負載提供高可用性機制。在微軟官方的最佳建議作法中,倘若要保持 VM 虛擬主機或容器的高可用性,應該將 VM 虛擬主機和容器等工作負載,運作在可用性集合內「不同」的兩個容錯網域當中,以避免其中一個容錯網域發生災難事件時,仍然能夠保持服務的高可用性。

圖 3、叢集集合運作架構示意圖



叢集集合的常見疑問

至此,雖然已經說明叢集集合的運作架構和角色,然而管理人員可能仍然對叢集集合有其它疑問,例如,叢集集合是否僅支援採用新式的 S2D 超融合容錯移轉叢集才能建構,倘若採用舊式共享儲存設備建構的 Hyper-V 容錯移轉叢集,是否也能加入叢集集合當中? 以下為條列,剛開始接觸叢集集合的管理人員,最常見疑問進行快問快答:

  • 叢集集合是否僅支援 S2D 超融合容錯移轉叢集? 當然不是! 管理人員可以在叢集集合中,同時混用傳統共享式儲存設備的 Hyper-V 容錯移轉叢集,以及新式的 S2D 超融合容錯移轉叢集。
  • 可以透過 SCVMM 管理叢集集合嗎? 不行! 目前,僅支援採用 PowerShell 或 WMI 管理和組態設定叢集集合,而 SCVMM 管理工具則尚未支援叢集集合。
  • 舊有的容錯移轉叢集能否加入叢集集合? 不行! 由於叢集集合技術是新一代 Windows Server 2019 的新增功能,因此不支援舊有的 Windows Server 2012 R2 或 2016 的容錯移轉叢集,直接加入至新式的叢集集合當中。但是,原來舊有的 Windows Server 2012 R2 或 2016 的容錯移轉叢集,可以透過滾動升級至 Windows Server 2019 的方式,然後加入至新式的叢集集合當中。
  • 在叢集集合架構中,能否僅擴充儲存空間或運算資源? 可以! 資料中心的管理人員,可以隨著企業和組織的工作負載需求,擴充成員叢集內的成員主機數量或硬體資源,或是新增成員叢集至容錯網域和可用性集合內,達到擴充儲存或運算資源的目的。
  • 叢集集合是否支援 VM 虛擬主機跨不同處理器遷移? 不行! 事實上,這並非是叢集集合的限制而是 Hyper-V 虛擬化平台的限制,倘若真的需要進行跨 CPU 處理器世代的遷移時,目前僅支援採用「快速遷移」(Quick Migration)搭配處理器相容模式達成。因此,建議叢集集合內的成員叢集伺服器,應該採用相同世代的 CPU 處理器,以便 VM 虛擬主機能夠在叢集集合內不同的成員叢集之間進行遷移。
  • 叢集集合是否支援 IPv6 網路環境?  可以! 跟傳統容錯移轉叢集一樣,都支援 IPv4 和 IPv6 網路環境。
  • 叢集集合對於 Active Directory 的要求是什麼? 所有成員叢集必須處於同一個 Active Directory 樹系當中。
  • 叢集集合支援多少台叢集節點? 在 Windows Server 2019 運作環境中,微軟已經建構並測試可支援至 64 台叢集節點。事實上,叢集集合可以支援更大的運作規模就像 Azure 公有雲一樣,倘若企業和組織需要超大型運作規模時,可以向微軟請求專業技術支援。
  • 叢集集合內的 S2D 成員叢集是否能匯整成更大的儲存資源? 不行! 目前的 S2D 技術,仍僅支援在單個叢集中運作,尚未支援將多個成員叢集的 S2D 儲存資源進行匯整。






實戰叢集集合

在本文實作環境中,總共建立三個容錯移轉叢集,分別是擔任管理叢集的「MGMT-Cluster」,以及兩個擔任成員叢集的「MBR-Cluster01、MBR-Cluster02」(如圖 4 所示),其中成員叢集採用 S2D 超融合建構,並且每個成員叢集中有兩台叢集節點主機。

圖 4、實作叢集集合運作環境



建立叢集集合

當叢集集合運作環境準備完成後,管理人員便可以執行 New-ClusterSet 指令建立叢集集合,在本文實作環境中,叢集集合的名稱為「CS-Master」,而屆時存取的叢集集合命名空間為「SOFS-ClusterSet」,至於負責管理叢集工作任務的容錯移轉叢集名稱為「MGMT-Cluster」,最後則是指定叢集集合名稱 CS-Master 使用的固定 IP 位址為「10.10.75.40」(如圖 5 所示)。
系統將會至 DC 網域控制站,建立 CS-Master、SOFS-ClusterSet 容錯移轉叢集電腦帳戶,以及新增 CS-Master 解析為 10.10.75.40 的 DNS 解析紀錄,至於 SOFS-ClusterSet 則直接採用 MGMT-Cluster 管理叢集的節點主機 IP 位址為 DNS 解析紀錄。
圖 5、建立叢集集合並指定命名空間和使用的固定 IP 位址

當叢集集合順利建立完成後,切換至 MGMT-Cluster 管理叢集中,可以發現系統已經自動新增「Infrastructure File Server」、「Scaleout Master」這兩個角色(如圖 6 所示)。

圖 6、管理叢集自動新增 Infrastructure File Server 和 Scaleout Master 角色



加入成員叢集

叢集集合中的管理叢集已經成形,接著請執行 Add-ClusterSetMember 指令將成員叢集加入,在本文實作環境中,兩個成員叢集的名稱為「MBR-Cluster01」、「MBR-Cluster02」,而屆時運作工作負載的 SOFS 名稱則為「MBR01-SOFS」、「MBR02-SOFS」(如圖 7 所示)。
系統將會至 DC 網域控制站,建立 MBR01-SOFS、MBR02-SOFS 容錯移轉叢集電腦帳戶,並直接採用成員叢集的節點主機 IP 位址為 DNS 解析紀錄。
圖 7、加入兩個成員叢集至叢集集合中

同樣的,當兩個成員叢集順利加入叢集集合之後,切換至 MBR-Cluster01 或 MBR-Cluster02 成員叢集時,可以發現系統已經自動新增「Infrastructure File Server」、「Scaleout Worker」這兩個角色(如圖 8 所示)。

圖 8、管理叢集自動新增 Infrastructure File Server 和 Scaleout Worker 角色

除了透過容錯移轉叢集管理員進行查看之外,後續管理人員也可以隨時以 PowerShell 指令查詢叢集集合運作環境。執行「Get-ClusterSet」指令,查詢叢集集合中管理叢集和 SOFS 叢集集合命名空間,執行「Get-ClusterSetMember」指令,查詢成員叢集的叢集名稱以及運作狀態,執行「Get-ClusterSetNode」指令,查詢成員叢集中節點主機名稱以及運作狀態(如圖 9 所示)。

圖 9、查詢叢集集合、管理叢集、成員叢集、節點主機等運作狀態



檢查叢集集合命名空間功能

叢集集合中的管理叢集和成員叢集已經建立完成,在開始下一步動作之前,先確認叢集集合命名空間的 SOFS 轉介機制是否運作正常,確保屆時 SMB Client 存取作業能夠自動導向至適合的成員叢集。在管理叢集中執行 Get-SmbShare 指令,即可看到叢集集合命名空間「SOFS-ClusterSet」,以及屆時轉介至成員叢集所對應的 SOFS 儲存路徑和儲存資源「MBR01-Volume」、「MBR02-Volume」(如圖 10 所示)。

圖 10、檢查叢集集合命名空間是否運作正常

除了透過指令檢查之外,管理人員也可以開啟檔案總管,透過 UNC 路徑的方式存取叢集集合命名空間「\\SOFS-ClusterSet」,同樣可以看到轉介至成員叢集所對應的 SOFS 儲存路徑和儲存資源「MBR01-Volume」、「MBR02-Volume」(如圖 11 所示)。

圖 11、透過 UNC 路徑的方式存取叢集集合命名空間



建立容錯網域

在本文實作環境中,兩個成員叢集分別部署在不同的機櫃,並且叢集節點採用不同的 PDU 機櫃排插,同時也連接至不同台網路交換器。因此,為了讓屆時運作於叢集集合中的工作負載具備高可用性,我們將兩個成員叢集指定為不同的容錯網域。

執行 New-ClusterSetFaultDomain 指令,指定 MBR-Cluster01 成員叢集的容錯網域名稱為「FD1」,指定 MBR-Cluster02 成員叢集的容錯網域名稱為「FD2」(如圖 12 所示)。
每個容錯網域中,皆可以包括多個成員叢集至其中。
圖 12、指定兩個成員叢集分別為不同的容錯網域

建立容錯網域後,透過 Get-ClusterSetFaultDomain 指令,即可查詢每個容錯網域包括哪些成員叢集,以及每個成員叢集的詳細資訊(如圖 13 所示)。

圖 13、查詢容錯網域包括哪些成員叢集和運作資訊



建立可用性集合

建立多個容錯網域之後,最後透過可用性集合的方式將多個容錯網域包括至其中,屆時即可為叢集集合內運作的 VM 虛擬主機或容器等工作負載提供高可用性機制。在本文實作環境中,執行 New-ClusterSetAvailabilitySet 指令,建立名稱為「AvailabilitySet」的可用性集合(如圖 14 所示)。

圖 14、建立可用性集合



組態設定即時遷移權限

為了因應叢集集合中,成員叢集工作負載進行負載平衡,或者發生災難事件時能夠進行「即時遷移」(Live Migration)。因此,必須為成員叢集中每台叢集節點主機的電腦帳戶,組態設定即時遷移權限,並且將管理叢集的電腦帳戶新增至每台叢集節點主機的本機 Administrators 群組成員中。

舉例來說,在 MBR-Cluster01 成員叢集中,共有兩台叢集節點主機 Node01、Node02,必須為電腦帳戶組態設定權限委派作業,信任另一個 MBR-Cluster02 成員叢集中,叢集節點主機 Node11、Node12,服務類型為「cifs」、「Microsoft Virtual System Migration Service」(如圖 15 所示)。同樣的,在 MBR-Cluster02 成員叢集中,叢集節點主機 Node11、Node12,必須為電腦帳戶組態設定權限委派作業,信任另一個 MBR-Cluster01 成員叢集中,叢集節點主機 Node01、Node02,服務類型為「cifs」、「Microsoft Virtual System Migration Service」。

圖 15、為叢集節點主機組態設定電腦帳戶權限委派作業

接著,將管理叢集的「MGMT-Cluster」電腦帳戶,新增至每台叢集節點主機「Node01,Node02,Node11,Node12」的本機 Administrators 群組成員中(如圖 16 所示)。

圖 16、將管理叢集電腦帳戶,新增至每台叢集節點主機本機 Administrators 群組成員中



部署 VM 虛擬主機至叢集集合

在叢集集合運作環境中建立 VM 虛擬主機時,可以透過檢查機制讓即將部署的 VM 虛擬主機,能夠在獲得最佳資源的叢集節點主機上運作,舉例來說,我們可以透過 Get-ClusterSetOptimalNodeForVM 指令,檢查目前叢集集合中,哪一台叢集節點主機最適合部署,資源需求「2 vCPU、8 GB vRAM、10% CPU 運算資源」的 VM 虛擬主機。如圖 17 所示,可以看到系統建議依據資源需求條件,VM 虛擬主機建議部署在「Node02」叢集節點主機。

圖 17、系統建議依據資源需求條件建議部署的叢集節點主機

獲得 VM 虛擬主機最佳部署建議後,我們在 MBR-Cluster01 的 Node02 叢集節點主機中,部署名稱為「CS-VM01」的 VM 虛擬主機,在 MBR-Cluster02 的 Node12 叢集節點主機中,部署名稱為「CS-VM02」的 VM 虛擬主機。然而,管理人員會發現部署的兩台 VM 虛擬主機,並非叢集集合類型的 VM 虛擬主機(如圖 18 所示)。

圖 18、VM 虛擬主機尚未註冊為叢集集合類型

管理人員必須執行 Register-ClusterSetVM 指令,將部署的 VM 虛擬主機註冊為叢集集合類型,並且將 VM 虛擬主機加入可用性集合當中,以便能夠受到可用性集合以及容錯網域的保護。當 VM 虛擬主機註冊為叢集集合類型後,由於部署的兩台 VM 虛擬主機在不同的容錯網域中,便可以看到處於不同的更新網域中(如圖 19 所示)。

圖 19、註冊 VM 虛擬主機為叢集集合並啟用可用性集合



跨成員叢集遷移 VM 虛擬主機

部署後的叢集集合 VM 虛擬主機,在同一個成員叢集中 VM 虛擬主機可以隨心所欲的進行各種遷移。然而,在跨成員叢集遷移 VM 虛擬主機的部份卻與過去不同,在傳統容錯移轉叢集運作環境中,跨叢集遷移 VM 虛擬主機時,必須移除 VM 虛擬主機叢集角色、即時遷移至不同叢集和節點主機、加入新的叢集中並新增角色,在叢集集合運作環境中則無須執行上述繁雜的步驟。

在叢集集合環境中的 VM 虛擬主機,只要執行 Move-ClusterSetVM 指令,並且指定欲遷移的 VM 虛擬主機名稱,以及目的地叢集節點主機名稱即可。如圖 20 所示,可以看到原本 CS-VM01 虛擬主機,運作於 MBR-Cluster01 的 Node02 節點主機中,遷移至 MBR-Cluster02 的 Node12 節點主機繼續運作。

圖 20、跨成員叢集遷移 VM 虛擬主機





結語

透過本文的深入剖析和實戰演練,相信讀者已經了解叢集集合的各項優點,透過叢集集合、容錯網域、可用性集合等運作機制,可以有效幫助 IT 管理人員,提供企業和組織更強大更彈性的基礎架構。