クラウドコンピューティングサービスにおいてMicrosoft Azureが年々シェアを伸ばしており、これからAzureの導入を検討している方も多いのではないでしょうか。 

Webアプリケーションのトラフィック処理を担うAzure Application Gatewayは、Azureマネージドサービスの中でも主要なサービスの1つです。 

本記事では、Azure Application Gatewayが提供する機能や設定の構成について、初心者の方にも分かりやすいよう解説し、利用上での注意点を交えながらリソースの作成手順までを紹介します。 

Azure Application Gatewayとは? 

Azure Application Gateway(以下、Application Gateway)は、Microsoft Azureのマネージドサービスであり、アプリケーションレイヤーでの負荷分散とルーティングを行うL7ロードバランサです。 

負荷分散(Load Balancing)とは、複数のサーバに対するトラフィックやリクエストを均等に分散させることを指します。サーバへの負荷を分散することで、アプリケーションやサービスのパフォーマンスが向上します。

クラウドコンピューティングサービスの利用においては、その高可用性や拡張性を生かすために不可欠な機能です。ルーティングは、ネットワークにおいて、パケットやデータの送信先を決定するプロセスです。送信されたデータが正しい宛先に到達するようにします。 

Application Gatewayは、これらの機能にWAF(Web Application Firewal)によるセキュリティの強化などを組み合わせてWebアプリケーションの運用を支援します。 

Azure が提供するApplication Gateway以外のネットワークサービスについては、下記で紹介していますのでご参照ください。 

Microsoft Azureのサービスカテゴリ解説 ネットワーク編 – Users Digital (users-digital.com) 

Application Gatewayの特徴 

Application Gatewayには、次のような特徴やメリットがあります。 

L7ロードバランシング機能 

一般的なL7ロードバランシング機能として、URLパス、クエリパラメータ、ヘッダ情報に基づいたルーティング、CookieベースやIPアドレスベースのセッション維持、URLのリライトやリダイレクトといった多様な機能を提供します。 

スケーラビリティと可用性 

自動スケーリング機能により、トラフィックの増減に応じて必要なリソースを自動的に割り当て・削除しパフォーマンスを維持します。また、複数の可用性ゾーンにまたがる冗長構成をサポートしており、インスタンスの障害に対応できる高可用性を提供します。 

セキュリティ 

WAF(Web Application Firewal)機能を搭載しており、SQLインジェクション、クロスサイトスクリプティング(XSS)といったWeb攻撃からアプリケーションを保護できます。一般的なWeb攻撃の脅威への備えとしてOWASPのガイドラインに基づいたルールセットが提供されているほか、カスタムルール設定を用いて特定のアプリケーション要件に応じたセキュリティポリシーの実装も可能です。 

また、エンドツーエンドSSL/TLSをサポートしており、セキュリティ要件やコンプライアンス要件によってバックエンド通信の暗号化が求められるシナリオにも対応しています。

エンドツーエンドSSL/TLSを有効にした場合、Application Gateway で複合化した通信を、バックエンドサーバへの通信を開始する際に再び暗号化します。暗号化・復号処理の負荷によるロードバランサの処理能力低下を防ぐSSLオフロード(SSL/TLS処理を専門に行うノード)も備えています。 

Azureとの緊密な統合 

Application GatewayはAzureが提供する複数のサービスと統合されています。監視やアラートに関するサービスは一元化されており、Log AnalyticsやApplication Insightsによるログ・メトリクスの分析、Azure Monitorによるアラート管理、Azure Security Centerによるセキュリティ脅威の検出といった機能をAzure Portalでまとめて管理することができます。

Application GatewayでTLS/SSL終端またはエンドツーエンドTLS/SSLを行う場合は、Azure Key Vault を用いることで証明書管理の一元化・自動更新が可能です。 

Application Gatewayの基本的な構成 

Application Gateway はリソース作成に必要な設定項目が比較的多く、とっつきづらい印象を持たれるかもしれません。ここでは、Application Gatewayの設定を行う上で最低限知っておくべき基本的な構成について解説します。 

