VM のサーバーとサイトのアフィニティ ルールを作成する

適用対象: Azure Stack HCI バージョン 23H2 および 22H2

Windows Admin Center または Windows PowerShell のいずれかを使用すると、クラスター内の仮想マシン (VM) に対してアフィニティ ルールとアンチアフィニティ ルールを簡単に作成できます。

注意

Azure Stack HCI 23H2 で VM を作成および管理する推奨される方法は、 Azure Arc コントロール プレーンを使用することです。 Azure Arc VM で使用できない機能が必要な場合にのみ、以下で説明するメカニズムを使用して VM を管理します。

アフィニティとは、仮想マシン (VM) などの 2 つ以上のリソース グループまたはロール間に関係を確立し、それらを同じサーバー、クラスター、またはサイトにまとめて保持するためのルールです。 アンチアフィニティは、2 つのドメイン コントローラーが別々のサーバーに配置されたり、ディザスター リカバリーのために別のサイトに配置されたりするなど、指定された VM またはリソース グループを相互に離すために使用される点で反対です。

アフィニティ ルールとアンチアフィニティ ルールは、Azure での Availability Zones の使用と同様の方法で使用されます。 Azure では、VM を別々のゾーンに配置すること、相互に分離すること、または同じゾーンに配置するように Availability Zones を構成することができます。

アフィニティ ルールとアンチアフィニティ ルールを使用すると、クラスター化された VM を同じクラスター ノード内に配置するか、同じクラスター ノード内に一緒に配置されないようにすることができます。 この方法の場合、VM をノードから移動するには、手動で移動する必要があります。 また、VHDX が存在するクラスター共有ボリューム (CSV) など、独自のストレージと一緒に VM を保持することもできます。

アフィニティ ルールとアンチアフィニティ ルールを組み合わせることで、2 つのサイトにまたがってストレッチ クラスターを構成し、配置する必要があるサイトに VM を保持することもできます。

Windows Admin Center を使用する

Windows Admin Center を使用して、基本的なアフィニティおよびアンチアフィニティのルールを作成できます。

仮想マシンの画面

  1. Windows Admin Center のホームの [すべての接続] で、VM ルールを作成するサーバーまたはクラスターを選択します。
  2. [ツール][設定] を選択します。
  3. [設定][アフィニティ ルール] を選択し、 [アフィニティ ルール] の下で [ルールの作成] を選択します。
  4. [ルール名] の下にルールの名前を入力します。
  5. [ルールの種類] で、VM を同じサーバーに配置する場合は [Together (same server)](まとめて (同じサーバー)) 、別のサーバーに配置する場合は [Apart (different servers)](別々 (異なるサーバー)) を選択します。
  6. [ 適用対象] で、この規則が適用される VM を選択します。 ルールにさらに VM を追加するには、 [追加] ボタンを使用します。
  7. 完了したら、[ルールの 作成] を選択します。
  8. ルールを削除するには、ルールを選択し、[ ルールの削除] を選択します。

Windows PowerShell を使用する

Windows PowerShell を使用すると、Windows Admin Center を使用した場合よりさらに複雑なルールを作成することができます。 通常、ルールは、クラスター内のホスト サーバーではなく、リモート コンピューターから管理します。 このリモート コンピューターは、管理コンピューターと呼ばれます。

管理コンピューターからコマンドWindows PowerShell実行する場合は、管理しているクラスターの名前に または -Cluster パラメーターを含めます-Name。 必要に応じて、サーバー ノードの パラメーターを使用 -ComputerName する場合は、完全修飾ドメイン名 (FQDN) も指定する必要があります

新しい PowerShell コマンドレット

クラスターのアフィニティ ルールを作成するには、次の新しい PowerShell コマンドレットを使用します。

New-ClusterAffinityRule

新しいルールを作成するには、 New-ClusterAffinityRule コマンドレットを使用します。 このコマンドでは、ルールの名前とルールの種類を指定します。ここでは、次の場所を指定します。

-Name はルールの名前です

