適用対象: 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 つのサーバー ノードを使用します。
ストレッチ クラスターの詳細については、「 ストレッチ クラスターの概要」を参照してください。
始める前の準備
開始する前に、次のことを確認してください。
- Azure Stack HCI システム要件を読んで理解します。
- Azure Stack HCI の物理ネットワーク要件とホスト ネットワーク要件を読んで理解します。
- クラスター内の各サーバーに Azure Stack HCI OS をインストールします。 Azure Stack HCI オペレーティング システムの展開を参照してください。
- すべてのサーバーが正しいタイム ゾーンにあることを確認します。
- 各サーバーのローカル Administrators グループのメンバーであるアカウントを持っている。
- Active Directoryでオブジェクトを作成する権限を持つ。
- ストレッチ クラスターの場合は、Active Directoryで事前に 2 つのサイトを設定します。
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
クラスターを作成した後
クラスターが作成されたので、完了する必要があるその他の重要なタスクがあります。
- 2 ノード以上のクラスターを使用している場合は、クラスター監視を設定します。 「クラスター監視の設定」を参照してください。
- ボリュームを作成しましょう。 ボリュームの作成を参照してください。 単一ノード クラスター上にボリュームを作成する場合は、PowerShell を使う必要があります。 PowerShell を使ったボリュームの作成に関する記事を参照してください。
- ストレッチ クラスターの場合は、ストレージ レプリカを使用してボリュームを作成し、レプリケーションを設定します。 ストレッチ クラスターのボリュームの作成とレプリケーションの設定に関する説明を参照してください。
次のステップ
- クラスターをAzureに登録します。 「HCI Azure Stack Azureに接続する」を参照してください。
- クラスターの最終的な検証を行います。 Azure Stack HCI クラスターの検証を参照してください
- ホスト ネットワークを管理します。 「ネットワーク ATC を使用してホスト ネットワークを管理する」を参照してください。