Application Gateway の設定のゴールは、ルーティング規則(「ルール」と表記される場合もあります)を定義することです。 

ルーティング規則とは、 

(A)どのような通信を待ち受け、(B)どのバックエンドに、(C)どのような通信方式でルーティングするか 

の定義です。 

A,B,Cそれぞれの構成要素を見てみましょう。 

A. リスナー 

待ち受ける(リッスンする) 通信の定義です。 

  • 待ち受けるIPアドレス(パブリックIP/プライベートIP) 
  • 待ち受けるホスト名とポート番号 
  • SSL証明書 

などを指定します。 

B. バックエンドプール 

バックエンドプールは、リクエストのルーティング先です。バックエンドサーバのIPアドレスやFQDNを指定します。 

C. バックエンド設定 

バックエンドに対する通信の設定です。プロトコル(http/https)、ポートや、セッションアフィニティなどの負荷分散方式を指定します。 

リスナー、バックエンドプール、バックエンド設定はそれぞれ複数作成することができ、3つの設定を自由に組み合わせてルーティング規則を定義します。 

下図にApplication Gatewayの構成の例を示しています。  

Application Gatewayの構成の例

この図ではルーティング規則1、ルーティング規則2の2つの定義が構成されています。  

ルーティング規則1ではhttps://hogehoge.comへのリクエスト をHTTPSでpiyopiyo.comにルーティングすることを定義しており、ルーティング規則2ではhttp://fugafuga.com へのリクエスト をバックエンドプール2に設定したIP群にルーティングすることを定義しています。 

Application Gatewayを作成してみよう 

Azure Portal からApplication Gateway を作成する手順について解説します。 

1.Azure Portalにログインする: まずはブラウザから「portal.azure.com」にアクセスし、Microsoftのアカウントでログインします。  

2.Application Gateway の作成:ホーム画面の検索ウィンドウに「アプリケーションゲートウェイ」と入力し、Application Gateway のリソース画面に移動します。画面左上の「+作成」をクリックしてリソースの作成画面に移動します。  

3.リソースの基本情報の入力  :「基本」タブの設定を入力します。 

 作成するApplication Gateway リソースの名前、作成先のサブスクリプション、リージョンなどの基本情報を入力します。  

アプリケーションゲートウェイ

Application Gatewayの作成には、 専用のサブネットが必要です。「仮想ネットワークの構成」設定でApplication Gateway を配置するサブネットを選択します。配置先サブネットを選択するか、「新規作成」を選択して新たなVNet・Subnetを作成することができます。  

4.フロントエンドIPアドレスの指定 :「フロントエンド」タブの情報を入力します。  

Application Gateway が使用するフロントエンドIPアドレスを指定します。パブリックIPアドレスのみ、またはブリックIPアドレスとプライベートIPアドレスの両方が選択可能です。プライベートIPアドレスを使用する場合は、「基本」タブで指定したサブネットのIPアドレス範囲から、任意のIPを入力します。  

アプリケーションゲートウェイ

5.バックエンドプールの追加   :「バックエンド」タブの情報を入力します。 

 「バックエンドプールの追加」をクリックします。バックエンドプール名とルーティング先のIPアドレスやFQDNを入力し、「追加」をクリックします。  

アプリケーションゲートウェイ

バックエンドがVMやApp Service などのAzureサービスの場合は、リソース名を選択するだけでルーティング先として指定できます。  

6.ルーティング規則の追加 :「構成」タブの情報を入力します。  

画面中央の「ルーティング規則の追加」をクリックします。  

アプリケーションゲートウェイ

 はじめに「リスナー」をクリックして待ち受けるプロトコルやポート、ホスト名などを設定します。HTTPS通信を待ち受ける場合は、Application Gateway でTLS終端が行われるため、証明書の登録が事前に必要です。  