-RuleType 値は SameFaultDomain | SameNode | DifferentFaultDomain | DifferentNode です

例:

New-ClusterAffinityRule -Name Rule1 -RuleType SameFaultDomain

Set-ClusterAffinityRule

Set-ClusterAffinityRule コマンドレットは、ルールを有効または無効にするために使用されます。次のように指定します。

-Name は、有効または無効にするルールの名前です

-Enabled | Disabled を使用してルールを有効または無効にします

例:

Set-ClusterAffinityRule -Name Rule1 -Enabled

Get-ClusterAffinityRule

Get-ClusterAffinityRule コマンドレットは、指定されたルールとその種類を表示するために使用されます。 が指定されていない場合 -Name は、すべてのルールが一覧表示されます。

例:

Get-ClusterAffinityRule -Name Rule1

Add-ClusterGroupToAffinityRule

Add-ClusterGroupToAffinityRule コマンドレットは、特定のアフィニティ ルールに VM ロールまたはグループの名前を追加するために使用されます。次のように指定します。

-Groups は、ルールに追加するグループまたはロールの名前です

-Name は、追加するルールの名前です

例:

Add-ClusterGroupToAffinityRule -Groups Group1 -Name Rule1

Add-ClusterSharedVolumeToAffinityRule

Add-ClusterSharedVolumeToAffinityRule を使用すると、VHDX が存在するクラスター共有ボリュームと共に VM を維持できます。次のように指定します。

-ClusterSharedVolumes は、ルールに追加する CSV ディスクです

-Name は、追加するルールの名前です

例:

Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1

Remove-ClusterAffinityRule

Remove-ClusterAffinityRule を使用すると、指定したルールを削除できます。 -Name はルールの名前です。

例:

Remove-ClusterAffinityRule -Name Rule1

Remove-ClusterGroupFromAffinityRule

Remove-ClusterGroupFromAffinityRule 、特定のルールから VM グループまたはロールを削除しますが、ルールを無効にしたり削除したりすることはありません。次の場所では、

-Name はルールの名前です

-Groups は、ルールから削除するグループまたはロールです

例:

Remove-ClusterGroupFromAffinityRule -Name Rule1 -Groups Group1

Remove-ClusterSharedVolumeFromAffinityRule

コマンドレットは Remove-ClusterSharedVolumeFromAffinityRule 、特定のルールからクラスター共有ボリュームを削除するために使用されますが、ルールを無効にしたり削除したりすることはありません。次の場合:

-ClusterSharedVolumes は、ルールから削除する CSV ディスクです

-Name は、追加するルールの名前です

例:

Remove-ClusterSharedVolumeFromAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1

既存の PowerShell コマンドレット

新しいコマンドレットの登場により、いくつかの既存のコマンドレットに新しいスイッチも追加されました。

Move-ClusterGroup

新しい -IgnoreAffinityRule スイッチを使用すると、ルールを無視し、クラスター化されたリソース グループを別のクラスター ノードに移動することができます。 このコマンドレットの詳細については、「Move-ClusterGroup」を参照してください。

例:

Move-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1

Note

移動ルールが有効である (サポートされている) 場合、影響を受けるすべてのグループとロールも移動されます。 VM の移動がルールに違反するとわかっていても、1 回限り、一時的に必要な場合は、-IgnoreAffinityRule スイッチを使用して移動を許可します。 この場合、VM に対する違反の警告が表示されます。 その後、必要に応じてルールを有効に戻すことができます。

Start-ClusterGroup

新しい -IgnoreAffinityRule スイッチを使用すると、ルールを無視し、クラスター化されたリソース グループを現在の場所でオンラインにすることができます。 このコマンドレットの詳細については、「Start-ClusterGroup」を参照してください。

例:

Start-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1

アフィニティ ルールの例

アフィニティ ルールは、同じサーバー、クラスター、またはサイトにリソースを保持する "まとめる" ルールです。 アフィニティ ルールを設定するための一般的なシナリオをいくつか次に示します。

シナリオ 1

