VM のマシンとサイトのアフィニティルールを作成する
適用対象: Azure Local 2311.2 以降
Windows Admin Center または Windows PowerShell を使用すると、Azure ローカル インスタンス内の仮想マシン (VM) のアフィニティとアンチアフィニティの規則を簡単に作成できます。
Note
Azure Local で VM を作成して管理する推奨される方法は、Azure Arc コントロール プレーンを使用する方法です。 Azure Arc VM で使用できない機能が必要な場合のみ、以下で説明するメカニズムを使用して VM を管理します。
アフィニティは、2 つ以上のリソース グループまたはロール (VM など) 間のリレーションシップを確立し、それらを同じコンピューター、システム、またはサイトにまとめて保持するルールです。 アンチアフィニティは、指定された VM またはリソース グループを互いに区別するために使用されるという点で反対です。たとえば、2 つのドメイン コントローラーが別々のマシンに配置されたり、ディザスター リカバリー用の別のサイトに配置されたりします。
アフィニティ ルールとアンチアフィニティ ルールは、Azure での Availability Zones の使用と同様の方法で使用されます。 Azure では、VM を別々のゾーンに配置すること、相互に分離すること、または同じゾーンに配置するように Availability Zones を構成することができます。
アフィニティルールとアンチアフィニティルールを使用すると、クラスター化された VM は同じマシン上に留まるか、同じマシン上にまとめていないようにすることができます。 この方法では、VM をマシンから移動する唯一の方法は、手動で行うことです。 また、VHDX が存在するクラスター共有ボリューム (CSV) など、独自のストレージと一緒に VM を保持することもできます。
Windows Admin Center を使用する
Windows Admin Center を使用して、基本的なアフィニティおよびアンチアフィニティのルールを作成できます。
- Windows Admin Center ホームの [ すべての接続で、VM ルールを作成するマシンまたはシステムを選択します。
- [ツール] の [設定] を選択します。
- [設定] で [アフィニティ ルール] を選択し、[アフィニティ ルール] の下で [ルールの作成] を選択します。
- [ルール名] の下にルールの名前を入力します。
- [ルールの種類] で、[ 完全 (同じマシン) または Apart (異なるマシン) を選択して、VM を同じマシンまたは別のマシンに配置します。
- [ 適用対象で、この規則が適用される VM を選択します。 ルールにさらに VM を追加するには、[追加] ボタンを使用します。
- 完了したら、[ルール 作成を選択します。
- ルールを削除するには、ルールを選択し、 削除ルールを選択します。
Windows PowerShell を使用する
Windows PowerShell を使用すると、Windows Admin Center を使用した場合よりさらに複雑なルールを作成することができます。 通常、システム内のホスト コンピューターではなく、リモート コンピューターからルールを設定します。 このリモート コンピューターは、管理コンピューターと呼ばれます。
管理コンピューターから Windows PowerShell コマンドを実行する場合は、 -Name
または -Cluster
パラメーターを、管理しているシステムの名前と共に含めます。 必要に応じて、コンピューターの -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 ローカル マルチサイト システム上で SQL Server を実行している VM がそれぞれ 2 つあります。 各 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
ストレージ アフィニティ ルール
同じコンピューター上のクラスター共有ボリューム (CSV) に VM とその VHDX を保持することもできます。 これにより、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
これらの規則とその構成方法を確認するには、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
SQL1CSV1 SameNode {SQL1, <CSV1-GUID>} 1
SQL2CSV2 SameNode {SQL2, <CSV2-GUID>} 1
次のステップ
VM を管理する方法について確認します。 Windows Admin Center を使用 Azure Local 上の VM の管理を参照してください。