Azure Application Gateway の整理

Azure

こんにちは。

以前に、「Microsoft Azure の PaaS 環境の Web Apps で WAF を構築してみる」という記事を書いたのですが、

その当時は、Azure PowerShell でしか設定できなかったのですが、今はポータルで普通に作れるので、

その手順を書きつつ、Application Gateway の機能概要をまとめました。

1.概要

Application Gateway は一言で言ってしまえば、L7 のロードバランサーです。

複数のURL で受け付けた複数のバックエンドのサーバにルーティングを行うことができる Web Application Firewall の機能も持ったロードバランサーです。

また、AKS(Azure Kubernetes Service) クラスターの入り口としても活用することができます。

機能の概要は以下のドキュメントを見ていただくとわかりやすいと思います。

Azure Application Gateway とは
Azure Application Gateway を使用してアプリケーションに対する Web トラフィックを管理する方法について説明します。

ドキュメントサイト

Azure Application Gateway のドキュメント
Web アプリケーションへのトラフィックを管理できる Web トラフィック ロード バランサーである Azure Application Gateway について説明します。

料金

Application Gateway の料金 | Microsoft Azure
Azure Application Gateway を使用すると、HTTP 負荷分散と配信制御を行いつつ、高度にスケーラブルで高可用な Web サイトを構築できます。

SLA

Licensing Documents

2.Web Apps での設定手順

設定の機能をイメージしやすいように、Azure Web Apps と組み合わせたパターンの設定手順です。

2-1.Application Gateway の作成

まずは、ここからですね。Application Gatewayを作成します。

ちなみに、Web Apps は、普通にすでに普通に作ってあります。

Basics の設定です。

SLA を受けるには、Instance の数は2個以上なので、2個にしてみました。

Tier は、 WAF がない Standard と、WAF(Web Application Firewall) の2つのモードで、現時点では無印(V1)とV2の2つが選択できます。

V2は、プレビューなので、Standard の 無印を選択しています。

Setteing の画面では、まず、仮想ネットワークを紐づけます。

Fronend IP configuration では、GWの入り口のIPを Public / Private にするのか選択しますが、今回は、インターネット越しのアクセスのあるサイトを想定しているので、Public にしました。

ちょっとだけポイントとしては、v1 の Application Gatewayで設定できる Public IP は、AZ に対応している Dynamic なアドレスであること。
つまり、ほとんどないかもしれませんが、なんらかの理由でサービス再起動が走ると、IP アドレスが変わるかもしれません。(※1)

したがって、DNS name label を付けて、その URL 越しにアクセスするのがよさそうです。
(DNS name label の CNAME を Azure DNS に設定する感じ)

設定のつづきの画面です。

WAF を使えるのは、WAF の Tier じゃないとダメですね。

あとは、ポータルの画面に従ってOKを押していけば、Application Gateway が作成されます。

ちゃんと時間は測ってないですけど、15分位ってところかな。

できあがったイメージはこんな感じです。

2-2.Backend を Azure WebApps とする設定

Backend を設定して、WebApps を接続していきます。

できあがりのイメージはこんな感じ。

Backend pool の設定

まずは、Backend の設定です。

メニューのBackend pools を開き、デフォルトで作成されているプールに設定しました。

add を押して、新規の Pool を作っても全然 OK です。

Targets で、App Servcices を選び、pool にぶら下げる Web Apps を選択しました。今回は、2つ Web Apps をぶら下げてます。

ここで、「Http settings and probes needs to be created with proper settings」と出てますので、その設定も行っていきます。

Health probes の設定

まずは、Health probes を設定します。

ひとまず、Add で追加します。

Backend が Web Apps の場合は、「Pick host name from backend http settings」にチェックを付けます。

あとは、普通の正常性の確認の設定ですね。

HTTP Settings の設定

この手順で作成した場合、HTTP Settings には、appGatewayBacendHttpSettings が作成されていると思います。

今回は、これを編集します。

設定といっても、「Use for App Service」にチェックをつけ

Custom probe に、先ほど作成した Health Probe を設定するだけです。