次に、「バックエンドターゲット」をクリックして、ルーティング規則に紐づけるバックエンドプールの指定と、バックエンド設定の追加を行います。 特定のURLパスのみ別のバックエンドにルーティングしたい場合は、「追加のターゲット」設定に転送するパスとバックエンドプールを入力します。  

アプリケーションゲートウェイ

6.タグの追加 :「タグ」タブの情報を入力します。  

タグは、Application Gatewayrソースを作成する上で必須の設定ではありませんが、設定しておくことでリソースの検索や管理がしやすくなります。タグを設定しない場合は空欄のまま次に進みます。  

7.確認および作成 :これまでに入力した主な設定値が表示されるので、入力内容に誤りがないことを確認します。問題がなければ「作成」をクリックします。  

リソースの作成手順は以上です。Application Gateway の作成を開始してから利用可能な状態になるまでに5分~10分程度の時間を要します。  

Application Gateway の料金 

Application Gateway の主な課金要素は以下の2つです。 

  • 利用プランに基づいた固定コスト(×利用時間) 
  • 使用した容量ユニットのコスト(×利用時間) 

Application Gateway では、インスタンスの数の代わりに、容量ユニットと呼ばれる課金単位が使用されます。容量ユニットの数はインスタンス1台につき最低10個です。Application Gateway の負荷量に応じて増減するため、追加の容量ユニットが使用された場合、その利用時間に応じて課金額が増加します。 

Application Gateway の料金は、「固定コスト×時間+容量ユニットのコスト×容量ユニットの数×時間」で算出されます。インスタンス2台の冗長構成で、追加の容量ユニットを使用しなかった場合を例に、Application Gateway を1ヵ月間稼働させた場合の料金は下記表のようになります。(24年6月現在) 

プラン 固定コスト/月 20容量ユニット/月 合計コスト/月 
Standard V2 ¥33,342.75 ¥18,396.00 ¥51,738.75 
WAF V2 ¥60,016.95 ¥33,112.80 ¥93,129.75 
Application Gateway 1ヵ月あたりの料金の例

  Application Gatewayの最新の料金はこちらからご覧いただけます。 

Application Gateway のTips 

Application Gateway のTipsとして、バックエンド正常性監視について触れようと思います。 

Application Gateway は、全てのバックエンドに対して、一定間隔でヘルスチェックを行います。特定のバックエンドで規定の回数ヘルスチェックエラーが検出された場合、再び正常応答が返ってくるまでの間、Application Gateway はそのバックエンドをバックエンドプールから切り離し、リクエスト送信を行わなくなります。自動で異常なバックエンドを切り離し、正常なバックエンドのみにルーティングすることで、クライアントにエラーが返されることを防ぐ便利な機能です。しかし、なぜかApplication Gatewayが正常なバックエンドサーバを異常とみなしてしまい、悩まされることが度々あります。 

Application Gateway は、バックエンドサーバの証明書の不備もバックエンド異常とみなします。サーバ証明書に不備がある場合、一般的にはブラウザ上でサイトの安全性の警告が表示されるなどの影響がありますが、Application Gateway とバックエンドサーバ間の通信の場合は、Application Gateway がバックエンドへの通信を止めてしまいます。 

証明書の期限切れなどの一般的な証明書エラーの原因の他に、Application Gateway では下記の場合にも証明書エラーが検出されます。 

  • リーフ証明書のCNとバックエンド設定でルーティング先に指定したFQDNが一致しない 
  • バックエンドサーバに配置された証明書が、ルート証明書、中間証明書、サーバ証明書を含む証明書チェーンでない 

バックエンド通信をHTTPSで行う場合は、証明書にも十分注意を払うようにしましょう。 

まとめ 

本記事では、Application Gatewayの基本的な特徴や構成について解説しました。一見して複雑な設定が必要そうに見えるApplication Gatewayですが、各種設定の紐づけに注目していただくことで理解しやすくなったのではないでしょうか。こちらの記事が皆様のAzure学習の一助になれば幸いです。