SQL サーバー VM と Web サーバー VM があるとします。 これら 2 つの VM は常に同じサイトに残る必要がありますが、必ずしもサイト内の同じクラスター ノード上にある必要はありません。 次に示すように、SameFaultDomain を使用すると、これを実行できます。

New-ClusterAffinityRule -Name WebData -Ruletype SameFaultDomain -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL1,WEB1 –Name WebData -Cluster Cluster1

Set-ClusterAffinityRule -Name WebData -Enabled 1 -Cluster Cluster1

この規則とその構成方法を確認するには、 コマンドレットを Get-ClusterAffinityRule 使用して出力を確認します。

Get-ClusterAffinityRule -Name WebData -Cluster Cluster1

Name        RuleType          Groups        Enabled
----        ---------         ------        -------
WebData     SameFaultDomain   {SQL1, WEB1}     1

シナリオ 2

VM が同じクラスター ノードに存在する必要があることを指定する点を除き、上記と同じシナリオを使用しましょう。 SameNode を使用すると、次のように設定できます。

New-ClusterAffinityRule -Name WebData1 -Ruletype SameNode -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL1,WEB1 –Name WebData1 -Cluster Cluster1

Set-ClusterAffinityRule -Name WebData1 -Enabled 1 -Cluster Cluster1

規則とその構成方法を確認するには、 コマンドレットを Get-ClusterAffinityRule 使用して出力を確認します。

Get-ClusterAffinityRule -Name WebData1 -Cluster Cluster1

Name    RuleType    Groups        Enabled
----    --------    ------        -------
DC      SameNode    {SQL1, WEB1}     1

アンチアフィニティ ルールの例

アンチアフィニティ ルールは、リソースを分離し、それらを異なるサーバー、クラスター、またはサイトに配置する "分割" ルールです。

シナリオ 1

同じ Azure Stack HCI マルチサイト クラスター上でそれぞれ SQL Server を実行する 2 つの VM があります。 各 VM には、大量のメモリ、CPU、ストレージ リソースが使用されます。 同じノード上の 2 つが終了すると、メモリ、CPU、およびストレージ サイクルの競合が生じるため、いずれかまたは両方でパフォーマンスの問題が発生する可能性があります。 ルールの種類として DifferentNode を指定したアンチアフィニティ ルールを使用すると、これらの VM は常に異なるクラスター ノードにとどまります。

この例のコマンドは次のようになります。

New-ClusterAffinityRule -Name SQL -Ruletype DifferentNode -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL1,SQL2 –Name SQL -Cluster Cluster1

Set-ClusterAffinityRule -Name SQL -Enabled 1 -Cluster Cluster1

規則とその構成方法を確認するには、 コマンドレットを Get-ClusterAffinityRule 使用して出力を確認します。

Get-ClusterAffinityRule -Name SQL -Cluster Cluster1

Name    RuleType        Groups        Enabled
----    -----------     -------       -------
SQL     DifferentNode   {SQL1, SQL2}     1

シナリオ 2

たとえば、2 つのサイト (障害ドメイン) を持つ Azure Stack HCI ストレッチ クラスターがあるとします。 別々のサイトに保持したいドメイン コントローラーが 2 つあります。 ルールの種類として DifferentFaultDomain を指定したアンチアフィニティ ルールを使用すると、これらのドメイン コントローラーは常に別のサイトにとどまります。 この例のコマンドは次のようになります。

New-ClusterAffinityRule -Name DC -Ruletype DifferentFaultDomain -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups DC1,DC2 –Name DC -Cluster Cluster1

Set-ClusterAffinityRule -Name DC -Enabled 1 -Cluster Cluster1

この規則とその構成方法を確認するには、 コマンドレットを Get-ClusterAffinityRule 使用して出力を確認します。

Get-ClusterAffinityRule -Name DC -Cluster Cluster1

Name    RuleType                Groups        Enabled
----    --------                -------       -------
DC      DifferentFaultDomain    {DC1, DC2}       1

結合されたルールの例

