共用方式為


故障域感知

「容錯移轉叢集」可讓多部伺服器共同合作以提供高可用性,也可以提供節點容錯功能。 但是,現今的企業對其基礎結構需要比以往更高的可用性。 為了達到類似雲端的存留時間,即使是不太可能發生的項目 (例如,底座故障、機架中斷或天然災害) 都必須受到保護。 這就是為什麼 Windows Server 2016 中的「容錯移轉叢集」也導入了機箱、機架和站點容錯功能。

故障域和容錯性

容錯網域和容錯功能是密切相關的概念。 故障區域是由一組具有單一故障點的硬體元件組成。 要達到某個特定層級的容錯能力,您在該層級需要有多個故障域。 例如,若要進行機架容錯,您的伺服器和資料必須散佈於多個機架上。

這段短片將介紹 Windows Server 2016 中容錯網域的概觀

Windows Server 2019 中的錯誤域感知

雖然 Windows Server 2019 提供容錯網域感知功能,但此功能預設為關閉,且必須透過 Windows 登錄啟用。

若要在 Windows Server 2019 中啟用容錯網域感知,請移至 Windows 登錄並將 (Get-Cluster).AutoAssignNodeSite 登錄機碼設定為 1。

    (Get-Cluster).AutoAssignNodeSite=1

若要在 Windows 2019 中停用容錯網域感知,請移至 Windows 登錄並將 (Get-Cluster).AutoAssignNodeSite 登錄機碼設定為 0。

    (Get-Cluster).AutoAssignNodeSite=0

福利

  • 「儲存空間」(包括「儲存空間直接存取」) 會使用容錯網域充分保護資料安全。 「儲存空間」中的復原能力在概念上類似分散式的軟體定義 RAID。 所有資料的多個複本會保持同步,而且如果硬體故障且遺失了某一個複本,則會重新複製其他複本以還原復原能力。 若要達到最佳可行的復原能力,應該在不同的容錯網域中保留複本。

  • 健康服務利用故障域來提供更多有用的警示。 每個故障網域可以關聯至位置元資料,並自動包含在任何後續的警報中。 這些描述項可以協助操作或維護人員,藉由釐清硬體來減少錯誤。

  • 跨距叢集使用容錯網域來實現儲存體親和性。 延展式叢集可讓遠方伺服器加入常用的叢集。 為獲得最佳效能,應用程式或虛擬機器應該在鄰近可提供其儲存空間之伺服器的伺服器上執行。 容錯網域感知可啟用此儲存體同質。

故障網域層級

容錯網域有四個標準層級 - 站台、機架、底座和節點。 系統會自動探索節點,每個額外層級都是選擇性的。 例如,如果您的部署未使用刀鋒伺服器,則底座層級對您而言可能毫無意義。

容錯網域不同層級的圖表

使用方式

您可以使用 PowerShell 或 XML 標記來指定容錯網域。 這兩種方法是一樣的,而且都可以提供完整功能。

重要

盡可能在啟用「儲存空間直接存取」之前指定容錯網域。 這讓自動配置能夠準備集區、階層和設定,例如韌性和欄數,以確保底座或機架的容錯能力。 一旦建立集區和磁碟區之後,資料將不會回溯移動,以回應容錯網域拓撲的變更。 若要在啟用「儲存空間直接存取」後,在底座或機架間移動節點,您應該先使用 Remove-ClusterNode -CleanUpDisks 將節點及其磁碟機從集區中移除。

使用 PowerShell 定義容錯網域

Windows Server 2016 引入以下 cmdlets 來操作容錯網域:

  • Get-ClusterFaultDomain
  • Set-ClusterFaultDomain
  • New-ClusterFaultDomain
  • Remove-ClusterFaultDomain

這段短片示範使用叢集容錯網域 PowerShell 命令的用法。

使用 Get-ClusterFaultDomain 來查看目前的容錯網域拓撲。 這列出叢集中的所有節點,外加您所建立的任何底座、機架或站台。 您可以使用像是 -Type-Name 等參數來篩選,不過這些並非必要參數。

Get-ClusterFaultDomain
Get-ClusterFaultDomain -Type Rack
Get-ClusterFaultDomain -Name "server01.contoso.com"

使用 New-ClusterFaultDomain 來建立新的底座、機架或站台。 -Type-Name 是必要參數。 -Type 可能的值包括 ChassisRackSite-Name 可以是任何字串。 (對於 Node 類型的容錯網域,名稱必須是已自動設定的實際節點名稱)。

New-ClusterFaultDomain -Type Chassis -Name "Chassis 007"
New-ClusterFaultDomain -Type Rack -Name "Rack A"
New-ClusterFaultDomain -Type Site -Name "Shanghai"

重要

Windows Server 無法且不會驗證您所建立的任何容錯網域是否對應至真正實體世界中的任何項目。 (這或許顯而易懂,但請務必了解。) 如果在真實世界中,您的節點全都放在一個機架中,則在軟體中建立兩個 -Type Rack 容錯網域將無法提供機架容錯功能。 您必須負責確保使用這些 Cmdlet 所建立的拓撲符合硬體的實際排列方式。

使用 Set-ClusterFaultDomain 來將某個容錯網域移到另一個。 詞彙「父項」和「子項」常用來描述這個巢狀關聯性。 -Name-Parent 是必要參數。 在 -Name 中,提供要移動的容錯網域名稱;在 -Parent 中,提供目的地名稱。 若要一次移動多個容錯網域,請列出其名稱。

