フォールト ドメインの認識

適用対象: Windows Server 2022、Azure Stack HCI バージョン 20H2、Windows Server 2019、Windows Server 2016

フェールオーバー クラスタリングでは、複数のサーバーが連携して高可用性 (言い換えれば、ノードのフォールト トレランス) を実現できます。 しかし、今日の企業では、インフラストラクチャからの可用性の向上が求めらされています。 クラウドのようなアップタイムを達成するには、シャーシの障害、ラックの停止、自然災害など、発生する可能性が極めて低い事態であっても対策を講じる必要があります。 そのため、シャーシ、ラック、およびサイトのフォールト トレランスWindows Server 2016フェールオーバー クラスタリングが導入されました。

障害ドメインとフォールト トレランス

障害ドメインとフォールト トレランスは、密接に関連する概念です。 障害ドメインとは、単一障害点を共有するハードウェア コンポーネントのセットです。 特定のレベルのフォールト トレランスを実現するには、そのレベルに複数の障害ドメインが必要です。 たとえば、ラックのフォールト トレランスを実現するには、サーバーとデータが複数のラックに分散されている必要があります。

この短いビデオでは、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 と概念的に似ています。 すべてのデータの複数コピーは、同期されて保持されます。ハードウェアで障害が発生して、1 つのコピーが失われると、回復性を復元するために、他のコピーが再びコピーされます。 回復性を最適化するには、別個の障害ドメイン内にコピーが保持される必要があります。

  • この ヘルス サービスドメインを使用して、より役に立つアラートを提供します。 各障害ドメインを場所のメタデータと関連付けることができます。これは後続のアラートに自動的に含まれるようになります。 これらの記述子は、運用や保守の担当者の役に立ちます。これらの記述子でハードウェアを明確にすることにより、エラーを減らすこともできます。

  • ストレッチ クラスタリングでは、ストレージ アフィニティに障害ドメインが使用されます。 ストレッチ クラスタリングにより、遠隔地のサーバーを一般的なクラスターに参加させることができます。 最高のパフォーマンスのためには、記憶域を提供するサーバーの近くにあるサーバーでアプリケーションまたは仮想マシンを実行する必要があります。 障害ドメインの認識により、このストレージ アフィニティが有効にされます。

障害ドメインのレベル

障害ドメインには、サイト、ラック、シャーシ、ノードという 4 つの標準的なレベルがあります。 ノードは自動的に検出されます。追加の各レベルはオプションです。 たとえば、展開でブレード サーバーを使用しない場合、シャーシ レベルは合理的でない可能性があります。

さまざまなレベルの障害ドメインの図

使用法

PowerShell または XML マークアップを使用して、障害ドメインを指定できます。 どちらの方法も同等であり、完全な機能が提供されます。

重要

障害ドメインを指定してから、可能であれば、記憶域スペース ダイレクトを有効にします。 これにより、シャーシまたはラックのフォールト トレランスのためにプール、階層、および設定 (回復性や列の数など) を準備する自動構成が可能になります。 プールとボリュームが作成された後に、障害ドメイン トポロジの変化に応じてデータが遡及的に移動することはありません。 記憶域スペース ダイレクトを有効にした後に、シャーシ間やラック間でノードを移動するには、Remove-ClusterNode -CleanUpDisks を使用して、最初にノードとそのドライブをプールから削除する必要があります。

PowerShell を使用した障害ドメインの定義

Windows Server 2016、障害ドメインを使用する次のコマンドレットが導入されています。

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

このショート ビデオでは、これらのコマンドレットの使用法を説明します。 この画像をクリックして、クラスター 障害ドメイン コマンドレットの使用方法に関する短いビデオを見る

Get-ClusterFaultDomain 使用して、現在の障害ドメイン トポロジを確認します。 これにより、クラスター内のすべてのノードと、作成したシャーシ、ラック、またはサイトが一覧表示されます。 -Type-Name といったパラメーターを使用して、フィルター処理できます。ただし、これらのパラメーターは必須ではありません。

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

New-ClusterFaultDomain 使用して、新しいシャーシ、ラック、またはサイトを作成します。 -Type パラメーターと -Name パラメーターは必須です。 に指定できる値 -TypeChassis Rack 、、、および です Site 。 には -Name 任意の文字列を指定できます。 (型 Node 障害ドメインの場合、名前は、自動的に設定される実際のノード名である必要があります)。

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

重要

Windowsサーバーは、作成した障害ドメインが実際の物理世界の何にも対応していないと検証できません。 (これは明らかなかもしれませんが、理解することが重要です)。物理的な世界でノードが 1 つのラックにすべて存在する場合、ソフトウェアで 2 つの障害ドメインを作成しても、ラックのフォールト トレランスが魅力的 -Type Rack に提供されません。 上記のコマンドレットを使用して、ハードウェアの実際の配置と一致するトポロジを作成する必要があります。

を使用 Set-ClusterFaultDomain して、1 つの障害ドメインを別の障害ドメインに移動します。 "親" と "子" という用語は、この入れ子の関係を説明するのに一般的に使用されます。 -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 の親である場合、server01.contoso.com は、現実の世界と同様に、親 (Rack A) の移動先 (Shanghai サイト) にすでに存在するため、別途 Shanghai サイトに移動する必要はありません。

の出力の 親子リレーションシップは、 列と 列 Get-ClusterFaultDomainParentName 表示 ChildrenNames されます。

を使用して、 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 マークアップの使用法を説明します。

この画像をクリックして、XML を使用して障害ドメインを指定する方法に関する短いビデオを見る

PowerShell で、 コマンドレットを実行します Get-ClusterFaultDomainXML 。 これにより、クラスターの現在の障害ドメインの詳細が XML として返されます。 これには、開始タグと終了 <Node> タグでラップされた、検出された が反映 <Topology> されます。

次のコマンドレットを実行して、この出力をファイルに保存します。

Get-ClusterFaultDomainXML | Out-File <Path>

ファイルを開き、および タグを追加して、サイト、ラック、シャーシ間でこれらのノードを分散する方法 <Site> <Rack> <Chassis> を指定します。 すべてのタグは、一意の Name で識別される必要があります。 ノードについては、既定で設定された名前をそのまま保持する必要があります。

重要

すべての追加タグはオプションですが、推移的な Site > Rack > Chassis > Node の階層に従って、適切に閉じられる必要があります。 名前に加えて、自由形式 Location="..."Description="..." 記述子を任意のタグに追加できます。

例: 2 つのサイトのそれぞれに 1 つのラック

<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>

例: 2 つのシャーシ、ブレード サーバー

<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

このガイドでは、2 つの例を示しますが、および タグは、デプロイの物理トポロジを反映するために、さまざまな追加の方法で混在および一致することができます。 <Site> <Rack> <Chassis> <Node> 上記の例は、これらのタグの柔軟性と、タグを明確にするための自由形式の Location 記述子の価値を説明しています。

省略可能: 場所と説明のメタデータ

任意の障害ドメインに 対して、 オプションの 場所 または説明のメタデータを指定できます。 この情報を指定すると、ヘルス サービスからのハードウェアのアラートにこの情報が含まれるようになります。 この短いビデオでは、このような記述子を追加する価値を示します。

クリックすると、障害ドメインに場所記述子を追加する価値を示す短いビデオが表示されます