fbpx

Microsoft Azure Stack TP2 を構築してみた #AzureStack

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

Microsoft Azure Stack Technical Preview 2 (TP2)

Microsoft 社のハイブリッドクラウドプラットフォーム、Azure Stack の TP2 が公開されました。
https://azure.microsoft.com/ja-jp/overview/azure-stack/
astp2_01_003

デプロイスクリプトが用意され、一台のマシンに POC 環境を構築する仕組みは TP1 と同じですが、スクリプトのコードが変更されており、TP1 の常識は TP2 には通用しなくなっています。変わらないのは、マシンに要求されるスペックがかなり高いということです。
https://azure.microsoft.com/en-us/documentation/articles/azure-stack-deploy/

古い情報になりますが、TP1 の構築については こちら を参照してください。

Azure Stack POC TP2 デプロイ準備

Hyper-V ホスト用のマシン

弊社では要件に合致するマシンを用意できなかったので、TP1 のときに使用した "要件を満たさないマシン" を使用します。

コンポーネント スペック
OS Disk 320GB
Data Disk 200GB × 1, 2TB × 2 (合計 3 つ)
CPU Single-Socket: 4 Logical Cores
Memory 32GB

OS Disk は、パーティション分割をして 100 GB ほどのデータ領域 (D ドライブ) を作っておきます。
OS は、Windows Server 2012 R2 または Windows Server 2016 の評価版 をインストールしておきます。

Azure アカウント

Azure Stack ポータルの認証には、Azure Active Directory (Azure AD) を使用します。よって、Azure ポータルへサインインする Azure アカウント (Microsoft アカウント) が必要になります。持っていない場合は、以下から作成します。
https://azure.microsoft.com/ja-jp/free/

Azure AD

Azure アカウントの用意ができたら、以下の URL から旧 Azure ポータルにサインインします。
https://manage.windowsazure.com/

AD の作成は こちら の Azure AD の項を参照してください。作成後、以下のような全体管理権限を持つユーザーを追加します。

ユーザーの種類 組織内の新しいユーザー
ユーザー名 <任意の値>@<ドメイン名>
名、姓、表示名 任意の値
ロール 全体管理者
MULTI-FACTOR AUTHENTICATION 無効

作成後に仮パスワードが与えられますので、このユーザーで一度、旧 Azure ポータルにサインインしてください。サインイン後にパスワードの変更を求められるので、任意の値を指定します。

以上で、デプロイの準備が整いました。

Azure Stack POC TP2 デプロイ

Hyper-V ホスト用のマシンに administrator でログオンし、以下のページから Azure Stack POC TP2 をダウンロードします。
https://azure.microsoft.com/ja-jp/overview/azure-stack/try/

zip ファイルがダウンロードされたら、これを解凍します。さらにその解凍先から、“MicrosoftAzureStackPOC.EXE” を実行します。実行後には CloudBuilder.vhdx が得られます。これを、C ドライブ直下に配置します。
この VHD には Windows Server 2016 がインストールされており、これをネイティブブートすることにより Hyper-V のホスト OS とします。
デプロイ失敗などで最初から構築をやり直したい時のために、CloudBuilder.vhdx を D ドライブにコピーしておきます。

サポートファイルのダウンロードと実行

メモ帳などのテキストエディタを開き、以下のコードの PowerShell スクリプトファイルを作成し、適当なファイル名で保存します。