Set-ClusterFaultDomain -Name "server01.contoso.com" -Parent "Rack A"
Set-ClusterFaultDomain -Name "Rack A", "Rack B", "Rack C", "Rack D" -Parent "Shanghai"

重要

當容錯網域移動時,其子項也會跟著移動。 在上述範例中,如果 Rack A 是 server01.contoso.com 的父項,那麼不需要將後者個別移至上海站台,因為它的父項已經位於該處,所以它也已經位於該處,就像在實體世界一樣。

您可以在 Get-ClusterFaultDomain 的輸出中,在 ParentNameChildrenNames 欄看到父子關係。

您也可以使用 Set-ClusterFaultDomain 來修改容錯網域的其他特定屬性。 例如,您可以針對任何容錯域提供選擇性的 -Location-Description 中繼資料。 如已提供,此資訊將會納入來自「健康服務」的硬體警示中。 您也可以使用 -NewName 參數重新命名容錯網域。 請勿重新命名 Node 類型的容錯網域。

Set-ClusterFaultDomain -Name "Rack A" -Location "Building 34, Room 4010"
Set-ClusterFaultDomain -Type Node -Description "Contoso XYZ Server"
Set-ClusterFaultDomain -Name "Shanghai" -NewName "China Region"

使用 Remove-ClusterFaultDomain 來移除您已建立的底座、機架或站台。 -Name 是必要參數。 您無法移除包含子項的錯誤網域。首先,請先移除子項,或使用 Set-ClusterFaultDomain 將它們移出去。 若要將容錯網域移動到所有其他容錯網域以外的地方,請將其 -Parent 設定為空字串 ("")。 您無法移除 Node 類型的容錯網域。 若要一次移除多個容錯網域,請列出其名稱。

Set-ClusterFaultDomain -Name "server01.contoso.com" -Parent ""
Remove-ClusterFaultDomain -Name "Rack A"

以 XML 標記定義容錯網域

容錯網域可以使用類似 XML 的語法來指定。 我們建議您使用慣用的文字編輯器,例如 [Visual Studio Code] (可在這裡免費取得) 或 [記事本],來建立可儲存並重複使用的 XML 文件。

這段短片示範如何使用 XML 來在容錯叢集中指定容錯網域

在 PowerShell 中執行下列 Cmdlet:Get-ClusterFaultDomainXML。 這會以 XML 形式傳回叢集目前的容錯網域規格。 這反映出每個探索到的 <Node>,左右均以 <Topology> 標記括起來。

執行下列命令,將此輸出儲存至檔案。

Get-ClusterFaultDomainXML | Out-File <Path>

開啟檔案,然後新增 <Site><Rack><Chassis> 標記,以指定這些節點如何散佈於站台、機架和底座上。 每個標記都必須以唯一的 Name 來識別。 對於節點,您必須保留預設填入的節點名稱。

重要

雖然所有其他標記都是可選的,但它們必須遵循傳遞性的站台 > 機架 > 機殼 > 節點層級,而且必須正確閉合。 除了名稱以外,還可以將自由格式的 Location="..."Description="..." 描述項新增至任何標記。

範例︰兩個站台,每個一個機架

<Topology>
  <Site Name="SEA" Location="Contoso HQ, 123 Example St, Room 4010, Seattle">
    <Rack Name="A01" Location="Aisle A, Rack 01">
      <Node Name="Server01" Location="Rack Unit 33" />
      <Node Name="Server02" Location="Rack Unit 35" />
      <Node Name="Server03" Location="Rack Unit 37" />
    </Rack>
  </Site>
  <Site Name="NYC" Location="Regional Datacenter, 456 Example Ave, New York City">
    <Rack Name="B07" Location="Aisle B, Rack 07">
      <Node Name="Server04" Location="Rack Unit 20" />
      <Node Name="Server05" Location="Rack Unit 22" />
      <Node Name="Server06" Location="Rack Unit 24" />
    </Rack>
  </Site>
</Topology>

範例︰兩個機箱刀鋒伺服器

<Topology>
  <Rack Name="A01" Location="Contoso HQ, Room 4010, Aisle A, Rack 01">
    <Chassis Name="Chassis01" Location="Rack Unit 2 (Upper)" >
      <Node Name="Server01" Location="Left" />
      <Node Name="Server02" Location="Right" />
    </Chassis>
    <Chassis Name="Chassis02" Location="Rack Unit 6 (Lower)" >
      <Node Name="Server03" Location="Left" />
      <Node Name="Server04" Location="Right" />
    </Chassis>
  </Rack>
</Topology>

若要設定新的容錯網域規格,請儲存您的 XML,並在 PowerShell 中執行下列程式碼。

$xml = Get-Content <Path> | Out-String
Set-ClusterFaultDomainXML -XML $xml

本指南提供了兩個範例,但可以用多種方式來混搭 <Site><Rack><Chassis><Node> 標記,以反映無論是什麼的部署實體拓撲。 我們希望這些範例說明這些標記的彈性及自由格式位置描述項的值,以釐清它們。

(選填)位置和描述中繼資料

您可以針對任何故障域提供選擇性的 LocationDescription 中繼資料。 如已提供,此資訊將會納入來自「健康服務」的硬體警示中。

這段短片展示了在容錯網域中添加位置描述符的價值。