みち草

Azure中心にまとめる技術情報ブログ

Application Gatewayをv1からv2へ移行する!Part1

はじめに

少し前にV2がリリースされたApplication Gateway(以下、AppGW)について、以下の記事がありました。

新しい Azure Application Gateway V2 の利用方法 | ブログ | Microsoft Azure

記事中で、"V1と同じ設定値のV2ゲートウェイを手で作れば移行できるけど大変だからスクリプト発行した。いくつか制限があるけど設定値コピーできるよ"という感じの記載があったので、実際試してみることにしました。

Part1では更改されている移行方法とスクリプトの注意点についてまとめ、Part2で実際にスクリプトを動かそうと思います。

Part2はこちら。

Application Gatewayをv1からv2へ移行する!Part2 - みち草

目次

Application Gatewayとは

主題ではないので簡単にですが、Application Gatewayの概要です。Application Gatewayとは、Azureが提供するロードバランサの1つです。標準ロードバランサとの違いは多々ありますが、例えば以下です。

  • L7対応(標準はL4)
  • 稼働時間により利用料金がかかる
  • 専用サブネットが必要
  • SSLオフロードが可能
  • WAF機能がある

ここまではV1でも持つ機能なのですが、V2になると更に以下の機能も増えます。

  • オートスケールに対応
  • ゾーン冗長に対応
  • デプロイと設定変更のスピードアップ

オートスケールも需要有りそうですが、個人的にはスピードアップがうれしいです。設定変更で15分くらい待たされることもあるので。。。

v2への移行方法

移行の仕方については、以下のサイトに紹介されています。

Migrate from v1 to v2 - Azure Application Gateway | Microsoft Docs

移行は以下の2ステップで行います、ということなのでなかなか大変です。

  1. 既存のAppGW(v1)と同じ設定のAppGW(v2)を作成する。
  2. v1で受けているトラフィックを、v2で受ける用にする。(DNS切り替えなど)

ただ、1の同一設定で作成する、という部分はMSからPowerShellスクリプトが提供されています。

先ほどのサイト内にもリンクがありますが、以下からダウンロードできます。

PowerShell Gallery | AzureAppGWMigration 1.0.3

まずは、これについて仕様を確認します。

移行用スクリプトの注意/制限

スクリプトとしては、以下のことを実行するようです。

  • 新しいAppGW(Standard/WAF)を指定のサブネットに作成する。
  • AppGW(v1)から、新しく作成されたAppGW(v2)への設定値コピーをシームレスに行う。

単純に、v1の設定値を抜いてv2に入れる、ということなのでしょう。Getだけであればv1側が停止することもありません。

スクリプトの仕様や注意点としては、以下のことが挙げられています。それぞれ補足していきます。

  • 新しいv2GWは、v2のパブリック/プライベートIPアドレスをシームレスに引き継ぐことはできない。既存の未割当のパブリックIPアドレスまたはプライベートIPアドレスを割り当てることはできる。

プライベートIPアドレスであれば、ダウンタイムが発生しますが、v1AppGWを削除やアドレス変更してやればv2AppGWに同じIPアドレスを割り当てることはできるでしょう。

しかし、"AppGWに割り当てるパブリックIPアドレスは動的でなければならない"という仕様上、AppGWから外した瞬間にIPが変わります。なので、パブリックIPアドレスの引き継ぎはできません。

f:id:kkkzk:20190920002810p:plain

素直にDNS切り替えなどする他なさそうです。

  • v1GWが属するサブネットとは別に、仮想ネットワークサブネットが必要。スクリプトでは、v1GWと同じサブネットにはv2GWを作成しない。既にv2GWがありIPアドレスの空も十分あればいけるかも。

これは仕様のようです。

ポータルでv2AppGWの作成を試みると、空が十分にあるにも関わらず、v1AppGWが属するサブネットが選べませんでした。(もう一方はVMがいる)

f:id:kkkzk:20190920002833p:plain

f:id:kkkzk:20190920002841p:plain

f:id:kkkzk:20190920002847p:plain

v2に移行が完了した後、古いサブネットを消す、などが必要になりそうです。

  • SSL設定を移行する場合には、v1GWが持つ全ての証明書を指定する必要がある。

どう指定するのか、はスクリプトを動かさないとわかりませんが、非常に手間がかかりそうな予感。。。

  • v1GWでFIPSモードを有効化していても、v2ではサポートしていないので移行されない。

これについては、少なくともポータルにはそんな設定はないので、コマンド専用なのか、FIPSモードが何を指しているのか、わかりませんでした。

後に判明したら追記します。

  • v2GWではIPv6をサポートしていないので、使用していると移行できない。(スクリプトが止まる)

使うかどうかは別として、これは次の項目のように明確に"currently"と書かれていないので、そのうち変わる可能性があるのかどうかわかりません。

  • v1GWがプライベートIPアドレスしか持たなくても、現状v2GWではプライベートIPアドレスのみの構成をサポートしていないため、パブリック/プライベートの両IPアドレスが割り当てられる。

これは、現状プライベートでしか利用していない方からすると困るところです。

"currently"とあるので今後変更があると思いますが、今移行する場合には、サブネットにNSGを適用して、外部からは入れないようにするしかないですね。

パブリックIPアドレスがついているけど塞いでいるから大丈夫、という若干気になる構成にはなってしまうので、移行のタイミングも要検討ですね。

Part1はここまでとして、Part2に続きます。

Application Gatewayをv1からv2へ移行する!Part2 - みち草