5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure Application Gatewayマルチサイトを使ってメンテナンスモードを実現してみた

Last updated at Posted at 2021-04-30

やりたいこと

Azure Application Gatewayでの単一サイト構成では以下の図のような形になります。

image.png

これをApplication Gatewayマルチサイト機能を使って、通常ルートとメンテナンス用ルートに分けることができないか検証してみたので書き残します。メンテナンスモードを作り出すイメージです。
図で表すと以下のような構成です。

通常時

  • ユーザーもメンテナンスユーザーもBackendPoolにアクセス可能
    image.png

メンテナンス時

  • メンテナンスユーザーはBackendPoolにアクセスできるが、ユーザーはSorryPageにアクセスされる
    image.png

カスタムエラーページ作成

  • まずはSorryPage配置用のBlobを作成します。ストレージアカウント作成方法は割愛します。

  • ストレージアカウント画面より、[Blob service]→[コンテナー]を選択します。
    image.png

  • [+ コンテナー]を選択します。
    image.png

  • このときパブリックアクセスレベルを[Blob]もしくは[コンテナー]に設定します。SorryPage配置先はパブリックなBlobを指定する必要があります。
    image.png

  • コンテナーが作成されたらその配下にSorryPageをアップロードします。
    image.png

  • アップロードファイルを選択するとURLが表示されるためコピーします。
    image.png

  • ブラウザーを開いてアクセス可能であることを確認しておきます。
    image.png

  • これでカスタムエラーページの準備は完了です。URLは後ほど使います。

マルチサイトリスナー作成

通常ルート

  • 単一サイトの場合、1つのApplication Gatewayの中では1つのプロトコルのリスナーしか作れませんが、マルチサイトの場合は複数のリスナーを作成できます。今回はhttpリスナーを2つ用意します。

  • Application Gatewayの画面より[リスナーの追加]を選択します
    image.png

  • 以下のように入力します
    image.png

  • リスナーの種類を[マルチサイト]に設定し、このリスナーにアクセスするときのホスト名を入力します。今回はuserにしました。本来であればちゃんとしたドメインを設定します。
    image.png

  • エラーページのURLを[はい]に設定し、無効なゲートウェイにカスタムエラーページのURLを入力します。
    image.png

メンテナンスルート

  • 同じようにメンテナンス用のリスナーを作成します。今回はホスト名をmaintenanceにしています。エラーページの設定はしません。
    image.png

バックエンドプール作成

  • 次にアクセス先のバックエンドプールを作成します。今回はIISをインストールしたWindows Serverを準備しました。

  • Application Gatewayの画面より[バックエンドプール]を選択します。
    image.png

  • [追加]を選択します。
    image.png

  • ターゲットに事前準備した仮想マシンを選択します。
    image.png

HTTP設定

通常ルート

  • Application Gateway画面より[HTTP設定]を選択します。
    image.png

  • [追加]を選択します。
    image.png

  • HTTP設定名だけ入れてあとはデフォルトのまま作成します。
    image.png

メンテナンスルート

  • 同じようにもう1つHTTP設定を追加します。
    image.png

ルール設定

通常ルート

  • Application Gateway画面より[ルール]を選択します。
    image.png

  • [+ 要求ルーティングルール]を選択します。
    image.png

  • リスナーは通常ルート用のものを指定します。
    image.png

  • バックエンドは事前に作成したものを、HTTP設定は通常ルート用のものを指定します。
    image.png

メンテナンスルート

  • 同じようにメンテナンス用のルールを作成します。リスナー、HTTP設定はメンテナンス用に作成したものを指定します。
    image.png

正常性プローブ作成

バックエンドにヘルスチェック用HTMLファイル準備

  • Windows Serverにログインし以下のようにヘルスチェック用のHTMLファイルを準備します。通常ルート用、メンテナンスルート用で2つ準備しておきます。中身は空でよいです。
    image.png

通常ルート用正常性プローブ作成

  • Application Gateway画面より[ルール]を選択します。
    image.png

  • [追加]を選択します。
    image.png

  • ホスト名はリスナーで設定したときと同じものを入力します。
    image.png

  • パスには先ほど配置したヘルスチェック用HTMLファイルを指定します。
    image.png

  • HTTP設定は通常ルート用のものを指定します。
    image.png

  • バックエンド正常性テストが通ればOKです。
    image.png

メンテナンスルート

  • 同じようにメンテナンス用の正常性プローブを作成します。今回はホスト名をmaintenanceに、パス/HTTP設定をメンテナンス用のものにしています。
    image.png

自PCへのhosts設定

  • 今回はテスト用なので名前解決にhostsを使ってます。以下のように設定してます。(実際はApplication GatewayのパブリックIPを記載します)
    image.png

テスト

  • ブラウザに http://user/ と入力して、IISにアクセスできていることを確認します。
    image.png

  • 同様に http://maintenance/ でも確認します。
    image.png

メンテナンスモードにしてみる

  • 本題の以下構成が動作するか試してみます。通常ユーザーはSorryPageが表示されて、メンテナンスユーザーはアクセス可能ならOKです。
    image.png

  • Windows Server上でヘルスチェックファイル(通常ルート用)をリネームします。
    image.png

  • しばらくして http://user/ にアクセスし、SorryPageに飛べばOKです。
    image.png

  • http://maintenance/ へのアクセスは問題ありません。
    image.png

  • バックエンド正常性も想定通りの動きをしています。
    image.png

以上

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?