演習 - Azure 共有ディスクを使用してクラスター化された VM をデプロイする
会社の CTO は、Azure 共有ディスクを使用して Azure 仮想マシン (VM) にクラスター化されたアプリケーションをデプロイする概念実証を提供する必要があります。 あなたは、Linux VM と Windows VM の両方でクラスター化されたシナリオをテストするように求められました。
注意
初めてサンドボックスをアクティブ化して利用規約に同意すると、Microsoft アカウントが Microsoft Learn サンドボックスという名前の新しい Azure ディレクトリに関連付けられます。 また、特別なコンシェルジェ サブスクリプションにも追加されました。
注意
Azure で Windows および Linux VM を管理するには、Azure PowerShell または Azure CLI を使用します。 ここでは、学習目的のため、Windows オプションを選択した場合は Azure PowerShell を使用します。 Linux を選択した場合は、Azure CLI を使用します。
Note
この演習は省略してもかまいません。 この演習を実行する場合は、始める前に Azure サブスクリプションを作成する必要があります。 Azure アカウントをお持ちでない場合、またはこの時点で作成しない場合は、提示されている情報を理解するため手順に目を通してください。
Azure 共有ディスクを使用して Linux VM をデプロイする
概念実証を提供するため、Ubuntu Server OS を実行する 2 つの Linux VM をデプロイします。 また、Azure 共有ディスクで SCSI 永続的予約 (PR) コマンドもテストします。
この演習では、Azure 共有ディスクのデプロイを確認し、次のタスクを実行します。
- Azure 共有ディスクを作成する。
- 可用性セットを作成します。
- Ubuntu Server OS を実行する 2 つの VM をデプロイしてから、2 つの VM に共有ディスクを接続する。
- SCSI PR コマンドをテストする。
Azure 共有ディスクを作成する
Azure CLI で Azure Cloud Shell を使用して、Azure 共有ディスクを作成します。
az disk create -g <rgn>[sandbox resource group name]</rgn> -n mySharedDisk --size-gb 1024 --sku Premium_LRS --max-shares 2
可用性セットの作成
次のコマンドを実行して、可用性セットを作成します。
az vm availability-set create \
--resource-group <rgn>[sandbox resource group name]</rgn> \
--name myAvailabilitySet \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
Ubuntu Server を実行する 2 つの VM を作成する
Cloud Shell を開いたまま、次のコマンドを実行して、Ubuntu OS を実行する 2 つの VM を作成します。
for i in `seq 1 2`;
do
az vm create --resource-group <rgn>[sandbox resource group name]</rgn> --name myVM$i --availability-set myAvailabilitySet --size Standard_DS1_v2 --vnet-name myVnet --subnet mySubnet --image Ubuntu2204 --admin-username azureuser --generate-ssh-keys
done
Azure 共有ディスクを両方の VM に接続する
Cloud Shell を開いたまま、次のコマンドを実行して、Azure 共有ディスクを両方の VM に接続します。
diskId=$(az disk show -g <rgn>[sandbox resource group name]</rgn> -n mySharedDisk --query 'id' -o tsv)
# attach the shared disk to the first VM.
az vm disk attach -g <rgn>[sandbox resource group name]</rgn> --vm-name myVM1 --name $diskId
# attach the shared disk to the second VM.
az vm disk attach -g <rgn>[sandbox resource group name]</rgn> --vm-name myVM2 --name $diskId
このタスクが完了すると、共有ディスクが 2 つの VM に同時に接続されます。
"sg3-utils" ツールを使用して SCSI PR をテストする
Cloud Shell を開いたまま、Secure Shell (SSH) プロトコルを使用して 1 つ目の VM に接続します。
次のコマンドを使用して、VM1 の IP アドレスを取得します。
myPublicIP1=$(az network public-ip show --resource-group <rgn>[sandbox resource group name]</rgn> --name myVM1PublicIP --query 'ipAddress' --output tsv)
SSH 経由で 1 つ目の VM に接続します。
ssh azureuser@$myPublicIP1
[Are you sure you want to continue connecting (yes/no)?] のプロンプトで、yes と入力してから Enter キーを押します。
sg3-utils をインストールするには、次のコマンドを実行します。
sudo apt-get update sudo apt-get install -y sg3-utils
現在の予約を読み取るには、次のコマンドを実行します。
sudo sg_persist /dev/sdc -s
このコマンドで、共有ディスクに存在する現在の予約が識別されます。 実行するのは今回が初めてなので、新しい予約は存在しないはずです。
次のコマンドを実行して、myVM1 に新しい予約キー 1234 を登録します。
sudo sg_persist --register --device /dev/sdc --param-rk=0 --param-sark=1234 --out
このコマンドで、SCSI_PR 登録が提供されます。これにより、VM1 で新しい共有ディスクに対する読み取りまたは書き込みを実行できます。
VM1 でキーを読み取ります。
sudo sg_persist /dev/sdc -s
このコマンドで、VM1 の共有ディスクに対する予約が 1 つ表示されるはずです。
SSH セッションを終了します。
exit
次のコマンドを使用し、SSH を使用して 2 つ目の VM に接続します。
myPublicIP2=$(az network public-ip show --resource-group <rgn>[sandbox resource group name]</rgn> --name myVM2PublicIP --query 'ipAddress' --output tsv) ssh azureuser@$myPublicIP2
[Are you sure you want to continue connecting (yes/no)?] のプロンプトが表示されたら、yes と入力してから Enter キーを押します。
sg3-utils をインストールするには、次のコマンドを実行します。
# Install sg3-utils sudo apt-get update sudo apt-get install -y sg3-utils
# Register the key 1235 on VM2. This command will provide SCSI_PR registration for VM2, so it can read or write on the shared disk. sudo sg_persist --register --device /dev/sdc --param-rk=0 --param-sark=1235 --out # Read back the keys for the shared disk. Now it should show 2 reservation to the shared disk for both VM1 and VM2. sudo sg_persist /dev/sdc -s
SSH セッションを終了します。
exit
SSH を使用して myVM1 に接続します。
ssh azureuser@$myPublicIP1
次のコマンドを実行します。
# Reserve the device with exclusive write permission. This command will ensure that VM1 has exclusive write to the disk, while any write from VM2 will not succeed. sudo sg_persist --reserve --device /dev/sdc --param-rk=1234 --prout-type=1 --out # Check the reservation on the device. sudo sg_persist /dev/sdc -s
SSH セッションを終了します。
exit
SSH を使用して myVM2 に接続します。
ssh azureuser@$myPublicIP2
次のコマンドを実行します。
# Preempt the DEVICE from **myVM2**. This command will take over the exclusive write operation from VM1. Now VM2 has write access to the disk. sudo sg_persist --preempt --device /dev/sdc --param-rk=1235 --param-sark=1234 --prout-type=5 --out # Report capabilities. Verify that reservation exist for VM2 with key 1235. sudo sg_persist /dev/sdc -c
# Unregister from **myVM2**. This command release access to the shared disk. sudo sg_persist --out --register --param-rk=1235 --param-sark=0 --device /dev/sdc # Report capabilities. sudo sg_persist /dev/sdc -s
SSH セッションを終了します。
exit
Azure 共有ディスクを使用して Windows VM をデプロイする
Azure 共有ディスクの機能をさらに示すため、Windows Server オペレーティング システム (OS) を実行する 2 つの Windows VM をデプロイします。 その後、Azure 共有ディスクで SCSI 永続的予約 (PR) コマンドをテストします。
この演習では、Azure 共有ディスクのデプロイを確認し、次のタスクを実行します。
- Azure 共有ディスクを作成する。
- 可用性セットを作成します。
- Windows Server OS を実行する 2 つの VM をデプロイし、クラスター化されたサービスを構成する。
- SCSI PR コマンドをテストする。
Azure 共有ディスクを作成する
Cloud Shell で、次のコマンドを実行して Azure CLI から Azure PowerShell に切り替えます。
# Switch to PowerShell pwsh # Create Azure Shared disk $dataDiskConfig=New-AzDiskConfig -Location "EastUs" -DiskSizeGB 1024 -AccountType Premium_LRS -CreateOption Empty -MaxSharesCount 2 $dataDisk=New-AzDisk -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -DiskName "mySharedDisk1" -Disk $dataDiskConfig
可用性セットの作成
次のコマンドを実行して、可用性セットを作成します。
# Create a managed availability set by using New-AzAvailabilitySet with the -sku aligned parameter. New-AzAvailabilitySet ` -Location "EastUS" ` -Name "myAvailabilitySet1" ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Sku aligned ` -PlatformFaultDomainCount 2 ` -PlatformUpdateDomainCount 2
Windows Server を実行する 2 つの VM を作成する
Cloud Shell を開いたまま、次のコマンドを実行して、VM にログインするための資格情報オブジェクトを定義します。
$cred = Get-Credential
次の資格情報を使用します。
- ユーザー: Student
- パスワード: Pa55w.rd1234
Windows OS を実行する 2 つの VM を作成します。
for ($i=3; $i-le4; $i++) { New-AzVm ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name "myVM$i" ` -Location eastus ` -VirtualNetworkName "myVnet1" ` -SubnetName "mySubnet" ` -ImageName "MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest" ` -SecurityGroupName "myNetworkSecurityGroup1" ` -PublicIpAddressName "myPublicIpAddress$i" ` -AvailabilitySetName "myAvailabilitySet1" ` -Credential $cred }
Azure 共有ディスクを両方の VM に接続する
次のコマンドを使用して、Azure 共有ディスクを 1 つ目の VM に接続します。
$vm3 = Get-AzVM -Name "myvm3" -ResourceGroupName <rgn>[sandbox resource group name]</rgn> $vm3 = Add-AzVMDataDisk -VM $vm3 -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun 0 Update-AzVM -VM $vm3 –ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Azure 共有ディスクを 2 つ目の VM に接続します。
$vm4 = Get-AzVM -Name "myvm4" -ResourceGroupName <rgn>[sandbox resource group name]</rgn> $vm4 = Add-AzVMDataDisk -VM $vm4 -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun 0 Update-AzVM -VM $vm4 –ResourceGroupName <rgn>[sandbox resource group name]</rgn>
myVM3 に Windows フェールオーバー クラスタリング サービスをインストールする
Azure portal にサインインし、サンドボックス サブスクリプション内にいることを確認します。
[リソース、サービス、ドキュメントの検索 (G+/)] フィールドに「仮想マシン」と入力してから、[仮想マシン] を選択します。
ツール バーから myVM3 VM を選択し、[接続] を選択してから [RDP] を選択します。
[RDP ファイルのダウンロード] を選択してから、次の資格情報を使用して接続します。
- ユーザー名: Student
- パスワード: Pa55w.rd1234
サーバー マネージャーで、[ツール] メニューの [コンピューターの管理] スナップインを選択します。
[コンピューターの管理 (ローカル)] 管理コンソールで、[ディスクの管理] を選択します。
[ディスクの初期化] ウィンドウで、[ディスク 2] が選択されていることを確認してから、[OK] を選択します。
[ディスク 2] を右クリックするか、ディスク上の黒いラベルを選択してから、[新しいシンプル ボリューム] を選択します。 既定値をそのまま使用して、新しいシンプル ボリュームを作成します。
[コンピューターの管理] コンソールを閉じます。
サーバー マネージャーで [役割と機能の追加] を選択します。 役割と機能の追加ウィザードが起動されます。
役割と機能の追加ウィザードの [開始する前に] ページで、[次へ] を選択します。
[インストールの種類の選択] ページで [役割ベースまたは機能ベースのインストール] を選択してから、[次へ] を選択します。
[サーバーの選択] ページで、[次へ] を選択します。
[サーバーの役割の選択] ページで、 [次へ] を選択します。
[機能の選択] ページで、[フェールオーバー クラスタリング] チェックボックスをオンにします。
[管理ツールを含める (存在する場合)] チェックボックスがオンになっていることを確認します。 [機能の追加] を選択し、 [次へ] を選択します。
[確認] ページで、[必要に応じて対象サーバーを自動的に再起動する] チェックボックスをオンにしてから、[はい] を選択します。 [インストール] を選択して、フェールオーバー クラスタリングの役割をインストールします。
注意
フェールオーバー クラスター機能がインストールされた後、仮想マシン myVM3 が自動的に再起動します。
myVM4 に Windows フェールオーバー クラスタリング サービスをインストールする
Azure portal で、[リソース、サービス、ドキュメントの検索 (G+/)] フィールドに「仮想マシン」と入力してから、[仮想マシン] を選択します。
ツール バーから myVM4 VM を選択し、[接続] を選択してから [RDP] を選択します。
[RDP ファイルのダウンロード] を選択してから、次の資格情報を使用して接続します。
- ユーザー名: Student
- パスワード: Pa55w.rd1234
サーバー マネージャーで、[ツール] メニューの [コンピューターの管理] スナップインを選択します。
[コンピューターの管理 (ローカル)] 管理コンソールで、[ディスクの管理] を選択します。
[ディスクの初期化] ウィンドウで、[ディスク 2] が選択されていることを確認してから、[OK] を選択します。
[ディスク 2] を右クリックするか、ディスク上の黒いラベルを選択してから、[新しいシンプル ボリューム] を選択します。 既定値をそのまま使用して、新しいシンプル ボリュームを作成します。
[コンピューターの管理] コンソールを閉じます。
サーバー マネージャーで [役割と機能の追加] を選択します。 役割と機能の追加ウィザードが起動されます。
役割と機能の追加ウィザードの [開始する前に] ページで、[次へ] を選択します。
[インストールの種類の選択] ページで [役割ベースまたは機能ベースのインストール] を選択し、[次へ] を選択します。
[サーバーの選択] ページで、[次へ] を選択します。
[サーバーの役割の選択] ページで、 [次へ] を選択します。
[機能の選択] ページで、[フェールオーバー クラスタリング] チェックボックスをオンにします。
[管理ツールを含める (存在する場合)] チェックボックスがオンになっていることを確認します。 [機能の追加] を選択し、 [次へ] を選択します。
[確認] ページで、[必要に応じて対象サーバーを自動的に再起動する] チェックボックスをオンにしてから、[はい] を選択します。[インストール] を選択して、フェールオーバー クラスタリングの役割をインストールします。
注意
フェールオーバー クラスター機能がインストールされた後、仮想マシン myVM4 が自動的に再起動します。
myVM3 で Windows フェールオーバー クラスタリング サービスのストレージをテストする
Azure portal で、[リソース、サービス、ドキュメントの検索 (G+/)] フィールドに「仮想マシン」と入力して選択します。
ツール バーから 1 つ目の VM である myVM3 を選択し、[接続] を選択してから [RDP] を選択します。
[RDP ファイルのダウンロード] を選択してから、次の資格情報を使用して接続します。
- ユーザー名: Student
- パスワード: Pa55w.rd1234
サーバー マネージャーで、[ツール] メニューの [フェールオーバー クラスター マネージャー] を選択します。
フェールオーバー クラスター マネージャーで、[操作] メニューの [構成の検証] を選択します。 構成の検証ウィザードが開きます。
構成の検証ウィザードの [開始する前に] ページで、[次へ] を選択します。
[サーバーまたはクラスターの選択] ページで、[名前の入力] フィールドに「myVM3」と入力してから、[追加] を選択します。
[サーバーまたはクラスターの選択] ページで、[名前の入力] フィールドに「myVM4」と入力してから、[追加] を選択します。
[次へ] を選択して、クラスターのセットアップのテストを続行します。
[テスト オプション] ページで、[選択するテストのみを実行する] を選択してから、[次へ] を選択します。
他のすべてのテストをクリアし、[記憶域] チェックボックスのみをオンにしてから、[次へ] を選択します。
[確認] ページで、[次へ] を選択します。
すべてのテストが成功したことを確認し、[完了] を選択します。
RDP 接続を閉じます。
Note
クラスターの作成を続行するには、Microsoft Entra Domain Services (Microsoft Entra Domain Services) などの追加の前提条件を満たし、内部ロード バランサーで使用する静的 IP アドレスを作成する必要があります。
この手順はこの演習の範囲外です。