Windows PowerShell を使用してAzure Stack HCI クラスターを作成する

適用対象: Azure Stack HCI バージョン 22H2

Important

Azure Stack HCI が Azure Local の一部になりました。 ただし、古いバージョンの Azure Stack HCI (例: 22H2) は HCI Azure Stack参照し続け、名前の変更は反映されません。 詳細はこちらでご確認ください

Warning

この記事で説明するデプロイ手順は、HCI バージョン 22H2 Azure Stack以前のバージョンに適用されます。 新しいデプロイについては、一般公開されている最新バージョンのAzure Localを使用することをお勧めします。「Azure Local展開について」を参照してください。

この記事では、Windows PowerShell を使用して、記憶域スペース ダイレクトを使用する Azure Stack HCI ハイパーコンバージド クラスターを作成する方法について説明します。 Windows Admin Centerでクラスター作成ウィザードを使用してクラスターを作成する場合は、「Windows Admin Centerを使用してクラスターを作成する」を参照してください。

Note

Azure Stack HCI 21H2 の単一サーバー インストールを実行している場合は、PowerShell を使用してクラスターを作成します。

次の 2 つのクラスターの種類から選択できます。

  • 1 つまたは 2 つのサーバー ノードを持つ Standard クラスター。すべて 1 つのサイトに存在します。
  • 2 つのサイトにまたがるサーバー ノードが少なくとも 4 つあり、サイトごとに 2 つのノードを持つストレッチ クラスター。

単一サーバー シナリオの場合は、1 台のサーバーに対して同じ手順を実行します。

Note

ストレッチ クラスターは、1 つのサーバー構成ではサポートされていません。

この記事では、Server1、Server2、Server3、Server4 という名前の 4 つのサーバー ノードで構成される Cluster1 という名前のクラスターの例を作成します。

ストレッチ クラスター シナリオでは、名前として ClusterS1 を使用し、サイト Site1 と Site2 にまたがってストレッチされた同じ 4 つのサーバー ノードを使用します。

ストレッチ クラスターの詳細については、「 ストレッチ クラスターの概要」を参照してください。

始める前の準備

開始する前に、次のことを確認してください。

Windows PowerShell を使用する

ホスト サーバー上の RDP セッションで PowerShell をローカルで実行することも、管理コンピューターからリモートで PowerShell を実行することもできます。 この記事では、リモート オプションについて説明します。

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

Hyper-V およびフェールオーバー クラスタリング用のリモート サーバー管理ツール (RSAT) コマンドレットと PowerShell モジュールが必要です。 管理コンピューターの PowerShell セッションでコマンドレットとモジュールをまだ使用できない場合は、次のコマンドを使用して追加できます: Add-WindowsFeature RSAT-Clustering-PowerShell

手順 1: サーバーを設定する

まず、各サーバーに接続し、それらをドメイン (管理コンピューターと同じドメイン) に参加させ、必要な役割と機能をインストールします。

手順 1.1: サーバーに接続する

サーバーに接続するには、最初にネットワーク接続を持ち、同じドメインまたは完全に信頼されたドメインに参加し、サーバーに対するローカル管理アクセス許可を持っている必要があります。

PowerShell を開き、完全修飾ドメイン名または接続先のサーバーの IP アドレスを使用します。 各サーバーで次のコマンドを実行すると、パスワードの入力を求められます。

この例では、サーバーの名前が Server1、Server2、Server3、および Server4 であると仮定します。

Enter-PSSession -ComputerName "Server1" -Credential "Server1\Administrator"

同じことを行う別の例を次に示します。

$myServer1 = "Server1"
$user = "$myServer1\Administrator"

Enter-PSSession -ComputerName $myServer1 -Credential $user

Tip

管理 PC から PowerShell コマンドを実行すると、 WinRM が要求を処理できない などのエラーが発生する場合があります。これを解決するには、PowerShell を使用して、各サーバーを管理コンピューターの信頼済みホストの一覧に追加します。 この一覧では、 Server* などのワイルドカードがサポートされています。

Set-Item WSMAN:\Localhost\Client\TrustedHosts -Value Server1 -Force

信頼されたホストの一覧を表示するには、「Get-Item WSMAN:\Localhost\Client\TrustedHosts」と入力します。