アフィニティ ルールとアンチアフィニティ ルールを組み合わせると、マルチサイト クラスター全体でさまざまな VM の組み合わせを簡単に構成できます。 このシナリオでは、各サイトに 3 つの VM があります。SQL Server (SQL)、Web サーバー (WEB)、およびドメイン コントローラー (DC) です。 組み合わせごとに、アフィニティ ルールと SameFaultDomain を使用して、すべてを同じサイトに保持することができます。 また、次に示すように、各サイトのドメイン コントローラーにアンチアフィニティ ルールと DifferentFaultDomain を設定して、ドメイン コントローラー VM を別々のサイトに保持することもできます。

New-ClusterAffinityRule -Name Site1Trio -Ruletype SameFaultDomain -Cluster Cluster1

New-ClusterAffinityRule -Name Site2Trio -Ruletype SameFaultDomain -Cluster Cluster1

New-ClusterAffinityRule -Name TrioApart -Ruletype DifferentFaultDomain -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL1,WEB1,DC1 –Name Site1Trio -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL2,WEB2,DC2 –Name Site2Trio -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups DC1,DC2 –Name TrioApart -Cluster Cluster1

Set-ClusterAffinityRule -Name Site1Trio -Enabled 1 -Cluster Cluster1

Set-ClusterAffinityRule -Name Site2Trio -Enabled 1 -Cluster Cluster1

Set-ClusterAffinityRule -Name TrioApart -Enabled 1 -Cluster Cluster1

ルールとその構成方法を確認するには、スイッチなしで コマンドレットをGet-ClusterAffinityRule-Name使用します。作成されたすべてのルールとその出力を確認できます。

Get-ClusterAffinityRule -Cluster Cluster1

Name        RuleType               Groups            Enabled
----        --------               ------            -------
Site1Trio   SameFaultDomain        {SQL1, WEB1, DC1}    1
Site2Trio   SameFaultDomain        {SQL2, WEB2, DC2}    1
TrioApart   DifferentFaultDomain   {DC1, DC2}           1

ストレージ アフィニティ ルール

VM とその VHDX を同じクラスター ノード上のクラスター共有ボリューム (CSV) に保持することもできます。 これにより、CSV リダイレクトが発生しないようになり、VM の起動または停止が遅くなる可能性があります。 以前のアフィニティとアンチアフィニティを組み合わせたシナリオを考慮して、SQL VM とクラスター共有ボリュームを同じクラスター ノード上に保持することができます。 これを行うには、次のコマンドを使用します。

New-ClusterAffinityRule -Name SQL1CSV1 -Ruletype SameNode -Cluster Cluster1

New-ClusterAffinityRule -Name SQL2CSV2 -Ruletype SameNode -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL1 –Name SQL1CSV1 -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL2 –Name SQL2CSV2 -Cluster Cluster1

Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name SQL1CSV1 -Cluster Cluster1

Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV2 -Name SQL2CSV2 -Cluster Cluster1

Set-ClusterAffinityRule -Name SQL1CSV1 -Enabled 1 -Cluster Cluster1

Set-ClusterAffinityRule -Name SQL2CSV2 -Enabled 1 -Cluster Cluster1

これらの規則とその構成方法を確認するには、-Name スイッチを使用せずに コマンドレットを使用 Get-ClusterAffinityRule し、出力を表示します。

Get-ClusterAffinityRule -Cluster Cluster1

Name        RuleType               Groups            Enabled
----        --------               ------            -------
Site1Trio   SameFaultDomain        {SQL1, WEB1, DC1}    1
Site2Trio   SameFaultDomain        {SQL2, WEB2, DC2}    1
TrioApart   DifferentFaultDomain   {DC1, DC2}           1
SQL1CSV1    SameNode               {SQL1, <CSV1-GUID>}  1
SQL2CSV2    SameNode               {SQL2, <CSV2-GUID>}  1

次のステップ

VM を管理する方法について確認します。 「Windows Admin Center を使用して Azure Stack HCI 上の VM を管理する」を参照してください。