Windows PowerShell を使用して Azure Stack HCI クラスターを作成する
適用対象: Azure Stack HCI バージョン 22H2
警告
この記事で説明するデプロイ手順は、古いバージョンの Azure Stack HCI バージョン 22H2 に適用されます。 新しいデプロイでは、一般公開されている最新バージョンの Azure Stack HCI バージョン 23H2 を使用することをお勧めします。 デプロイ手順については、「 Azure Stack HCI バージョン 23H2 のデプロイについてを参照してください。
この記事では、Windows PowerShell を使用して、記憶域スペース ダイレクトを使用する Azure Stack HCI ハイパーコンバージド クラスターを作成する方法について説明します。 Windows Admin Center のクラスター作成ウィザードを使用してクラスターを作成する場合は、Windows Admin Center でのクラスターの作成に関する記事を参照してください。
Note
Azure Stack HCI 21H2 の単一サーバー インストールを行う場合は、PowerShell を使ってクラスターを作成してください。
2 種類のクラスターのどちらかを選択できます。
- すべてが単一のサイトに存在する、サーバー ノード数が 1 つまたは 2 つの標準クラスター。
- 2 つのサイトにまたがり、少なくとも 4 つのサーバー ノードを持つストレッチ クラスター。サイトごとに 2 つのノードがあります。
単一サーバー シナリオの場合は、1 台のサーバーに対して同じ手順を実行します。
Note
単一サーバー構成では、ストレッチ クラスターはサポートされていません。
この記事では、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 をクラスタリング用に展開することもできます。
開始する前に
開始する前に次の点を確認します。
- Azure Stack HCI システム要件を読んで理解します。
- Azure Stack HCI のPhysical ネットワーク要件ホスト ネットワーク要件について説明します。
- クラスター内の各サーバーに Azure Stack HCI OS をインストールします。 「Azure Stack HCI オペレーティング システムのデプロイ」を参照してください。
- すべてのサーバーが正しいタイム ゾーンで表示されていることを確認します。
- 各サーバーでローカルの Administrators グループのメンバーであるアカウントを用意します。
- Active Directory でオブジェクトを作成する権限を付与します。
- ストレッチ クラスターの場合は、あらかじめ 2 つのサイトを Active Directory に設定します。
Windows PowerShell を使用する
PowerShell は、ホスト サーバー上の RDP セッションでローカルに実行することも、管理コンピューターからリモートで実行することもできます。 この記事では、リモート オプションについて説明します。
管理コンピューターから 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"
同じことを行うもう 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 は目的のネットワーク構成の展開を自動化できます。 特定の意図の種類の詳細については、「 Network トラフィックの種類」を参照してください。
手順 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 を使用してデプロイするときに、ストレッチ 意図を他の意図と組み合わせることもできます。
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 つの 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 を意図に追加するには、次を実行します。
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
クラスターを作成した後
クラスターが作成されたので、完了する必要があるその他の重要なタスクがあります。
- 2 ノード以上のクラスターを使っている場合は、クラスター監視を設定します。 「クラスター監視のセットアップ」を参照してください。
- ボリュームを作成します。 ボリュームの作成に関する記事を参照してください。 単一ノード クラスター上にボリュームを作成する場合は、PowerShell を使う必要があります。 PowerShell を使ったボリュームの作成に関する記事を参照してください。
- ストレッチ クラスターの場合は、ボリュームを作成し、記憶域レプリカを使ってレプリケーションを設定します。 ストレッチ クラスター用のボリュームの作成とレプリケーションの設定に関する記事を参照してください。
次のステップ
- クラスターを Azure に登録します。 「Azure Stack HCI を Azure に接続する」を参照してください。
- クラスターの最終検証を実行します。 「Azure Stack HCI クラスターの検証」を参照してください
- ホスト ネットワークを管理します。 「ネットワーク ATC を使用してホスト ネットワークを管理する」を参照してください。