一覧を空にするには、「Clear-Item WSMAN:\Localhost\Client\TrustedHost」と入力します。

手順 1.2: ドメインに参加し、ドメイン アカウントを追加する

前の手順で、各サーバー ノードにローカル管理者アカウント <ServerName>\Administrator を使用して接続しました。

続行するには、サーバーをドメインに参加させ、すべてのサーバーのローカル Administrators グループにあるドメイン アカウントを使用する必要があります。

Enter-PSSession コマンドレットを使用して各サーバーに接続し、サーバー名、ドメイン名、ドメイン資格情報に置き換えて次のコマンドレットを実行します。

Add-Computer -NewName "Server1" -DomainName "contoso.com" -Credential "Contoso\User" -Restart -Force  

管理者アカウントが Domain Admins グループのメンバーでない場合は、各サーバーのローカル Administrators グループに管理者アカウントを追加します。または、管理者に使用するグループを追加します。 これを行うには、次のコマンドを使用できます。

Add-LocalGroupMember -Group "Administrators" -Member "king@contoso.local"

手順 1.3: 役割と機能をインストールする

次の手順では、クラスターのすべてのサーバーに必要なWindowsの役割と機能をインストールします。 インストールする役割は次のとおりです。

  • BitLocker
  • データ センター ブリッジング
  • フェールオーバー クラスタリング
  • ファイル サーバー
  • FS-Data-Deduplication モジュール
  • Hyper-V
  • Hyper-V PowerShell
  • RSAT-Clustering-PowerShell モジュール
  • RSAT-AD-PowerShell モジュール
  • NetworkATC
  • SMB 帯域幅の制限
  • 記憶域レプリカ (ストレッチ クラスター用)

各サーバーに対して次のコマンドを使用します (リモート デスクトップ経由で接続している場合は、ここで以降のコマンドで-ComputerNameパラメーターを省略します)。

Install-WindowsFeature -ComputerName "Server1" -Name "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "FS-SMBBW", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "Storage-Replica" -IncludeAllSubFeature -IncludeManagementTools

クラスター内のすべてのサーバーでコマンドを同時に実行するには、次のスクリプトを使用して、環境に合わせて変数の一覧を最初に変更します。

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"
$FeatureList = "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "FS-SMBBW", "Storage-Replica"

# This part runs the Install-WindowsFeature cmdlet on all servers in $ServerList, passing the list of features in $FeatureList.
Invoke-Command ($ServerList) {
    Install-WindowsFeature -Name $Using:Featurelist -IncludeAllSubFeature -IncludeManagementTools
}

次に、すべてのサーバーを再起動します。

$ServerList = "Server1", "Server2", "Server3", "Server4"
Restart-Computer -ComputerName $ServerList -WSManAuthentication Kerberos

手順 2: クラスターのセットアップの準備

次に、サーバーがクラスタリングの準備ができていることを確認します。

サニティ チェックとして、次のコマンドを実行して、サーバーがまだクラスターに属していないことを確認することを検討してください。

Get-ClusterNodeを使用して、すべてのノードを表示します。

Get-ClusterNode

Get-ClusterResourceを使用して、すべてのクラスター ノードを表示します。

Get-ClusterResource

Get-ClusterNetworkを使用して、すべてのクラスター ネットワークを表示します。

Get-ClusterNetwork

ステップ 2.1: ドライブを準備します

記憶域スペース ダイレクトを有効にする前に、永続ドライブが空であることを確認します。 次のスクリプトを実行して、古いパーティションやその他のデータを削除します。

Note

サーバー ノードに接続されているすべてのリムーバブル ドライブをスクリプトから除外します。 たとえば、サーバー ノードからこのスクリプトをローカルで実行している場合は、クラスターのデプロイに使用している可能性のあるリムーバブル ドライブをワイプしません。

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"

