Azure Application Gatewayを解説 【シリーズ Azureサービスいちから紹介】

LINEで送る
Pocket

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の15日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

15日目はAzure Application Gatewayです。HTTP/HTTPSのトラフィックを柔軟に負荷分散することができます。

概要

Azure Application Gatewayは、アプリケーション層 (OSIネットワーク参照モデルの第7層)で動作する負荷分散機能です。Azure Load Balancerでも負荷分散はできますが、Application Gatewayではより柔軟に、パスベースの振り分け等の機能も提供されます。

機能

Application Gatewayを作成すると、エンドポイントがAzure Load Balancerによって提供されます。Azure Load BalancerはトラフィックをApplication Gatewayインスタンスに分散し、インスタンス上で各種の処理が行われます。


https://docs.microsoft.com/ja-jp/azure/application-gateway/application-gateway-introduction から引用

Application GatewayはSmall、Medium、Largeの3つのサイズが選べます。上のサイズになるほど以下の表のようにスループットが向上します。
Application Gatewayは、サブスクリプションごとに最大50個まで作成できます。各Application Gatewayには最大10個のインスタンス(L7の仮想負荷分散装置)を割り当てることができます。また、Application Gatewayには20個のHTTPリスナーを作成できます。


https://docs.microsoft.com/ja-jp/azure/application-gateway/application-gateway-introduction から引用

・トラフィックの分散

Application Gatewayへのトラフィックはラウンドロビン方式でバックエンドのサーバに分散されます。

・SSL終端とオフロード

Application GatewayがSSL終端となってHTTPSとHTTPへの変換を行います。復号・暗号化をApplication Gateway上で行うことでバックエンドのCPU負荷を削減します。

・エンド・ツー・エンドSSL

Application Gateway上でHTTPS通信をHTTPに変換、URLパスベースのルーティング、CookieベースのセッションアフィニティなどのApplication Gateway上での処理を行ったうえで、再びHTTPからHTTPSに変換して、バックエンドにトラフィックを流します。Application Gatewayとバックエンド間のエンド・ツー・エンドのHTTPS通信を維持しながら、Application Gatewayの各種機能も利用することが可能になります。

・Cookieベースのセッションアフィニティ

Cookieを利用して、ユーザセッションを特定のバックエンドに送ることができます。ユーザのセッション情報をバックエンドで保存したり管理したりする場合に役に立ちます。

・URLパスベースのルーティング

事前に設定したURLパスベースのルールに則って、特定のバックエンドにトラフィックを振り分けることができます。例えば、http://contoso.com/video* に対する要求はVideoServerPoolに、http://contoso.com/images* に対する要求は ImageServerPool にそれぞれルーティングできます。


https://docs.microsoft.com/ja-jp/azure/application-gateway/application-gateway-url-route-overview から引用

・複数サイトのホスト

最大で20のWebサイトを1つのApplication Gatewayで処理、バックエンドに転送することができます。例えば、1つのApplication Gatewayを使って、www.hogehoge.com と www.foobar.com のような2つのドメインへのトラフィックをコントロールできます。

・リダイレクト

Application Gateway上でリダイレクトも可能です。HTTPからHTTPSへのリダイレクト、パスに基づくリダイレクト、外部サイトへのリダイレクトが可能です。サーバを立てなくてもいろんなパターンのリダイレクトを行えるのは便利です。

・Webアプリケーションファイアウォール(WAF)

WAFがApplication Gatewayで提供され、脆弱性や攻撃からWebアプリケーションを保護できます。SQLインジェクション、クロス・サイト・スクリプティングなどからの保護が提供されます。
WAFには、検出モードと防止モードがあります。検出モードの場合は、許可されない通信が発生すると、ログに記録されます。防止モードは検知と同時にさらに通信がブロックされ、アクセスしたユーザには「403 不正アクセス」が表示されセッションが終了します。

・監視

Application Gatewayにつながるバックエンドの死活監視を行い、異常なインスタンスへの振り分けを停止することもできます。
「既定の正常性プローブ」はルートパスに対するHTTP応答確認により死活を監視できます。「カスタムの正常性プローブ」では、さらに柔軟にURLパスや監視のパラメータを個別に設定できます。

その他

・Application Gateway は、インターネット接続ゲートウェイ、または内部的にのみ使用されるゲートウェイのいずれかとして構成できる

・Application Gatewayの属するサブネット上にネットワークセキュリティグループ(NSG)がある場合、65503~65534のポート範囲をインバウンドトラフィック用に開いておく必要がある。

・WebSocket通信もサポートされる

・WAFはサイズMediumとLargeで利用可能。

料金

・Application Gatewayを構成して利用した時間とApplication Gatewayによって処理されたデータ量(GB単位)に対して課金されます。

・Azureデータセンター外へ出ていくデータの転送量ももちろん課金されます。

まとめ

SSL終端、URLパスベースのルーティング、複数サイトの管理など、Application Gatewayでだいたい何でもできます。これまで、ネットワーク機器のレイヤ、HTTPサーバのレイヤなど、複数の機器、ソフトにまたがって行っていた設定を、Application Gateway上で一括して管理することができて、とても便利です。スループットレベルやインスタンス数を自分である程度コントロールできるのも、事前に想定した負荷に備えることができて良いです。

LINEで送る
Pocket