fbpx

最低要件よりもさらに低いスペックのマシンへ 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 と同じディレクトリにあります。
astp1_02_001
※ドライブレターは、環境により変わる可能性があります。

デプロイスクリプト実行時に読み取り専用でマウントされますので、まずはこれをアンマウントし、編集可能な状態でマウントし直します。

PS C:\> Dismount-VHD 'E:\Microsoft Azure Stack POC\MicrosoftAzureStackPOC.vhdx'
PS C:\> Mount-VHD 'E:\Microsoft Azure Stack POC\MicrosoftAzureStackPOC.vhdx'

続いて、エクスプローラーを開きます。"DataImage" という名前でマウントされていることを確認します。
astp1_02_002
※ドライブレターは、環境により変わる可能性があります。

チェック用のスクリプトは、この 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

デプロイを開始する

編集が終わったら、通常通りデプロイスクリプトを起動してデプロイを開始します。デプロイの詳細は こちら を参照してください。
弊社環境では以下のように問題なく動作しており、ポータルから仮想マシンの作成ができることを確認済みです。
astp1_02_003

まとめ

このように、スクリプトの中身を改修して、低スペックのマシンにも PoC 環境が構築できることがわかりました。もちろん、推奨スペックのマシンを用意するに越したことはないですが、簡単に手に入れられるものではないのも事実です。
本稿に記載の手順により、「ハイスペックなマシンは用意できないけど、ちょっと Azure Stack を触ってみて、動作イメージを掴んでみたい」といったことが可能になると思います。

新規CTA