Application Gateway 設定変更の影響

Last Update: feedback 共有

こんにちは、Azure テクニカル サポート チームの杜です。

Application Gateway に設定変更を行う際に既存接続(TCP コネクション)への影響についてご紹介させて頂きます。
SKU により動作が異なっていますので、以下にて各 SKU の詳細をご説明します。

Application Gateway SKU Standard_v1 & WAF_v1

設定変更の影響

基本的には既存接続に影響するような設定変更をしない限り影響はありません。

例えば、1つの Application Gateway に以下の設定が入っている場合は

  • リスナー A → 要求ルーティング A → HTTP設定 A → バックエンド プール A, カスタム正常性プローブ A
  • リスナー B → 要求ルーティング B → HTTP設定 B → バックエンド プール B, カスタム正常性プローブ B

任意の設定 A に対する設定変更、もしくは新規設定を追加してもリスナー B への既存接続に影響しません。

影響がある場合の動作

既存接続が使用している設定を変更する場合、Application Gateway から クライアントに対して基本的に TCP RST を送信する動作だと確認しています。

例えば、リスナー A が使用している証明書を更新しますと、パケット キャプチャにて以下の動作が確認しています。

クライアント IP 192.168.0.172
Application Gateway パブリック IP 20.48.x.x

パケット レベルの詳細動作について現時点では公開ドキュメントに記載されておらず、保証される動作わけではございませんので、予めご了承ください。

影響がある設定変更内容

以下に確認済みの既存接続に影響する設定変更をまとめています。

  • リスナー証明書の更新
  • リスナーのプロトコルやポート番号の変更
  • SSLポリシーや TLS バージョの変更
  • バックエンド設定にあるポート番号やプロトコルの変更
  • バックエンド プールからサーバーの削除
    • 接続のドレインが無効の場合: 削除されたバックエンド サーバーとの接続が切断され、クライアントに HTTP 502 エラーが返えされる
    • 接続のドレインが有効の場合: 設定されたタイムアウト時間内に、Application Gateway とバックエンド プールのセッションが維持され、既存の進行中リクエストの完了まで待つ

影響がない設定変更内容

以下に確認済みの既存接続に影響しない設定変更をまとめています。

  • 使用されていないリスナー、バックエンド設定、正常性プローブ、ルートなどの設定の追加及び削除
  • SKU サイズ(S→M、M→Lなど)の変更
  • SKU 種類(Standard→WAF, WAF→Standard)の変更
  • インスタンス増減
  • バックエンド プールにサーバーの追加
  • HTTP2(無効→有効、有効→無効)の変更
  • バックエンド設定に接続ドレイン(無効→有効、有効→無効、タイムアウト時間)の変更
  • バックエンド設定に Cookie ベースのアフィニティ(無効→有効、有効→無効、Cookie名)の変更
  • 診断設定の追加、編集、削除

Application Gateway SKU Standard_v2 & WAF_v2

設定変更の影響

基本的には全般の作業がすべての既存接続に影響を与えます。
たとえ関連しない新規設定を追加するだけでも、既存すべてのリスナーへの TCP 接続が切断される動作となります。

例えば、1つの Application Gateway に以下の設定が入っている場合は

  • リスナー A → 要求ルーティング A → HTTP設定 A → バックエンド プール A, カスタム正常性プローブ A
  • リスナー B → 要求ルーティング B → HTTP設定 B → バックエンド プール B, カスタム正常性プローブ B

任意の設定 A か B に対する設定変更、もしくは新規の HTTP 設定やバックエンド プールを追加しますと、リスナー A 及び B への既存接続が切断されます。

影響がある場合の動作

任意の設定が変更される場合は、Application Gateway から クライアントに対して TCP FIN を送信する動作だと確認しています。

例えば、リスナー A が使用している証明書を更新しますと、パケット キャプチャにて以下の動作が確認しています。

クライアント IP 192.168.0.172
Application Gateway パブリック IP 20.48.x.x

パケット レベルの詳細動作について現時点では公開ドキュメントに記載されていなく、保証される動作わけではございませんので、予めご了承ください。

よくある質問

TCP コネクションが切断されますが、実際にクライアントに対してどんな影響されますか?

クライアントの接続設定と挙動により一概にご案内できませんが、例えば Chrome などのブラウザが再接続などによって基本的には瞬断以外の影響はないと思われますが、
もし少しの切断も許されないような環境でご利用の場合、メンテナンスの時間帯を設置して Application Gateway の設定変更をご実施頂きますようお願い致します。

設定変更してから既存接続が切断されるまでどのぐらい時間かかりますか?

Azure 基盤側の処理状況によって固定ではありませんが、数十秒から数分間かかる場合は多いと見受けられます。
Azure ポータルから設定変更した場合は、下記のような設定変更の通知が出た後、数十秒後に接続済みの TCP コネクションが Application Gateway 側よりクローズされる動作を確認しています。

Application Gateway v2 が KeyVault と連携している場合では、Key Vault 側で証明書を更新した際にも同じように瞬断などの影響を受けますか?

以下の公開ドキュメントに記載されている通り、KeyVault と連携した場合は証明書更新が検出されると Application Gateway に自動的に反映する動作となります。

インスタンスによって Key Vault が 4 時間間隔でポーリングされ、証明書の更新バージョン (存在する場合) が取得されます。 更新された証明書が検出されると、HTTPS リスナーに現在関連付けられている TLS または SSL 証明書が自動的にローテーションされます。

この時に手動で証明書更新と同様な影響を受けることを確認しています。
そのため、既存接続に影響するタイミングをコントロールされたい場合は、証明書は手動更新にして頂きますようにお願い致します。

以上、ご参考になれば幸いです。

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。