Invoke-Command ($ServerList) {
    Update-StorageProviderCache
    Get-StoragePool | ? IsPrimordial -eq $false | Set-StoragePool -IsReadOnly:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Get-VirtualDisk | Remove-VirtualDisk -Confirm:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Remove-StoragePool -Confirm:$false -ErrorAction SilentlyContinue
    Get-PhysicalDisk | Reset-PhysicalDisk -ErrorAction SilentlyContinue
    Get-Disk | ? Number -ne $null | ? IsBoot -ne $true | ? IsSystem -ne $true | ? PartitionStyle -ne RAW | % {
        $_ | Set-Disk -isoffline:$false
        $_ | Set-Disk -isreadonly:$false
        $_ | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false
        $_ | Set-Disk -isreadonly:$true
        $_ | Set-Disk -isoffline:$true
    }
    Get-Disk | Where Number -Ne $Null | Where IsBoot -Ne $True | Where IsSystem -Ne $True | Where PartitionStyle -Eq RAW | Group -NoElement -Property FriendlyName
} | Sort -Property PsComputerName, Count

手順 2.2: クラスター構成をテストする

この手順では、クラスターを作成するようにサーバー ノードが正しく構成されていることを確認します。 Test-Cluster コマンドレットは、構成がハイパーコンバージド クラスターとして機能するのに適しているかどうかを確認するためのテストを実行するために使用されます。 次の例では、 -Include パラメーターを使用し、テストの特定のカテゴリを指定して、正しいテストが検証に含まれていることを確認します。

Test-Cluster -Node $ServerList -Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration"

手順 3: クラスターを作成する

これで、前の手順で検証したサーバー ノードを使用してクラスターを作成する準備ができました。

クラスターを作成するときに、"There were issues while creating the clustered role that may prevent it from starting. For more information, view the report file below." という警告が表示される場合があります。この警告は安全に無視できます。 この警告は、クラスター監視で使用できるディスクがないためです。 クラスター監視は、後の手順で作成されます。

Note

サーバーが静的 IP アドレスを使用している場合は、次のパラメーターを追加し、IP アドレスを指定して、静的 IP アドレスを反映するように次のコマンドを変更 -StaticAddress <X.X.X.X>;

$ClusterName="cluster1" 
New-Cluster -Name $ClusterName –Node $ServerList –nostorage

クラスターが作成されると、ドメイン間で DNS 経由でクラスター名がレプリケートされるまでに時間がかかる場合があります(特にワークグループ サーバーがActive Directoryに新しく追加された場合)。 クラスターはWindows Admin Centerに表示される場合がありますが、まだ接続できない可能性があります。

すべてのクラスター リソースがオンラインであることを確認することをお勧めします。

Get-Cluster -Name $ClusterName | Get-ClusterResource

しばらくしてもクラスターの解決が成功しない場合、ほとんどの場合、クラスター名の代わりにクラスター化されたサーバーの 1 つの名前を使用して接続できます。

手順 4: ホスト ネットワークを構成する

Microsoftでは、HCI バージョン 21H2 以降を実行している場合は、ネットワーク ATC を使用してホスト ネットワークAzure Stack展開することをお勧めします。 それ以外の場合は、特定の要件と情報の ホスト ネットワーク 要件に関するページを参照してください。

アダプターに 1 つ以上の意図の種類を指定すると、ネットワーク ATC は目的のネットワーク構成の展開を自動化できます。 特定の意図の種類の詳細については、「 ネットワーク トラフィックの種類」を参照してください

手順 4.1: 物理アダプターを確認する

クラスター ノードの 1 つで、 Get-NetAdapter を実行して物理アダプターを確認します。 クラスター内の各ノードに同じ名前付き物理アダプターがあり、状態が "Up" と報告されていることを確認します。

Get-NetAdapter -Name pNIC01, pNIC02 -CimSession $ClusterName | Select Name, PSComputerName

物理アダプター名がクラスター内のノードによって異なる場合は、 Rename-NetAdapterを使用して名前を変更できます。

Rename-NetAdapter -Name oldName -NewName newName

手順 4.2: 意図を構成する

この例では、コンピューティングとストレージの意図を指定する意図が作成されます。 その他の意図の例については、「 Network ATC を使用してホスト ネットワークを簡略化 する」を参照してください。

次のコマンドを実行して、ストレージとコンピューティングの意図の種類を pNIC01 と pNIC02 に追加します。 -ClusterName パラメーターを指定します。

Add-NetIntent -Name Cluster_ComputeStorage -Compute -Storage -ClusterName $ClusterName -AdapterName pNIC01, pNIC02

コマンドは、最初の検証の直後に戻る必要があります。

手順 4.3: 意図のデプロイを検証する

