2022年9月に Azure Load Balancer の Basic SKU 廃止についてアナウンスがありました。
継続利用するには、2025年9月30日までにStandard SKU へのアップグレードが必要です。
期限が迫ってきているので、そろそろアップグレードをご検討されてる方もいると思います。
本記事では Microsoft 推奨方法である「自動スクリプトを使ったアップグレード」を試してみました。
手順は Microsoft 公式ドキュメントを参考にしました。
PowerShell を使用して Basic から Standard にアップグレードする - Azure Load Balancer | Microsoft Learn
- 検証環境
- 事前準備
- AzureBasicLoadBalancerUpgrade モジュールのインストール
- Azure サブスクリプションへ接続する
- Standard Load Balancer へアップグレードを実行する
- 移行成功の検証
- Standard Load Balancer が存在し、その SKU が "Standard" である
- フロントエンド IP 構成の数が一致し、IP アドレスが同じである
- バックエンド プールとそのメンバーシップの数が一致する
- 負荷分散規則の数が一致する
- 正常性プローブの数が一致する
- インバウンド NAT 規則の数が一致する
- インバウンド NAT プールの数が一致する
- 外部 Standard Load Balancer にアウトバウンド規則が構成されている
- 外部 Standard Load Balancer バックエンド プールのメンバーにネットワーク セキュリティ グループが関連付けられている
- おわりに
検証環境
Basic Load Balancer 1台と負荷分散先のバックエンドプールに2台の Web サーバを設置します。
Basic Load Balancer のフロントエンド IP はパブリック IP です。 操作端末から HTTP 80番ポートでフロントエンド IP にアクセスして、アップグレード中の通信断時間を計測します。
同様に、インバウンド NAT 規則を作成して、HTTP 8080番ポートでフロンドエンド IP にアクセスして、1台の Web サーバにアクセスします。
PowerShell の実行はすべて操作端末から行います。
事前準備
以下のモジュールを操作端末にインストールする必要があります。
- PowerShell 7 以降(Windows では PowerShell 5.1 もサポート)
- Az PowerShell モジュールの最新バージョン
- バージョン情報はリリースノートで確認できます
- Azure PowerShell リリース ノート | Microsoft Learn
- Az.ResourceGraph PowerShell モジュール
Install-Module
コマンドを使ってAzureBasicLoadBalancerUpgrade
モジュールをインストールする場合は、自動的に追加されます
PowerShell のバージョン確認
操作端末にインストールされている PowerShell のバージョンを確認します。必要に応じてアップグレードします。
今回はサポートバージョンである 5.1 をそのまま利用します。
$PSVersionTable
Az PowerShell モジュールのインストール
AzureRM モジュールがインストールされていないことを確認します。
Get-Module -Name AzureRM -ListAvailable
PowerShell 実行ポリシーを確認して「リモート署名済み」に設定します。
Get-ExecutionPolicy -List Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Az PowerShell モジュールをインストールします。インストールするには PowerShell を管理者権限で実行する必要があります。
Install-Module -Name Az -Repository PSGallery -Force
Nuget プロバイダーがインストールされてない場合は同時にインストールするか確認メッセージが表示されます。インストール中はコマンド上部に進捗状況が表示されます。
最新バージョンの 12.0.0 がインストールされました。
AzureBasicLoadBalancerUpgrade モジュールのインストール
以下のコマンドを実行してモジュールをインストールします。
Install-Module -Name AzureBasicLoadBalancerUpgrade -Scope CurrentUser -Repository PSGallery -Force
Azure サブスクリプションへ接続する
Basic Load Balancer が存在する Azure サブスクリプションへ接続します
Connect-AzAccount
私の操作端末では以下のエラーが表示されて接続できない場合がありました。
PS C:\> Connect-AzAccount WARNING: Unable to acquire token for tenant 'organizations' with error 'InteractiveBrowserCredential authentication failed: Method not found: 'Void Microsoft.Identity.Client.Extensions.Msal.MsalCacheHelper.RegisterCache(Micros oft.Identity.Client.ITokenCache)'.' WARNING: Please run 'Connect-AzAccount -DeviceCode' if browser is not supported in this session. Connect-AzAccount : InteractiveBrowserCredential authentication failed: Method not found: 'Void Microsoft.Identity.Client.Extensions.Msal.MsalCacheHelper.RegisterCache(Microsoft.Identity.Client.ITokenCache)'. At line:1 char:1
上記のエラーが出た場合は、以下のコマンドを実行後に再度実施すると接続できました。*1
Update-AzConfig -EnableLoginByWam $false
Standard Load Balancer へアップグレードを実行する
アップグレード対象の Basic Load Balancer がサポートされていることを確認します。
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -validateScenarioOnly
警告メッセージが表示されるものの、特にエラーは表示されず完了しました。通信断もありません。
Basic Load Balancer の設定をJSON形式で取得して、アップグレードのログを表示するオプションを入れてアップグレードコマンドを実行します。
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -RecoveryBackupPath C:\BasicLBRecovery -FollowLog
アップグレード中にネットワークセキュリティグループ(NSG)に関する警告が表示されました。
正常に完了しました。
アップグレード所要時間は約3分20秒、通信断時間は以下の結果になりました。
- 負荷分散:2分16秒
- インバウンド NAT:1分27秒
以下のコマンドを実行して、Basic Load Balancer の設定を比較して移行に問題がないか検証します。
Start-AzBasicLoadBalancerUpgrade -validateCompletedMigration -basicLoadBalancerStatePath <backupファイルパス>
エラー表示は無く完了しました。
移行成功の検証
移行が成功したか設定を確認します。確認項目は以下のドキュメントを参考にしました。
PowerShell を使用して Basic から Standard にアップグレードする - Azure Load Balancer | Microsoft Learn
Standard Load Balancer が存在し、その SKU が "Standard" である
SKU が "Standard" に変わっていました。
フロントエンド IP 構成の数が一致し、IP アドレスが同じである
同じパブリック IP アドレスが利用されています。
バックエンド プールとそのメンバーシップの数が一致する
バックエンドプールの名前とメンバーシップ数は一致しています。
負荷分散規則の数が一致する
規則数とその設定について一致しています。
正常性プローブの数が一致する
数とその設定について一致しています。
インバウンド NAT 規則の数が一致する
規則数とその設定について一致しています。
インバウンド NAT プールの数が一致する
インバウンド NAT プールは設定していないため、移行もされていません。
外部 Standard Load Balancer にアウトバウンド規則が構成されている
アウトバウンド規則が構成されています。
外部 Standard Load Balancer バックエンド プールのメンバーにネットワーク セキュリティ グループが関連付けられている
バックエンドプールのメンバーには移行前から設定済のセキュリティグループがそのまま関連付けられています。
以上から、移行は正常に完了したと考えられます。
おわりに
Microsoft 提供の自動スクリプトを利用したアップグレードは大きな問題も無く完了しました。
このスクリプトは Microsoft により頻繁に更新されています。
PowerShell Gallery | AzureBasicLoadBalancerUpgrade 2.4.12
半年前に今回と同じ手順で Standard SKU へのアップグレードを試した際には、NAT 規則が入っているとエラーでアップグレードできないケースがありました。
今回はその問題は改修されていましたので、自動スクリプトは最新バージョンのインストールをお勧めします。
実際にアップグレード作業計画を立てる際には、数分のダウンタイムが許容される時間帯や切戻し作業時間を考慮して計画頂ければと思います。
*1:https://learn.microsoft.com/en-us/answers/questions/1342970/warning-unable-to-acquire-token-for-tenant-organiz