# Variables
$Uri = 'https://raw.githubusercontent.com/Azure/AzureStack-Tools/master/Deployment/'
$LocalPath = 'c:\AzureStack_TP2_SupportFiles'
# Create folder
New-Item $LocalPath -type directory
# Download files
( 'BootMenuNoKVM.ps1', 'PrepareBootFromVHD.ps1', 'Unattend.xml', 'unattend_NoKVM.xml') | foreach { Invoke-WebRequest ($uri + $_) -OutFile ($LocalPath + '\' + $_) }

作成したスクリプトを実行します。C:\AzureStack_TP2_SupportFiles フォルダが作成され、その中にサポートファイルがダウンロードされます。
以下のようにサポートファイルの PrepareBootFromVHD.ps1 を実行することにより、上述の CloudBuilder.vhdx からネイティブブートさせる設定が自動で行われます。

PS C:> C:\AzureStack_TP2_SupportFiles\PrepareBootFromVHD.ps1 -CloudBuilderDiskPath C:\CloudBuilder.vhdx -ApplyUnattend

実行すると、administrator のパスワードの入力を求められるので、任意の値を指定します。
スクリプト実行後 OS が再起動され、CloudBuilder.vhdx の Windows Server 2016 がブートされます。先ほどの設定したパスワードを使用して administrator でログオンします。以後は、この Windows 上での作業となります。

低スペックマシンでもデプロイできるようにするための設定

デプロイスクリプトやその設定ファイルは、C:\CloudDeployment\Configuration フォルダ配下にあります。デプロイスクリプトは、まず POC の要求通りのマシンスペックかどうかを検証しますので、これをパスできるように設定を変更します。

C:\CloudDeployment\Configuration\Roles\Infrastructure\BareMetal\OneNodeRole.xml を開き、使用するホストマシンのスペックに合わせて ValidationRequirements の値を編集します。今回は、MinimumNumberOfCoresPerMachine を 1 に、MinimumPhysicalMemoryPerMachineGB を 32 に変更します。

 <ValidationRequirements>
   <MinimumOperatingSystemVersion>10.0.14300</MinimumOperatingSystemVersion>
   <MinimumNumberOfCoresPerMachine>1</MinimumNumberOfCoresPerMachine>
   <MinimumPhysicalMemoryPerMachineGB>32</MinimumPhysicalMemoryPerMachineGB>
   <MinimumNumberOfAdaptersPerMachine>0</MinimumNumberOfAdaptersPerMachine>
   <MinimumAdapterSpeedBitsPerSecond>0</MinimumAdapterSpeedBitsPerSecond>
   <MinimumSizeOfDataDisksGB>135</MinimumSizeOfDataDisksGB>
   <MinimumSizeOfSystemDiskGB>180</MinimumSizeOfSystemDiskGB>
   <MinimumNumberOfDataDisksPerMachine>3</MinimumNumberOfDataDisksPerMachine>
   <MaximumNumberOfMissingDisksPerMachine>0</MaximumNumberOfMissingDisksPerMachine>
   <SizeComparisonTolerancePercentage>1</SizeComparisonTolerancePercentage>
 </ValidationRequirements>

続いて、デプロイ時に作成される各 VM のメモリサイズを変更します。
C:\CloudDeployment\Configuration\Roles\Fabric\VirtualMachines\OneNodeRole.xml を開き、各 Node 要素の StartUpMemoryBytes の値を 2147483648 (2GB) に変更します。
ただし、Name が "[PREFIX]-Xrp01" の Node だけは、3221225472 (3GB) に変更します。

<Node Name="[PREFIX]-DC01" Type="VirtualMachine" CpiClusterResourceId="[CPI_GUID]" StartUpMemoryBytes="2147483648" ProcessorCount="2" ...>
<Node Name="[PREFIX]-Xrp01" Type="VirtualMachine" CpiClusterResourceId="[CPI_GUID]" StartUpMemoryBytes="3221225472" ProcessorCount="4" ...>

デプロイスクリプト実行

C:\CloudDeployment\Configuration\InstallAzureStackPOC.ps1 を実行します。

PS C:> C:\CloudDeployment\Configuration\InstallAzureStackPOC.ps1

実行後に、各 Node 共通となる管理者パスワードの入力を求められるので、適当な値を指定します。
続いて、Azure AD 全体管理者のクレデンシャルを求められるので、「Azure Stack POC TP2 デプロイ準備」 で作成したユーザーを指定します。

これで、ひとまず作業は完了です。あとはデプロイ完了を待ちます。(数時間かかります)
デプロイ中に OS が再起動されますが、再起動後にデプロイの進捗を確認したい場合は、administrator ではなく、ドメインアカウントの azurestack\AzureStackAdmin でログオンします。パスワードは、InstallAzureStackPOC.ps1 を実行時に指定した管理者パスワードになります。
astp2_01_001

trial and error

マシンスペックや VM のメモリを下げていることが原因と思われますが、デプロイスクリプトは よく途中でエラー終了します。エラーが発生した場合は、まずログを確認します。ログファイルは、C:\CloudDeployment\Logs 配下にあります。この中から、一番最新のログファイル "summary.yyyy-MM-dd.nn-nn-nn.0.log.xml" を Web ブラウザーで開きます。
astp2_01_004

Ctrl + F キーで検索バーを表示し、"Error" で検索します。すると、Status が Error となっている部分がハイライトされて、どこでエラーが発生したかわかり易くなります。
この中で、Error となっている Step 要素の Index の値を、上から順に調べていきます。以下の例では上から順に 60 -> 160 -> 166 となり、「Step 60.160.166 を実行中にエラーが発生した」 ことがわかります。
astp2_01_005

続いて、エラーが発生した PowerShell コンソールをそのまま使用して、以下のコマンドを実行します。

Invoke-EceAction -RolePath Cloud -ActionType Deployment -Start 60.160.166 -Verbose

-Start オプションには、先ほど調べた Step を指定します(この例では 60.160.166)。これで、Step 60.160.166 以降からデプロイが再試行されます。
再試行でも、またエラーが発生することがあります。その場合は、先ほどと同じように xml ログファイルからエラーが発生した Step を調査し、Invoke-EceAction コマンドを実行します。

デプロイスクリプトの Step については、以下を参照してください。
https://azure.microsoft.com/en-us/documentation/articles/azure-stack-troubleshooting/

同じ Step でエラーが再発する場合

Invoke-EceAction コマンドを 何度 実行しても同じ Step でエラーが発生する場合は、以下を試してみてください。弊社環境では、これで Step をパスすることもありました。

  • Step 40.x でエラーが発生する場合は、エラーとなっている VM を一度削除し、Step 40.41 から実行する。
  • Step 60.x.x でエラーが発生する (60.120.x が特に多い!) 場合は、関連する VM (60.120.x の場合は MAS-Xrp01) の OS を再起動してから、Step を実行する。
  • 関連する VM のコア数やメモリを増やしてから、Step を実行する。

astp2_01_006

それでもうまくいかない場合

OS を再起動し、OS ディスクに直接インストールした Windows を起動します。(VHD のネイティブブートでは無い方)
C:\CloudBuilder.vhdx を削除し、D ドライブにコピー済みの CloudBuilder.vhdx を C:\ 直下にコピーします。その後、「Azure Stack POC TP2 デプロイ」 のサポートファイル (PrepareBootFromVHD.ps1) 実行からやり直します。

デプロイ完了後の確認

Azure Stack ポータルが表示されるか確認します。
リモートデスクトップで、ホスト名 "MAS-CON01" に接続します。ユーザー名は azurestack\AzureStackAdmin 、パスワードは デプロイスクリプト InstallAzureStackPOC.ps1 実行時に指定した管理者パスワードを入力します。
astp2_01_007

MAS-CON01 のデスクトップに、Azure Stack ポータルのショートカットがありますので、これをダブルクリックします。
astp2_01_008

Azure AD の全体管理者でサインインします。
astp2_01_009

ダッシュボードが表示されます。
astp2_01_010

参考文献

Microsoft Azure Stack POC architecture
https://azure.microsoft.com/en-us/documentation/articles/azure-stack-architecture/

Deploy Azure Stack POC
https://azure.microsoft.com/en-us/documentation/articles/azure-stack-run-powershell-script/

Rerun a deployment from a failed step
https://azure.microsoft.com/en-us/documentation/articles/azure-stack-rerun-deploy/

新規CTA