Get-NetIntent コマンドレットを実行して、クラスターの意図を確認します。 複数の意図がある場合は、 Name パラメーターを指定して、特定の意図のみの詳細を表示できます。

Get-NetIntent -ClusterName $ClusterName

意図のプロビジョニング状態を確認するには、 Get-NetIntentStatus コマンドを実行します。

Get-NetIntentStatus -ClusterName $ClusterName -Name Cluster_ComputeStorage

プロビジョニング、検証、成功、失敗を示す状態パラメーターに注意してください。

ステータスに、数分以内に成功と表示されます。 成功状態が発生しない場合、または状態パラメーターのエラーが表示された場合は、イベント ビューアーで問題がないか確認します。

Note

現時点では、Network ATC では、そのマネージド アダプターの IP アドレスは構成されません。 状態 Get-NetIntentStatus レポートが完了したら、アダプターに IP アドレスを追加する必要があります。

手順 5: サイトをセットアップする (ストレッチ クラスタ)

このタスクは、各サイトに少なくとも 2 つのサーバーがある 2 つのサイト間にストレッチ クラスターを作成する場合にのみ適用されます。

Note

Active Directoryサイトとサービスを事前に設定している場合は、次のセクションで説明するようにサイトを手動で作成する必要はありません。

手順 5.1: サイトを作成する

次のコマンドレットでは、 FaultDomain は単にサイトの別の名前です。 この例では、ストレッチ クラスターの名前として "ClusterS1" を使用します。

New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site1"
New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site2"

Get-ClusterFaultDomain コマンドレットを使用して、クラスター用に両方のサイトが作成されていることを確認します。

Get-ClusterFaultDomain -CimSession $ClusterName

手順 5.2: サーバー ノードを割り当てる

次に、4 つのサーバー ノードをそれぞれのサイトに割り当てます。 次の例では、Server1 と Server2 は Site1 に割り当てられ、Server3 と Server4 は Site2 に割り当てられます。

Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server1", "Server2" -Parent "Site1"
Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server3", "Server4" -Parent "Site2"

Get-ClusterFaultDomain コマンドレットを使用して、ノードが正しいサイトに存在していることを確認します。

Get-ClusterFaultDomain -CimSession $ClusterName

手順 5.3: 優先サイトを設定する

グローバル 優先 サイトを定義することもできます。つまり、指定したリソースとグループを優先サイトで実行する必要があります。 この設定は、次のコマンドを使用してサイト レベルで定義できます。

(Get-Cluster).PreferredSite = "Site1"

ストレッチ クラスターの優先サイトの指定には、次の利点があります。

  • コールド スタート - コールド スタート中、仮想マシンは優先サイトに配置されます

  • 定足数投票

    • 動的クォーラムでは、他のすべてが等しい場合に優先サイトが存続するように、最初にパッシブ (レプリケート) サイトから重み付けを減らします。 さらに、非対称ネットワーク接続エラーなどのイベントの後、再グループ化中に最初にサーバー ノードがパッシブ サイトから排除されます。

    • 2 つのサイト間でクォーラム分割が発生した際に、クラスター ウィットネスに接続できない場合は、優先サイトが自動的に勝者として選出されます。 その後、パッシブ サイト内のサーバー ノードはクラスター メンバーシップから削除され、クラスターは同時に 50% 投票の損失を生き残ることができます。

優先サイトは、クラスターの役割またはグループ レベルで構成することもできます。 この場合、仮想マシン グループごとに異なる優先サイトを構成して、サイトをアクティブにし、特定の仮想マシンに優先させることができます。

手順 5.4: ネットワーク ATC を使用してストレッチ クラスタリングを設定する

バージョン 22H2 以降では、ネットワーク ATC を使用して Stretch クラスタリングを設定できます。 ネットワーク ATC では、バージョン 22H2 以降で、意図の種類として Stretch が追加されます。 Network ATC を使用して Stretch クラスタリングを使用して意図をデプロイするには、次のコマンドを実行します。

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01", "pNIC02"

ネットワーク ATC を使用してデプロイするときに、ストレッチ 意図を他の意図と組み合わせることもできます。

サイトのオーバーライド

