この記事では、Azure PowerShell スクリプトを使用して V1 から V2 にAzure Application GatewayおよびWeb Application Firewall (WAF) を移行する方法について説明します。 移行には、構成の移行とトラフィックの移行という 2 つの段階があります。 拡張複製スクリプト (推奨) または従来の複製スクリプトを使用して、V1 ゲートウェイ構成を新しい V2 ゲートウェイに複製し、最小限のダウンタイムでクライアント トラフィックをリダイレクトできます。
Note
Microsoft は、2023 年 4 月 28 日に Application Gateway V1 SKU (Standard および WAF) の廃止を発表しました。 V1 SKU は、2026 年 4 月 28 日に廃止されます。 詳細については、「2026 年 4 月 28 日までに Application Gateway を V1 SKU から V2 SKU に移行する」を参照してください。
V2 SKU に移行する理由
Application Gateway と WAF V2 には、V1 よりも次の利点があります。
- 回復性 - 可用性ゾーンの冗長性と自動スケーリング。
- Security - Azure Key Vault統合、WAF 機能の強化、ボット保護。
- 監視 - CPU、メモリ、およびディスクの使用状況に関する包括的な監視 (V1 は CPU のみをサポートします)。
- 検出と自動軽減 - 手動による介入なしで問題を特定して解決する高度な検出と自動化された軽減策。
- 新機能 - V2 SKU に対してのみ、すべての新機能がリリースされます。
V1 ゲートウェイは、V2 に自動的にアップグレードされません。 このガイドを使用して、移行を計画して実行します。
この記事では、構成移行の段階について説明します。 クライアント トラフィックの移行は環境によって異なります。 この記事で後述 する一般的な推奨事項 を参照してください。
前提条件
- アクティブなサブスクリプションを持つAzure アカウント。 無料でアカウントを作成できます。
- 既存の Application Gateway V1 Standard。
- 最新の PowerShell モジュール、またはポータルでAzure Cloud Shellを使用できます。
- PowerShell をローカルで実行している場合は、
Connect-AzAccountを実行して、Azureとの接続を作成します。 - V1 サブスクリプションに指定された AppGW V2 名とリソース グループ名を持つ既存のアプリケーション ゲートウェイはありません。 この条件により、既存のリソースが書き換えられなくなります。
- 移行中に、V1 ゲートウェイまたは関連付けられているリソースに対する他の計画された操作はありません。
- パブリック IP アドレスを指定する場合は、正常な状態であることを確認します。 パブリック IP アドレスを指定せず、AppGWResourceGroupName を指定する場合は、名前が AppGWV2Name-IP パブリック IP リソースが、V1 サブスクリプションの AppGWResourceGroupName という名前のリソース グループに存在しないことを確認します。
- V1 SKU の場合、バックエンド サーバーとの TLS 接続を設定するには認証証明書が必要です。 V2 SKU では、同じ目的に対し信頼されたルート証明書をアップロードする必要があります。 V1 では認証証明書として自己署名証明書を使用できます。V2 では、自己署名証明書がバックエンドで使用されている場合には、自己署名ルート証明書の作成とアップロードが義務付けられています。
Note
Application Gateway V2 には、 顧客が制御するバックエンド TLS リラクゼーション機能が含まれています。これは、移行中にバックエンド証明書の検証を効率化する機能です。 この機能を使用すると、証明書チェーン、有効期限の検証、または SNI 検証のオーバーライドをスキップして TLS チェックを一時的に緩和し、動作を V1 SKU で既に許可されているものに合わせます。 拡張移行スクリプトを実行すると、HTTPS バックエンドに対してこれらの緩和設定が既定で有効になり、V2 でのより厳密な証明書の適用によって発生する中断を防ぐことができます。 移行が完了したら、適切な信頼されたルート証明書をアップロードし、バックエンド TLS の緩和を無効にして、V2 の推奨されるセキュリティ体制に合わせます。
Azure Cloud Shell
Azureホスト Azure Cloud Shell、ブラウザーから使用できる対話型シェル環境です。 Cloud Shellで Bash または PowerShell を使用して、Azure サービスを操作できます。 Cloud Shellプレインストールされたコマンドを使用すると、ローカル環境に何もインストールしなくても、この記事のコードを実行できます。
Azure Cloud Shellを開始するには:
| オプション | 例とリンク |
|---|---|
| コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 Try It を選択しても、コードまたはコマンドはCloud Shellに自動的にコピーされません。 | |
| https://shell.azure.com に移動するか、Launch Cloud Shell ボタンを選択してブラウザーでCloud Shellを開きます。 |
|
| Azure ポータルの右上のメニュー バーにある Cloud Shell ボタンを選択します。 |
|
Azure Cloud Shellを使用するには:
Cloud Shellを開始します。
コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。
Windows および Linux で Ctrl+Shift+V を選択して、Cloud Shell セッションにコードまたはコマンドを貼り付けます。 または、macOS で Cmd+Shift+V を選択します。
Enter キーを選択して、コードまたはコマンドを実行します。
Note
Azure Az PowerShell モジュールを使用してAzureを操作することをお勧めします。 作業を開始するには、「Install Azure PowerShellを参照してください。 Az PowerShell モジュールに移行する方法については、「
Note
サブスクリプションで NetworkIsolation を有効にする場合は、パブリックのみでもプライベートのみでも、すべての Application Gateway v2 デプロイを、Microsoft.Network/applicationGateways に委任されたサブネットにデプロイする必要があります。 サブネットの委任を設定するには、次の手順に従います。
構成の移行
構成移行では、既存の V1 環境の設定を使用して新しい V2 ゲートウェイを設定することに重点を置いています。 2 つのAzure PowerShell スクリプトにより、V1 (Standard または WAF) から V2 (Standard_V2 または WAF_V2) ゲートウェイへの構成の移行が容易になります。 これらのスクリプトは、主要なデプロイタスクと構成タスクを自動化することで、移行プロセスを効率化するのに役立ちます。
拡張複製スクリプト - 推奨
強化された複製スクリプトが推奨されるオプションであり、次の方法で移行エクスペリエンスが向上します。
- フロントエンド SSL 証明書とバックエンドの信頼されたルート証明書を手動で入力する必要がなくなります。
- プライベートのみの V2 ゲートウェイのデプロイをサポートします。
Note
既存の V1 Application Gateway がプライベートのみのフロントエンドで構成されている場合は、移行スクリプトを実行する前に、プライベートデプロイの サブスクリプションに EnableApplicationGatewayNetworkIsolation 機能を登録 する必要があります。 この手順は、デプロイエラーを回避するために必要です。
Note
プライベート Application Gateway のデプロイでは、Microsoft.Network/applicationGateways に対してサブネット委任が構成されている必要があります。 サブネットの委任を設定するには、次の手順に従います。
スクリプトのパラメーター: このスクリプトは、次のパラメーターを受け取ります。
-
AppGw V1 ResourceId -Required: このパラメーターは、既存の Standard V1 または WAF V1 ゲートウェイのAzureリソース ID です。 この文字列値を見つけるには、Azure ポータルに移動し、アプリケーション ゲートウェイまたは WAF リソースを選択し、ゲートウェイの Properties リンクを選択します。 そのページにリソース ID があります。
次のAzure PowerShellコマンドを実行してリソース ID を取得することもできます。
$appgw = Get-AzApplicationGateway -Name <V1 gateway name> -ResourceGroupName <resource group Name> $appgw.Id - SubnetAddressRange - 必須: Application Gateway V2 をデプロイするサブネットの CIDR 表記のアドレス
- AppGwName -省略可能: V2 アプリ ゲートウェイの名前。 デフォルト値 = {AppGwV1 Name}_migrated
- AppGwResourceGroupName -省略可能: V2 Application Gateway が作成されるリソース グループの名前。 指定しない場合は、Application Gateway V1 リソース グループが使用されます。
- PrivateIPAddress -省略可能: Application Gateway V2 に割り当てられるプライベート IP アドレス。 指定しない場合は、ランダムなプライベート IP が割り当てられます。
- ValidateBackendHealth -省略可能: ApplicationGatewayBackendHealth 応答を比較して、移行後の検証を行います。 設定されていない場合、この検証はスキップされます。
- PublicIpResourceId -省略可能: パブリック IP アドレス resourceId (既に存在する場合) をアプリケーション ゲートウェイに接続できます。 指定しない場合、パブリック IP 名は {AppGwName}-IP になります。
- DisableAutoscale -Optional: Application Gateway V2 インスタンスの自動スケール構成を無効にします。既定では false
- WafPolicyName -省略可能: WAF V1 構成から作成され、WAF V2 ゲートウェイにアタッチされる WAF ポリシーの名前。
スクリプトを実行する方法
スクリプトを実行するには、次の手順を実行します。
- Azureに接続するには、
Connect-AzAccountを使用します。 - を使用して Az モジュールをインポートします。
-
Set-AzContextコマンドレットを実行して、アクティブなAzure コンテキストを適切なサブスクリプションに設定します。 移行スクリプトは、既存のリソース グループが現在のサブスクリプション コンテキストに存在しない場合、それをクリーンアップする可能性があるので、これは重要なステップです。Set-AzContext -Subscription '<V1 application gateway SubscriptionId>' - スクリプトのインストールの手順に従って 、スクリプトをインストールします。
- 適切なパラメーターを使用してスクリプトを実行します。 スクリプトの完了には 5 ~ 7 分かかる場合があります。
例./AzureAppGWClone.ps1 -resourceId <V1 application gateway Resource ID> -subnetAddressRange <subnet space you want to use> -appgwName <string to use to append> -AppGWResourceGroupName <resource group name you want to use> -privateIpAddress <private IP string> -publicIpResourceId <public IP name string> - disableAutoscale -wafpolicyname <wafpolicyname>./AzureAppGWClone.ps1 ` -resourceId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/applicationGateways/myv1appgateway ` -subnetAddressRange 10.0.0.0/24 ` -appgwname "MynewV2gw" ` -AppGWResourceGroupName "MyResourceGroup" ` -privateIpAddress "10.0.0.1" ` -publicIpResourceId "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/publicIPAddresses/MyPublicIP" `
推奨事項
- スクリプトの完了後、Azure ポータルで V2 ゲートウェイの構成を確認し、V2 ゲートウェイの IP にトラフィックを直接送信して接続をテストします。
- このスクリプトは、複製中に既定でバックエンド TLS 検証を緩和します (証明書チェーン、有効期限、SNI 検証なし)。 より厳密な TLS 検証または認証証明書が必要な場合は、作成後に Application Gateway V2 を更新して、信頼されたルート証明書を追加し、必要に応じてこの機能を有効にすることができます。
- NTLM/Kerberos パススルーの場合は、複製後に HTTP 設定で専用バックエンド接続を "true" に設定します。
注意事項
- V1 ゲートウェイが配置されている仮想ネットワーク内の別のサブネットの IP アドレス空間を指定する必要があります。 スクリプトでは、V1 ゲートウェイが既に存在するサブネットに、V2 ゲートウェイを作成することはできません。 サブネットに V2 ゲートウェイが既にある場合、十分な IP アドレス空間を使用できれば、スクリプトは引き続き動作する可能性があります。
- V2 ゲートウェイ サブネットに関連付けられているネットワーク セキュリティ グループまたはユーザー定義ルートがある場合は、移行を成功させるために、それらが NSG 要件と UDR要件に準拠していることを確認します
- V1 ゲートウェイで FIPS モードを有効にしている場合、それは新しい V2 ゲートウェイに移行されません。
- 新しい WAF V2 は、既定で CRS 3.0 を使用するように構成されています。 ただし、CRS 3.0 は非推奨になるパス上にあるため、移行後に最新のルール セット DRS 2.2 にアップグレードします。 詳細については、 CRS および DRS ルール グループとルールを参照してください。
Note
移行中は、V1 ゲートウェイまたは関連付けられているリソースに対して他の操作を試みないでください。
レガシ複製スクリプト
従来の複製スクリプトは、次の方法で移行を容易にします。
- ユーザー指定の仮想ネットワーク サブネットに新しいStandard_V2または WAF_V2 Application Gateway を作成する。
- 既存の Standard または WAF V1 ゲートウェイから新しく作成された V2 ゲートウェイに構成を自動的にコピーします。
- TLS/SSL 証明書と認証証明書を入力として指定する必要があります。 このスクリプトでは、プライベートのみの V2 ゲートウェイはサポートされていません。 この複製スクリプトは、PowerShell ギャラリーからダウンロードできます。
スクリプトのパラメーター: レガシ スクリプトは、次のパラメーターを受け取ります。
-
resourceId: [String]: Required: このパラメーターは、既存の Standard V1 または WAF V1 ゲートウェイのAzureリソース ID です。 この文字列値を見つけるには、Azure ポータルに移動し、アプリケーション ゲートウェイまたは WAF リソースを選択し、ゲートウェイの Properties リンクを選択します。 そのページにリソース ID があります。
次のAzure PowerShellコマンドを実行してリソース ID を取得することもできます。
$appgw = Get-AzApplicationGateway -Name <V1 gateway name> -ResourceGroupName <resource group Name> $appgw.Id - subnetAddressRange: [String]: 必須: このパラメーターは、新しい V2 ゲートウェイを含む新しいサブネットに割り当てた (または割り当てる) IP アドレス空間です。 アドレス空間は、CIDR 表記で指定する必要があります。 例: 10.0.0.0/24。 このサブネットを事前に作成する必要はありませんが、CIDR は VNET のアドレス空間の一部である必要があります。 存在しない場合は、スクリプトによって作成されます。存在する場合は、既存のものが使われます (サブネットが空であるか、V2 ゲートウェイだけが含まれ、使用可能な IP が十分にあることを確認してください)。
- appgwName: [String]: 省略可能。 これは、新しい Standard_V2 または WAF_V2 ゲートウェイの名前として使うように指定する文字列です。 このパラメーターが指定されていない場合、既存の V1 ゲートウェイの名前にサフィックス _V2 を付加したものが使われます。
- AppGWResourceGroupName: [String]: 省略可能。 V2 Application Gateway リソースを作成するリソースグループの名前 (既定値は です)
Note
V1 サブスクリプションに、AppGW V2 名とリソース グループ名が指定された既存の Application Gateway がないことを確認します。 これにより、既存のリソースが書き換えられます。
sslCertificates: [PSApplicationGatewaySslCertificate]: 省略可能。 V1 ゲートウェイの TLS/SSL 証明書を表すために作成する PSApplicationGatewaySslCertificate オブジェクトのコンマ区切りの一覧を、新しい V2 ゲートウェイにアップロードする必要があります。 Standard V1 または WAF V1 ゲートウェイ用に構成された TLS/SSL 証明書ごとに、次に示す コマンドを使って、新しい PSApplicationGatewaySslCertificate オブジェクトを作成できます。 TLS または SSL 証明書ファイルへのパスとパスワードが必要です。
このパラメーターは、V1 ゲートウェイまたは WAF 用に構成された HTTPS リスナーがない場合にのみ省略できます。 HTTPS リスナーのセットアップが少なくとも 1 つある場合、このパラメーターを指定する必要があります。
$password = ConvertTo-SecureString <cert-password> -AsPlainText -Force $mySslCert1 = New-AzApplicationGatewaySslCertificate -Name "Cert01" ` -CertificateFile <Cert-File-Path-1> ` Password $password $mySslCert2 = New-AzApplicationGatewaySslCertificate -Name "Cert02" ` -CertificateFile <Cert-File-Path-2> ` -Password $passwordスクリプトでは前の例の (コンマ区切り) をこのパラメーターの値として渡すことができます。
Key Vault からの sslCertificates: 省略可能。 Azure Key Vaultに格納されている証明書をダウンロードし、移行スクリプトに渡すことができます。 証明書を PFX ファイルとしてダウンロードするには、次のコマンドを実行します。 これらのコマンドは、SecretId にアクセスし、内容を PFX ファイルとして保存します。
$vaultName = ConvertTo-SecureString <kv-name> -AsPlainText -Force $certificateName = ConvertTo-SecureString <cert-name> -AsPlainText -Force $password = ConvertTo-SecureString <password> -AsPlainText -Force $pfxSecret = Get-AzKeyVaultSecret -VaultName $vaultName -Name $certificateName -AsPlainText $secretByte = [Convert]::FromBase64String($pfxSecret) $x509Cert = New-Object Security.Cryptography.X509Certificates.X509Certificate2 $x509Cert.Import($secretByte, $null, [Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable) $pfxFileByte = $x509Cert.Export([Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password) # Write to a file [IO.File]::WriteAllBytes("KeyVaultcertificate.pfx", $pfxFileByte)Key Vault からダウンロードした証明書ごとに、次に示す New-AzApplicationGatewaySslCertificate コマンドを使って、新しい PSApplicationGatewaySslCertificate オブジェクトを作成できます。 TLS または SSL 証明書ファイルへのパスとパスワードが必要です。
//Convert the downloaded certificate to SSL object $password = ConvertTo-SecureString <password> -AsPlainText -Force $cert = New-AzApplicationGatewaySSLCertificate -Name <certname> -CertificateFile <Cert-File-Path-1> -Password $passwordtrustedRootCertificates: [PSApplicationGatewayTrustedRootCertificate]: 省略可能。 v2 ゲートウェイのバックエンド インスタンスの認証用の信頼されたルート証明書を表すために作成する、PSApplicationGatewayTrustedRootCertificate オブジェクトのコンマ区切りの一覧です。
$certFilePath = ".\rootCA.cer" $trustedCert = New-AzApplicationGatewayTrustedRootCertificate -Name "trustedCert1" -CertificateFile $certFilePathPSApplicationGatewayTrustedRootCertificate オブジェクトの一覧を作成するには、「New-AzApplicationGatewayTrustedRootCertificate」を参照してください。
privateIpAddress: [String]: 省略可能. 新しい V2 ゲートウェイに関連付ける特定のプライベート IP アドレス。 これは、新しい V2 ゲートウェイに割り当てるのと同じ VNet のものである必要があります。 これが指定されていない場合は、スクリプトによって V2 ゲートウェイにプライベート IP アドレスが割り当てられます。
publicIpResourceId: [String]: 省略可能。 新しい V2 ゲートウェイに割り当てる、ご自分のサブスクリプション内の既存のパブリック IP アドレス (Standard SKU) リソースのリソース ID です。 パブリック IP リソース名が指定されている場合、それが正常な状態であることを確認します。 これが指定されていない場合、スクリプトによって同じリソース グループ内の新しいパブリック IP アドレスが割り当てられます。 名前は、V2 ゲートウェイの名前に -IP が付加されたものになります。 AppGWResourceGroupName が指定されていて、パブリック IP アドレスが指定されていない場合は、名前 AppGWV2Name-IP のパブリック IP リソースが、V1 サブスクリプションの AppGWResourceGroupName という名前のリソース グループに存在しないことを確認します。
validateMigration: [switch]: 省略可能。 V2 ゲートウェイの作成と構成のコピーが完了した後に、スクリプトで基本的な構成比較検証を実行するには、このパラメーターを使用します。 既定では、検証は行われません。
enableAutoScale: [switch]: 省略可能. スクリプトで新しい V2 ゲートウェイを作成した後に自動スケールを有効にするには、このパラメーターを使用します。 既定では、自動スケーリングは無効です。 新しい V2 ゲートウェイを作成した後でいつでも、手動でこれを有効にできます。
スクリプトを実行する方法
スクリプトを実行するには、次の手順を実行します。
- Azureに接続するには、
Connect-AzAccountを使用します。 - を使用して Az モジュールをインポートします。
-
Set-AzContextコマンドレットを実行して、アクティブなAzure コンテキストを適切なサブスクリプションに設定します。 移行スクリプトは、既存のリソース グループが現在のサブスクリプション コンテキストに存在しない場合、それをクリーンアップする可能性があるので、これは重要なステップです。Set-AzContext -Subscription '<V1 application gateway SubscriptionId>' - スクリプトのインストールの手順に従って 、スクリプトをインストールします。
- を実行して必要なパラメーターを調べます。
- 適切なパラメーターを使用してスクリプトを実行します。 スクリプトの完了には 5 ~ 7 分かかる場合があります。
例./AzureAppGWMigration.ps1 -resourceId <V1 application gateway Resource ID> -subnetAddressRange <subnet space you want to use> -appgwName <string to use to append> -AppGWResourceGroupName <resource group name you want to use> -sslCertificates <comma-separated SSLCert objects as above> -trustedRootCertificates <comma-separated Trusted Root Cert objects as above> -privateIpAddress <private IP string> -publicIpResourceId <public IP name string> -validateMigration -enableAutoScale./AzureAppGWMigration.ps1 ` -resourceId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/applicationGateways/myv1appgateway ` -subnetAddressRange 10.0.0.0/24 ` -appgwname "MynewV2gw" ` -AppGWResourceGroupName "MyResourceGroup" ` -sslCertificates $mySslCert1,$mySslCert2 ` -trustedRootCertificates $trustedCert ` -privateIpAddress "10.0.0.1" ` -publicIpResourceId "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/publicIPAddresses/MyPublicIP" ` -validateMigration -enableAutoScale
注意事項と制限事項
- 新しい V2 ゲートウェイには、新しいパブリック IP アドレスとプライベート IP アドレスがあります。 既存の V1 ゲートウェイに関連付けられている IP アドレスを、V2 にシームレスに移動することはできません。 ただし、既存の (未割り当ての) パブリックまたはプライベート IP アドレスを、新しい V2 ゲートウェイに割り当てることはできます。
- V1 ゲートウェイが配置されている仮想ネットワーク内の別のサブネットの IP アドレス空間を指定する必要があります。 スクリプトでは、V1 ゲートウェイが既に存在するサブネットに、V2 ゲートウェイを作成することはできません。 サブネットに V2 ゲートウェイが既にある場合、十分な IP アドレス空間を使用できれば、スクリプトは引き続き動作する可能性があります。
- V2 ゲートウェイ サブネットに関連付けられているネットワーク セキュリティ グループまたはユーザー定義ルートがある場合は、移行を成功させるために NSG 要件 と UDR 要件 に準拠していることを確認します。
- 仮想ネットワーク サービス エンドポイント ポリシーは現在、Application Gateway のサブネットではサポートされません。
- TLS/SSL の構成を移行するには、V1 ゲートウェイで使われているすべての TLS/SSL 証明書を指定する必要があります。
- V1 ゲートウェイで FIPS モードを有効にしている場合、それは新しい V2 ゲートウェイに移行されません。
- WAF V2 は、古い WAF 構成モードで作成されます。WAF ポリシーへの移行が必要です。
- 新しい WAF V2 は、既定で CRS 3.0 を使用するように構成されています。 ただし、CRS 3.0 は非推奨になるパス上にあるため、移行後に最新のルール セット DRS 2.2 にアップグレードします。 詳細については、 CRS および DRS ルール グループとルールを参照してください。
Note
NTLM および Kerberos パススルー認証は、Application Gateway V2 でサポートされています。 詳細については、「 専用バックエンド接続」を参照してください。
スクリプトのインストール
Note
移行スクリプトを実行する前に、毎回 コマンドレットを実行します。 これは、アクティブなAzure コンテキストを適切なサブスクリプションに設定するために必要です。現在のサブスクリプション コンテキストに存在しない場合、移行スクリプトによって既存のリソース グループがクリーンアップされる可能性があるためです。
ローカルの PowerShell 環境のセットアップと設定に応じて、次の 2 つのオプションがあります。
- Azure Az モジュールがインストールされていない場合、または Azure Az モジュールをアンインストールしても構わない場合は、
Install-Scriptオプションを使用してスクリプトを実行することをお勧めします。 - Azure Az モジュールを保持する必要がある場合は、スクリプトをダウンロードして直接実行します。
Azure Az モジュールがインストールされているかどうかを確認するには、
Get-InstalledModule -Name azを実行します。 インストールされている Az モジュールが見つからなかった場合は、 メソッドを使用できます。
Install-Script メソッドを使用してインストールする (推奨)
このオプションを使用するには、Azure Az モジュールがコンピューターにインストールされていない必要があります。 インストールされている場合、次のコマンドにはエラーが表示されます。 Azure Az モジュールをアンインストールするか、他のオプションを使用してスクリプトを手動でダウンロードして実行できます。
次のコマンドを使用してスクリプトを実行し、最新バージョンを取得します。
パブリック IP 保持スクリプトの複製を強化するには -
拡張複製スクリプトの場合 -
従来の複製スクリプトの場合 -
このコマンドでは、必要な Az モジュールもインストールされます。
スクリプトを使用して直接インストールする
一部のAzure Az モジュールがインストールされていて、それらをアンインストールできない (またはアンインストールしたくない) 場合は、スクリプトダウンロード リンクの Manual Download タブを使用してスクリプトを手動でダウンロードできます。
スクリプトは、生の nupkg ファイルとしてダウンロードされます。 この nupkg ファイルからスクリプトをインストールするには、「パッケージの手動ダウンロード」を参照してください。
従来の複製スクリプトの場合、バージョン 1.0.11 は、主要なバグ修正を含む新しいバージョンの移行スクリプトです。
ダウンロードしたスクリプトのバージョンを調べる方法
ダウンロードしたスクリプトのバージョンを調べる手順は次のとおりです。
- NuGet パッケージの内容を抽出します。
- フォルダー内の ファイルを開き、先頭にある を調べて、ダウンロードしたスクリプトのバージョンを確認します
<#PSScriptInfo
.VERSION 1.0.10
.GUID aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
.AUTHOR Microsoft Corporation
.COMPANYNAME Microsoft Corporation
.COPYRIGHT Microsoft Corporation. All rights reserved.
トラフィックの移行
前提条件
- まず、スクリプトによって、V1 ゲートウェイから移行された正確な構成で、V2 の新しいゲートウェイが正常に作成されたことを再確認します。 これは、Azure ポータルから確認できます。
- また、手動テストとして少量のトラフィックを V2 ゲートウェイ経由で送信します。
パブリック IP 保持スクリプト
構成を正常に移行し、新しい V2 ゲートウェイを徹底的にテストした後、この手順ではライブ トラフィックのリダイレクトに重点を置きます。 Azure PowerShell スクリプトを提供し、V1 からパブリック IP アドレスを保持するように設計されています。
- パブリック IP のスワップ: このスクリプトは、V1 から Basic パブリック IP を予約し、Standard に変換して、V2 ゲートウェイに接続します。 これにより、すべての受信トラフィックが V2 ゲートウェイに効果的にリダイレクトされます。
- 予期されるダウンタイム: 通常、この IP スワップ操作により、 約 1 ~ 5 分の短いダウンタイムが発生します。 それに従って計画を立てます。
- スクリプトの実行が成功すると、パブリック IP は Application Gateway V1 から Application Gateway V2 に移動され、Application Gateway V1 は新しいパブリック IP を受信します。
Note
IP 移行スクリプトは、数字で始まる DNS 名を持つパブリック IP アドレス リソースをサポートしていません。 パブリック IP アドレス リソースでは、番号で始まる DNS 名ラベルが許可されないため、この制限が存在します。 この問題は、パブリック IP アドレスに {GUID}.cloudapp.net 形式の既定の DNS 名が自動的に割り当てられる 2023 年 5 月より前に作成された V1 ゲートウェイで発生する可能性が高くなります。 移行を続行するには、スクリプトを実行する前に文字で始まる DNS 名ラベルを使用するようにパブリック IP アドレス リソースを更新します。 パブリック IP DNS の構成について説明します
スクリプトのパラメーター:
このスクリプトには、次の必須パラメーターが必要です。
- V1 ResourceId – パブリック IP が予約され、V2 に関連付けられる V1 アプリケーション ゲートウェイのリソース ID。
- V2 ResourceId – V1 パブリック IP が割り当てられる V2 アプリケーション ゲートウェイのリソース ID。 V2 ゲートウェイは、手動で作成することも、複製スクリプトを使用して作成することもできます。
スクリプトをダウンロードしてインストールした後
必要なパラメーターを使用して AzureAppGWIPMigrate.ps1 を実行します。
./AzureAppGWIPMigrate.ps1
-v1resourceId <V1 application gateway Resource ID>
-v2resourceId <V2 application gateway Resource ID>
例
./AzureAppGWIPMigrate.ps1 `
-v1resourceId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/applicationGateways/myv1appgateway `
-v2resourceId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/applicationGateways/myv2appgateway `
IP スワップが完了したら、V2 ゲートウェイでコントロール プレーンとデータ プレーンの操作を確認します。 V1 ゲートウェイでは、Delete を除くすべてのコントロール プレーン アクションが無効になります。
Note
IP 移行中は、V1 および V2 ゲートウェイまたは関連付けられているリソースに対して他の操作を試みないでください。
Note
このスクリプトによって実行されるパブリック IP スワップは元に戻すことができません。 一度開始すると、スクリプトを使用して IP を V1 ゲートウェイに戻すことはできません。
Traffic Migrationに関する推奨事項
現在のアプリケーション ゲートウェイ (Standard) がクライアント トラフィックを受信できるシナリオと、それぞれの推奨事項を次に示します。
- Standard V1 または WAF V1 ゲートウェイに (A レコードを使って) 関連付けられているフロントエンド IP アドレスを指すカスタム DNS ゾーン (例: contoso.com)。 Standard_V2 アプリケーション ゲートウェイに関連付けられているフロントエンド IP または DNS ラベルを指すように、DNS レコードを更新できます。 DNS レコードに構成されている TTL によっては、すべてのクライアント トラフィックが新しい V2 ゲートウェイに移行するまでに時間がかかる場合があります。
- (CNAME レコードを使用して) V1 ゲートウェイに関連付けられた DNS ラベル (例: myappgw.eastus.cloudapp.azure.com) を指すカスタム DNS ゾーン (例: contoso.com)。
次の 2 つの選択肢があります。
- アプリケーション ゲートウェイでパブリック IP アドレスを使っている場合は、Traffic Manager プロファイルを使って制御されたきめ細かい移行を行い、トラフィックを新しい V2 ゲートウェイに段階的にルーティングできます (重み付けによるトラフィック ルーティング方法)。 これを行うには、V1 と V2 両方のアプリケーション ゲートウェイの DNS ラベルを Traffic Manager プロファイルに追加し、カスタム DNS レコード (例: ) を Traffic Manager ドメイン (例: contoso.trafficmanager.net) への CNAME します。
- または、新しい V2 アプリケーション ゲートウェイの DNS ラベルを指すように、カスタム ドメインの DNS レコードを更新できます。 DNS レコードに構成されている TTL によっては、すべてのクライアント トラフィックが新しい V2 ゲートウェイに移行するまでに時間がかかる場合があります。
- クライアントがアプリケーション ゲートウェイのフロントエンド IP アドレスに接続する。 新しく作成された V2 アプリケーション ゲートウェイに関連付けられている IP アドレスを使用するようにクライアントを更新します。 IP アドレスを直接使用しないことをお勧めします。 独自のカスタム DNS ゾーン (例: contoso.com) に CNAME できる、アプリケーション ゲートウェイに関連付けられた DNS 名ラベル (例: yourgateway.eastus.cloudapp.azure.com) を使用することを検討してください。
移行後
トラフィックの移行が成功し、V2 ゲートウェイ経由でアプリケーションが正しく実行されていることを完全に確認したら、不要なコストを回避するために、古い V1 Application Gateway リソースを安全に使用停止および削除できます。
価格に関する考慮事項
Application Gateway V1 SKU と V2 SKU では、価格モデルが異なります。 V2 は使用量に基づいて課金されます。 価格情報については、移行の前に「Application Gateway の価格」をご覧ください。
コスト効率のガイダンス
V2 SKU には、5 倍のパフォーマンス向上、Key Vault統合によるセキュリティの向上、WAF_V2でのセキュリティ規則の迅速な更新、WAF カスタム ルール、ポリシーの関連付け、ボット保護など、さまざまな利点があります。 また、高いスケーラビリティ、最適化されたトラフィック ルーティング、Azure サービスとのシームレスな統合も提供します。 これらの機能により、全体的なユーザー エクスペリエンスを向上させ、トラフィックが多い時間帯の速度低下を防ぎ、高くつくデータ侵害を回避できます。
V1 SKU では、レベルとサイズに基づいて、Standard_Small、Standard_Medium、Standard_Large、WAF_Medium、WAF_Large の 5 つのバリエーションを利用できます。
| SKU | V1 固定月額 | V2 固定月額 | 推奨 |
|---|---|---|---|
| 標準メディア | 102.2 | 179.8 | V2 SKU は V1 ゲートウェイより多くの要求を処理できるため、複数の V1 ゲートウェイを 1 つの V2 ゲートウェイに統合して、コストを最適化することをお勧めします。 統合によって、Application Gateway の制限を超えないようにしてください。 3:1 の統合をお勧めします。 |
| WAF Medium | 183.96 | 262.8 | Standard Medium の場合と同じ |
| 標準ラージ | 467.2 | 179.58 | これらのバリエーションでは、ほとんどの場合、V2 ゲートウェイに移行すると、V1 より優れた価格ベネフィットが得られます。 |
| WAF ラージ | 654.08 | 262.8 | Standard Large の場合と同じ |
Note
ここで示す計算は、米国東部と、V1 に 2 つのインスタンスがあるゲートウェイに基づいています。 V2 の変動コストは、使用率が最も高い 3 つのディメンションのいずれかに基づいています。新しい接続 (50/秒)、永続的な接続 (2500 永続接続/分)、スループット (1 CU で 2.22 Mbps を処理できます)。
ここで説明するシナリオは例であり、説明のみを目的としています。 ご自身のリージョンに応じた価格の情報については、価格のページをご覧ください。
価格に関してさらに心配がある場合は、CSAM と協力するか、サポート チームにお問い合わせください。
一般的な質問
移行に関する一般的な質問については、 V1 から V2 への移行に関する FAQ を参照してください。
次のステップ
Application Gateway V2 について理解する