補足

ここまで読んで頂いて、「HTTP Settings」と「Health Probe」の関係性はご理解いただけたと思います。

ただ、「HTTP Settings」と「Backend pool」の関係性がイマイチ見えてこない方もいるかもしれません。

実はこれが、「rule」で設定されています。

ruleの設定はこんな感じ

Listener は、フロントの部分で Application Gateway を作成時に設定した内容のままです。

ちなみに、Backend から Error Code が返ってきた場合に、エラーページにリダイレクトすることもできます。

接続確認

ここまでの設定で、Application Gateway 経由で Web Apps に接続できるようになりました。

記事で見せるととても地味なんですが、こんな感じ。

http://demoapgw.eastus2.cloudapp.azure.com という、Application Gateway についてる URL で WebApps に接続できてます。

ちなみに、もう一個の WebApps にも接続できます。

ちなみに、今の設定では、WebApps に直接つなぐこともできちゃいます。。。

こんな感じで。

2-3.Azure WebApps への接続制限の設定

WebApps にダイレクトでつながってしまうと、Application Gateway で WAF とかを効かせたい場合に抜け道になってしまいます。

ですので、WebApps に直接接続できないように設定をします。

設定方法

設定は、WebApps より、IP 制限を行います。

設定は、Application Gateway の Public IP のみを、Allow してあげるだけです。

ちなみに、設定する IP は、Application Gateway の Public IP は下の箇所で確認できます。

懸念点

今回の設定には、一点、懸念点があります。

※1  で記載したのですが、Application Gateway の Public IP は、Dynamic な IP ですので、なんらかのトラブルで Application Gateway のサービスが再起動した場合に、IP アドレスが変わってしまう可能性があります。

IP アドレスが変わってしまうと、WebApps に接続できなくなってしまうので、IP 制限の設定を変更しなければいけません。

現時点ではプレビューなのですが、Application Gateway では V2 があり、これですと Public IP が Static ですので対応できるんです。

Application Gateway を作成するときもこんな感じで Static に設定されています。

ちなみに、V2 では、

  • AutoScale ができるようになった
  • Availability zone が利用できるようになった

3.URL パスベースのリダイレクト

Application Gateway を使うと URL パスベースのリダイレクト な構成を作ることができます。

ドキュメントの絵をそのまま張り付けるとこんな感じ

Frontend IP Configurations と Backend Pool を作成して、Listner でつないであげることでこの構成ができます。

詳しく知りたい方は、ドキュメントサイトをご覧ください。

PowerShell を使用した URL パスベースのリダイレクト - Azure Application Gateway
Azure PowerShell を使用して、URL パスベースでトラフィックがリダイレクトされるアプリケーション ゲートウェイを作成する方法について説明します。

4.Web Application Gateway

Application Gateway は WAF(Web Application Firewall)の機能もあります。

WAF の機能をカスタマイズするのは、次のドキュメントを見てください。

ポータルを使用してルールをカスタマイズする - Azure Web アプリケーション ファイアウォール
この記事では、Azure portal を使用して Application Gateway での Web アプリケーション ファイアウォール規則をカスタマイズする方法について説明します。

5.まとめ

Application Gateway というと、WAF の機能が注目されている気がしますが、本来の L7 ロードバランサーや、マルチテナントのルーティングの機能も利用できるシーンは少なくないと思います。

サイト構成にもよりますが、CMS を置き換えの際に、過去のサイトをそのまま動かしつつ新サイトを構築して、一つのドメインで対応するなんてこともできると思います。

今回は試せてないですが、AKS の入り口としても活用したいですね。

ただひとまず、早く V2 が GA されないかなー

2019/05/20 追記
V2 が GA されたのでまとめた記事を書きました。

Application Gateway V2 になって変わったこと
こんにちは。 今回は、Azure もくもく会@新宿 #31 のもくもくタイムで調べた、Azure Application Gateway V2 になって変わったことについて、調べた結果をまとめてみました。 といっても、1時間ちょっとの時間で...

コメント

タイトルとURLをコピーしました