手順 5.1 から 5.3 に基づいて、事前に作成したサイトを、Network ATC を使用して展開されたストレッチインテントに追加できます。 ネットワーク ATC では、SiteOverrides を使用してこれを処理します。 SiteOverride を作成するには、次のコマンドを実行します。

 $siteOverride = New-NetIntentSiteOverrides

siteOverride が作成されたら、siteOverride の任意のプロパティを設定できます。 siteOverride の name プロパティの名前が、ClusterFaultDomain 内のサイトの名前とまったく同じであることを確認します。 ClusterFaultDomain と siteOverride の間で名前が一致しない場合、siteOverride は適用されません。

特定の siteOverride に対して設定できるプロパティは、Name、StorageVlan、StretchVlan です。 たとえば、site1 と site2 の 2 つのサイトに対して 2 つの siteOverride を作成するには、次を使用します。

$siteOverride1 = New-NetIntentSiteOverrides
$siteoverride1.Name = "site1"
$siteOverride1.StorageVLAN = 711
$siteOverride1.StretchVLAN = 25

$siteOverride2 = New-NetIntentSiteOverrides
$siteOverride2.Name = "site2"
$siteOverride2.StorageVLAN = 712
$siteOverride2.StretchVLAN = 26

PowerShell ウィンドウで$siteOverride1$siteOverride2を実行して、すべてのプロパティが目的の方法で設定されていることを確認できます。

最後に、1 つ以上の siteOverrides を intent に追加するには、次を実行します。

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01" , "pNIC02" -SiteOverrides $siteOverride1, $siteOverride2

手順 6: 記憶域スペース ダイレクトを有効にする

クラスターを作成したら、Enable-ClusterStorageSpacesDirect コマンドレットを使用します。このコマンドレットを使用すると、記憶域スペース ダイレクトが有効になり、次の操作が自動的に実行されます。

  • 記憶域プールを作成します。 "Cluster1 記憶域プール" のような名前を持つクラスターの記憶域プールを作成します。

  • クラスター パフォーマンス履歴ディスクを作成します。 記憶域プールにクラスター パフォーマンス履歴仮想ディスクを作成します。

  • データ ボリュームとログ ボリュームを作成します。 データ ボリュームとログ ボリュームを記憶域プールに作成します。

  • 記憶域スペース ダイレクト キャッシュを構成する: 記憶域スペース ダイレクトで使用可能なメディア (ドライブ) の種類が複数ある場合は、キャッシュ デバイスとして最速になります (ほとんどの場合、読み取りと書き込み)。

  • 階層の作成: 既定のレベルとして 2 つの層を作成します。 1 つは "Capacity" という名前で、もう 1 つは "Performance" という名前です。 コマンドレットにより、デバイスが分析されて、各階層がデバイスの種類と回復性を組み合わせて構成されます。

単一サーバー シナリオの場合、FaultDomainAwarenessDefault は PhysicalDisk のみです。 Enable-ClusterStorageSpacesDirect コマンドレットは、単一のサーバーを検出し、有効化中に FaultDomainAwarenessDefault を PhysicalDisk として自動的に構成します。

ストレッチ クラスターの場合、 Enable-ClusterStorageSpacesDirect コマンドレットも次のようになります。

  • サイトがセットアップされているか確認する
  • どのノードがどのサイトにあるかを判断する
  • 各ノードで使用可能なストレージを決定します
  • 記憶域レプリカ機能が各ノードにインストールされているかどうかを確認します
  • 各サイトの記憶域プールを作成し、サイトの名前で識別します
  • 各記憶域プールにデータ ボリュームとログ ボリュームを作成します (サイトごとに 1 つ)。

次のコマンドは、マルチノード クラスターで記憶域スペース ダイレクトを有効にします。 次に示すように、記憶域プールのフレンドリ名を指定することもできます。

Enable-ClusterStorageSpacesDirect -PoolFriendlyName "$ClusterName Storage Pool" -CimSession $ClusterName

単一ノード クラスターでストレージ キャッシュを無効にする例を次に示します。

Enable-ClusterStorageSpacesDirect -CacheState Disabled

記憶域プールを表示するには、次のコマンドを使用します。

Get-StoragePool -CimSession $ClusterName

クラスターを作成した後

クラスターが作成されたので、完了する必要があるその他の重要なタスクがあります。

次のステップ