最低要件よりもさらに低いスペックのマシンへ Azure Stack POC をデプロイする #AzureStack
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本記事は Azure Stack TP1 について記載しており、TP2 が公開された現在では、内容が古くなっております。
TP2 に関しては、こちら をご覧ください。
Azure Stack POC デプロイの最低要件
Azure Stack POC は、デプロイ用の PowerShell スクリプトが用意されているため、POC 環境の構築自体はそれほど難しくありません。こちら の記事で、デプロイについてまとめています。
しかし、デプロイに使用する物理マシンに要求されるスペックが、最低要件でもかなりのハイスペックなので、物理マシンを用意するのがとても難しくなっています。
https://azure.microsoft.com/ja-jp/documentation/articles/azure-stack-deploy/
コンポーネント | 最低要件 |
OS Disk | 200GB 以上 |
Data Disk | 140GB 以上 × 4 |
CPU | Dual-Socket: 12 Physical Cores |
Memory | 96GB |
https://azure.microsoft.com/ja-jp/documentation/articles/azure-stack-deploy/
最低要件よりも低スペックのマシンにデプロイしてみる
弊社ですぐに用意できたのは、以下の物理マシンです。
コンポーネント | スペック |
OS Disk | 320GB |
Data Disk | 200GB × 1, 2TB × 2 (合計 3 つ) |
CPU | Single-Socket: 4 Logical Cores |
Memory | 32GB |
最低要件よりもかなり低スペックですが、こちらのマシンでデプロイスクリプトを動かしてみます。すると、以下の様にデプロイ前のチェックに引っかかってしまい、エラー終了します。
PS E:\Microsoft Azure Stack POC> .\DeployAzureStack.ps1
Welcome to the Microsoft Azure Stack POC Deployment!
There are several prerequisites checks to verify that your machine meets all the minimum requirements for deploying Microsoft Azure Stack POC.
Check system memory requirement failed. At least 64GB physical memory is required.
At G:\AzureStackInstaller\PoCDeployment\Invoke-AzureStackDeploymentPrecheck.ps1:99 char:9
+ throw "Check system memory requirement failed. At least 64GB ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (Check system me...ry is required.:String) [], RuntimeException
+ FullyQualifiedErrorId : Check system memory requirement failed. At least 64GB physical memory is required.
※メモリの最低要件は 96GB となっていますが、スクリプトのチェックでは、なぜか 64GB になっています。
そこで、チェック用のスクリプトを編集し、少ないメモリでもチェックをパスするようにします。また、データディスクの数や、インストール時に作成される仮想マシンのパラメーター (CPUコア数、メモリ) も調整します。
チェックスクリプトを編集する
チェック用のスクリプトファイルは、MicrosoftAzureStackPOC.vhdx 内にあります。この VHD は、デプロイスクリプト DeployAzureStack.ps1 と同じディレクトリにあります。
※ドライブレターは、環境により変わる可能性があります。
デプロイスクリプト実行時に読み取り専用でマウントされますので、まずはこれをアンマウントし、編集可能な状態でマウントし直します。
PS C:\> Dismount-VHD 'E:\Microsoft Azure Stack POC\MicrosoftAzureStackPOC.vhdx' PS C:\> Mount-VHD 'E:\Microsoft Azure Stack POC\MicrosoftAzureStackPOC.vhdx'
続いて、エクスプローラーを開きます。"DataImage" という名前でマウントされていることを確認します。
※ドライブレターは、環境により変わる可能性があります。
チェック用のスクリプトは、この DataImage 内に在る 以下のファイルです。
AzureStackInstallere\PoCDeployment\Invoke-AzureStackDeploymentPrecheck.ps1
このファイルを、notepad や PowerShell ISE などのエディタで開きます。
メモリの閾値を下げる
開いたら 98 行目を見てみましょう。ここでメモリ容量のチェックを行っており、64GB よりも小さい場合は例外がスローされるようになっています。
96: $mem = Get-WmiObject -Class Win32_ComputerSystem
97: $totalMemoryInGB = [Math]::Round($mem.TotalPhysicalMemory / (1024 * 1024 * 1024))
98: if ($totalMemoryInGB -lt 64) {
99: throw "Check system memory requirement failed. At least 64GB physical memory is required."
100: }
そこで、64 (赤い数字の部分) を 32 へ変更し、保存します。
データディスクのチェックを確認する
次に、データディスクのチェックについて確認します。67 行目を見てみましょう。データディスクの最低要件は 140GB 以上 × 4 となっていますが、スクリプトではなぜか × 3 でパスするようになっています。今回用意したデータディスクは 3 つなので、特にスクリプトを編集する必要はありません。
62: $physicalDisks = Get-PhysicalDisk | Where-Object { $_.CanPool -eq $true -and ($_.BusType -eq 'RAID' -or $_.BusType -eq 'SAS' -or $_.BusType -eq 'SATA') }
63: Write-Verbose ($physicalDisks | Format-Table -Property @("FriendlyName", "SerialNumber", "CanPool", "BusType", "OperationalStatus", "HealthStatus", "Usage", "Size") | Out-String)
64:
65: $selectedDisks = $physicalDisks | Group-Object -Property BusType | Sort-Object -Property Count -Descending | Select-Object -First 1
66:
67: if ($selectedDisks.Count -lt 3) {
68: throw "Check disks failed. At least 3 disks of the same bus type (RAID/SAS/SATA) and with CanPool attribute equals true are required."
69: }
仮想マシンのパラメーターを調整する
インストールスクリプトにより、10 台の仮想マシンが作成されますが、使用するリソースの大きさは DataImage 内にある AzureStackInstaller\PoCFabricInstaller\PoCFabricSettings.xml で設定されています。このファイルをメモ帳などのテキストエディタで編集し、各仮想マシンで使用するリソースをデフォルトよりもさらに小さくします。
例えば、ADVM に割り当てるリソースを小さくするには、以下のように ProcessorCount と RAM, MinRAM, MaxRAM の数値を変更します。
<Parameters> <Name>ADVM</Name> <VMPath>{[FindFreeDisk]:Path}</VMPath> <ProcessorCount>4</ProcessorCount> <RAM>2</RAM> <MinRAM>2</MinRAM> <MaxRAM>2</MaxRAM>
ここでは、各仮想マシンのリソースを以下のように変更します。赤文字が変更箇所になります。
メモリは、RAM(MinRAM - MaxRAM) で表現しています。
仮想マシン名 | 標準のリソース | 変更後のリソース | xml ファイルの行番号 |
ACSVM | ProcessorCount: 4 RAM: 6 (4 - 8) |
ProcessorCount: 4 RAM: 2 (2 - 2) |
819 820 - 822 |
ADVM | ProcessorCount: 4 RAM: 3 (2 - 4) |
ProcessorCount: 4 RAM: 2 (2 - 2) |
119 120- 122 |
BGPVM | ProcessorCount: 2 RAM: 3 (2 - 4) |
ProcessorCount: 2 RAM: 2 (2 - 2) |
386 387 - 389 |
ClientVM | ProcessorCount: 2 RAM: 3 (2 - 4) |
ProcessorCount: 2 RAM: 2 (2 - 2) |
945 946 - 948 |
MuxVM | ProcessorCount: 2 RAM: 3 (2 - 4) |
ProcessorCount: 2 RAM: 2 (2 - 2) |
569 570 - 572 |
NATVM | ProcessorCount: 2 RAM: 3 (2 - 4) |
ProcessorCount: 2 RAM: 2 (2 - 2) |
436 437 - 439 |
NCVM | ProcessorCount: 2 RAM: 3 (2 - 4) |
ProcessorCount: 2 RAM: 2 (2 - 2) |
517 518 - 520 |
PortalVM | ProcessorCount: 4 RAM: 4 (3 - 6) |
ProcessorCount: 4 RAM: 3 (2 - 3) |
757 758 - 760 |
SQLVM | ProcessorCount: 4 RAM: 3 (2 - 4) |
ProcessorCount: 4 RAM: 2 (2 - 2) |
693 694 - 696 |
xRPVM | ProcessorCount: 8 RAM: 6 (4 - 8) |
ProcessorCount: 4 RAM: 3 (2 - 3) |
880 881-883 |
これで、CPU は最も使用する VM で 4 コア、メモリは各 VM の最大合計で 22 GB となり、用意したマシンのリソース範囲内に収めることができます。
注意!!
デプロイスクリプトを一度でも動かしたことがある場合、PoCFabricSettings.xml は 以下の場所に AzureStackFabricInstallerStatus.xml という名前でコピーされている可能性があります。その場合は、こちらの AzureStackFabricInstallerStatus.xml を編集してください。
デプロイスクリプト実行環境の C:\ProgramData\Microsoft\AzureStack\AzureStackFabricInstallerStatus.xml
デプロイを開始する
編集が終わったら、通常通りデプロイスクリプトを起動してデプロイを開始します。デプロイの詳細は こちら を参照してください。
弊社環境では以下のように問題なく動作しており、ポータルから仮想マシンの作成ができることを確認済みです。
まとめ
このように、スクリプトの中身を改修して、低スペックのマシンにも PoC 環境が構築できることがわかりました。もちろん、推奨スペックのマシンを用意するに越したことはないですが、簡単に手に入れられるものではないのも事実です。
本稿に記載の手順により、「ハイスペックなマシンは用意できないけど、ちょっと Azure Stack を触ってみて、動作イメージを掴んでみたい」といったことが可能になると思います。