Azure Load Balancer を Basic SKU から Standard SKU へアップグレードしてみた

2022年9月に Azure Load Balancer の Basic SKU 廃止についてアナウンスがありました。

Azure Basic Load Balancer will be retired on 30 September 2025—upgrade to Standard Load Balancer | Azure updates | Microsoft Azure

継続利用するには、2025年9月30日までにStandard SKU へのアップグレードが必要です。

期限が迫ってきているので、そろそろアップグレードをご検討されてる方もいると思います。

本記事では Microsoft 推奨方法である「自動スクリプトを使ったアップグレード」を試してみました。

手順は Microsoft 公式ドキュメントを参考にしました。

PowerShell を使用して Basic から Standard にアップグレードする - Azure Load Balancer | Microsoft Learn

検証環境

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 モジュールの最新バージョン
  • 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 規則が入っているとエラーでアップグレードできないケースがありました。

今回はその問題は改修されていましたので、自動スクリプトは最新バージョンのインストールをお勧めします。

実際にアップグレード作業計画を立てる際には、数分のダウンタイムが許容される時間帯や切戻し作業時間を考慮して計画頂ければと思います。

執筆担当者プロフィール
菅原 丈晴

菅原 丈晴(日本ビジネスシステムズ株式会社)

ネットワーク機器の設計/構築エンジニア。最近は仮想基盤・クラウドを触っています。

担当記事一覧