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

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

警告

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

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

注意

Azure Stack HCI 21H2 の単一サーバー インストールを行う場合は、PowerShell を使ってクラスターを作成してください。

2 種類のクラスターのどちらかを選択できます。

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

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

注意

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

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

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

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

最小限または追加のハードウェアを使用して Azure Stack HCI をテストするには、Azure Stack HCI 評価ガイドをチェックします。 このガイドでは、Azure VM 内で入れ子になった仮想化を使用して Azure Stack HCI を体験する方法について説明します。 または、「チュートリアル: Azure Stack HCI のプライベート フォレスト環境を作成する」を試し、任意のサーバー上で入れ子になった仮想化を使用して独自のプライベート ラボ環境を作成し、Azure Stack HCI を実行する VM をクラスタリング用に展開することもできます。

開始する前に

開始する前に次の点を確認します。

Windows PowerShell を使用する

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

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

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"

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

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

Enter-PSSession -ComputerName $myServer1 -Credential $user

ヒント

管理 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
  • NetworkHUD
  • 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", "NetworkHUD", "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", "NetworkHUD", "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 アドレスが使用されている場合は、次のコマンドを変更し、パラメーター -StaticAddress <X.X.X.X>; を追加して IP アドレスを指定することにより、静的 IP アドレスを反映させます。

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

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

すべてのクラスター リソースがオンラインであることを確認するための適切なチェック:

Get-Cluster -Name $ClusterName | Get-ClusterResource

しばらくしてもクラスターの解決が成功しない場合は、クラスター名ではなく、いずれかのクラスター化サーバーの名前を使用することでほとんどの場合、接続できます。

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

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

アダプターに 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 つのサイト間にストレッチ クラスターを作成する場合にのみ適用されます。

注意

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 クラスタリングを設定できます。 Network ATC では、バージョン 22H2 の意図の種類として Stretch が追加されます。 Network ATC を使用して Stretch クラスタリングを使用して意図をデプロイするには、次のコマンドを実行します。

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

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

SiteOverrides

手順 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 つの siteOverrides を作成します。

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

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

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

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

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

  • 記憶域プールを作成する: "Cluster1 Storage Pool" のような名前で、クラスターの記憶域プールが作成されます。

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

  • データ ボリュームとログ ボリュームを作成する: データ ボリュームとログ ボリュームが記憶域プールに作成されます。

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

  • 階層を作成する: 既定の階層として 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

クラスターを作成した後

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

次のステップ