日本語版メディアで構築された Azure Local 22H2 のアップグレード方式 で 22H2 から 23H2 のアップグレードの検証をおこなっていました。
各タイミングでノードのディレクトリの状態がどのようになっていればよいのかを把握したかったので、アップグレードを実施しながら確認した内容をメモとして。
Contents
22H2 の初期状態
22H2 の段階では、拡張機能のバージョンは次のようになっている。
22H2 の初期状態では、各ノードのディレクトリ構造は同一となっており、ノード間の差はなかった。
OS のビルド
- バージョン: 10.0.20349.3453 (22H2)
- ビルド: 20349.3453
22H2 のインストールメディアでインストールし、Windows Update を実行した後に確認したバージョン。
拡張機能
- AzureEdgeRemoteSupport: 1.0.92.
- AzureEdgeTelemetryAndDiagnostics: 2.0.18.0
- AzureEdgeDeviceManagement: 1.2504.0.3002
- AzureEdgeLifecycleManager: 30.2408.2.687
拡張機能については、構築タイミングによっては、インストール直後に最新版ではなく、一つ前のバージョンがインストールされていることがある。
拡張機能のバージョンのチェックは、ソリューションアップグレードの展開時にチェックされているため、ソリューションアップグレードを展開する前にアップグレードを行っておく。
ディレクトリ構成
- C:\
- EceStore
- GUID のディレクトリが作成され、ファイルが格納されている。
- MASLog
- NugetStore
- Microsoft.AzureStack.Role.Deployment.Service.10.2408.2.687
- Microsoft.AzureStack.Solution.LCMControllerWinService.10.2408.2.687
- Obs_xxxx
- Observarbility
- Program Files\WindowsPowerShell\Modules
- AzStackHci.EnvironmentChecker
23H2 へのインプレースアップグレード完了後の状態
インプレースアップグレード完了後の状態では各ノードのディレクトリ構造は対象となっており、各ノード間のディレクトリ構造に大きな差はなかった。
拡張機能のアップグレード状況については、22H2 の展開時と同様となっており、最新の拡張機能がインストールされていないケースがあるようであった。
OS のビルド
- バージョン: 10.0.25398.1551 (23H2)
- ビルド: 25398.1551
拡張機能
- AzureEdgeRemoteSupport: 1.0.92.
- AzureEdgeTelemetryAndDiagnostics: 2.0.18.0
- AzureEdgeDeviceManagement: 1.2504.0.3002
- AzureEdgeLifecycleManager: 30.2503.0.907
ディレクトリ構成
- C:\
- CloudDeployemt
- DeploymentPackage
- EceStore
- GUID のディレクトリが作成され、ファイルが格納されている
- MASLog
- NugetStore
- Microsoft.AzureStack.Role.Deployment.Service.10.2408.2.687
- Microsoft.AzureStack.Role.Deployment.Service.10.2503.0.907
- Microsoft.AzureStack.Solution.LCMControllerWinService.10.2408.2.687
- Microsoft.AzureStack.Solution.LCMControllerWinService.10.2503.0.907
- Obs_xxxx
- Observarbility
- Program Files\WindowsPowerShell\Modules
- AzStackHci.EnvironmentChecker
23H2 のノード入れ替え実施時の状態
23H2 の英語版のノード入れ替えのために、OS のクリーンインストールを実施し、Arc に登録を行い各種拡張機能がインストールされた状態では、「ECEStore」「CloudDeployment」「NugetStore」「PowerShell\Modules」に展開に必要なモジュールがダウンロードされていない状態となっている。
これらの展開に必要なモジュールは Azure Portal からの展開の検証を実施し、「Download content for upgrade」のタスクで各種モジュールのダウンロードが実行される。
検証時には展開はクラスター内の 1 ノードに対して実行が行われており、全てのノードには展開は行われていなかったが、これは想定されてる状態のようで、デプロイの中でダウンロード済みのモジュールを、クラスター内のノードに展開が行われている。
デプロイの検証実行後のディレクトリ構造
- C:\
- ECEStore
- ノードの初期化を実行した場合、GUID のディレクトリは作成されるがディレクトリ内にはファイルが含まれていない。
- 検証フェーズで 1 ノードに対して再配置が行われていた。
- ソリューションアップグレードの展開が正常に完了した後でも、このファイルは全ノードに含まれた状態ではなかったため、全ノードに展開されていなくても問題ないようである。
- LCMBITSStage
- 「CloudDeploymentManifest.xml」として展開の構成ファイルが含まれている。
- CloudDeployment
- 各種モジュールが展開されている。
- 「C:\LCMBITSStage\CloudDeploymentManifest.xml」にベースとなる ZIP ファイルのダウンロード URL が記載されており、この ZIP ファイルにNugetStore のファイルが含まれている。
- NugetStore
- 各種モジュールが展開されている。
- Program Files\WindowsPowerShell\Modules
- 各種モジュールが展開される
検証を実行するとクラスター内の 1 ノードについて、上記のディレクトリが展開されている状態となっていた。
「NugetStore」「PowerShell\Modules」 については、デプロイ時の「Prepare role nugets」のタスクで、既に展開済みのノードからコピーされていた。
そのため、Azure Portal からの検証を実施した際に、クラスター内のいずれかのノードが上記のディレクトリ構造となっていれば問題はない。(各ノード内のディレクトリ構造が非対象となっているのは想定された状態)
「CloudCommon」の展開状態にについての注意
「C:\Program Files\WindowsPowerShell\Modules\CloudCommon」については、デプロイ実行時にクラスター内の各ノードに展開されている必要があるようであった。
この事象は、Issues for version 2311.2 の Fixed Issues に含まれている問題に近いように見えるが、ノード入れ替えのためにクリーンインストールを実施した場合でも発生していた。
クラスター内の一つのノードにしか「CloudCommon」が存在していない場合、デプロイ時に「The specified module ‘CloudCommon’ was not loaded because no valid module file was found in any module directory.」のエラーが発生。
各ノードに「CloudCommon」モジュールが存在していない場合は、存在しているノードからコピーしておく必要がある。
コピー時に ZoneId が付与されていると「AuthorizationManager check failed.」のエラーとなるため、コピー後に「Get-ChildItem -Recurse -File | Unblock-File」で ZoneId を削除しておく。