Azure

【Azure】Application Gatewayとは?徹底解説!

  • このエントリーをはてなブックマークに追加



Application Gatewayとは?

Application GatewayとはLayer7(アプリケーション層)で動作する負荷分散装置です。

※ Layer7については、”OSI参照モデル”を参照下さい。

Application Gatewayはアプリケーション層で動作する為、トランスポート層で動作する通常のロードバランサーと比較してアプリケーションの処理をサポートする様な機能が付随している事が特徴です。

例えば、ウェブアプリケーションファイヤーウォールやURLベースでのルーティング、カスタムのメンテナンスページ設定などの機能が付随しています。

また、複数リージョンや複数仮想ネットワークを跨ぐ場合、別Cloudのネットワークも利用してロードバランシングしたい場合などにも利用する事が出来ます。

ロードバランサーとApplication Gatewayの大まかな認識としては、ロードバランサーは基本的には負荷分散のみ、Application Gatewayは負荷分散+アプリケーションをサポートする機能という理解で整理可能です。

※負荷分散装置(ロードバランサー、Application Gateway)の利用ケース詳細に関してはAzure公式ページを参照下さい。

尚、Application Gatewayは有料のリソースとなります(ロードバランサーはBasicだと無料)。

メリット/デメリット

メリット

  • ウェブアプリケーションファイヤーウォールの機能により外部からの攻撃を防ぐことが可能
  • URLベースのルーティングが可能

デメリット

  • ロードバランサーと比較して高コスト

ハンズオン概要

仮想マシンを2台作成し、Application Gatewayを用いて負荷分散をしていきます。

手順

※当ページでは2022年12月現在の仮想ネットワークについて解説しています。クラウドサービスは頻繁にアップデートが施されるため、仕様が若干異なる可能性があります。

ログイン

まずは、Azure公式ページからAzureにログインしましょう。

Azureアカウントを保持している方はSign inを、保持していない方はFree accountよりアカウントを作成しましょう。

仮想ネットワークの作成

検索バーに”仮想ネットワーク”と入力し、”仮想ネットワーク”を選択します。

作成ボタンを押下し、以下の条件で”test-ag”という仮想ネットワークを作成します。

基本タブとIPアドレスタブの設定が完了したら、セキュリティタブ、タグタブの設定はスキップして仮想ネットワークを作成します。

仮想ネットワークの作成方法詳細については、【Azure】仮想ネットワークとは?使い方徹底解説!を参照してください。

Application Gatewayの作成

検索バーに”Application Gateway”と入力し、”アプリケーションゲートウェイ”を選択します。

Application Gatewayの管理画面に遷移したら、左上の”作成”を押下します。

Application Gatewayの作成では、基本・フロントエンドの数・バックエンド・構成・タグ・確認及び作成のタブが存在します。

ロードバランサーと同じようにApplication Gatewayでは、①フロントエンドIP②インバウンド規制③バックエンドプール④正常性プローブについての設定を行っていきます。

基本タブ

基本タブでは、Application Gatewayの名前や配置場所などを設定します。

  • サブスクリプション:利用するサブスクリプションを選択します。
  • リソースグループ:利用するリソースグループを選択します。今回は”test-ag”を利用します。
  • ゲートウェイ名:任意の名前を付与します。今回は”test-ag”と命名します。
  • 地域:“Japan East”を選択します。
  • レベル:Standard(ロードバランサー)かWAF(ロードバランサー + ウェブアプリケーションファイヤーウォール)に分かれています。今回はウェブアプリケーションファイヤーウォールも設定する為”WAF V2″を選択します。※V2を選択すると自動スケーリング、ゾーン冗長(ゾーン単位での障害の回避)、静的IP(リソースをリスタートしてもIPアドレスが変わらない)等の設定が可能となります。詳細については、公式ドキュメントを参照下さい。
  • 自動スケール:GW自体のスケーリングの設定が可能です。今回は”いいえ”を選択します。
  • インスタンス数:今回は”1″とします。※V2を選択すると、最小、最大インスタンス数が選択できますが、それらの値はアクセスを確認し、最適な値を選ぶ必要があります。詳細については公式ドキュメントを参照下さい。
  • 可用性ゾーン:可用性ゾーンを選択する事が可能です。今回は”なし”とします。
  • HTTP2:HTTP2を適用するかを設定します。設定した場合、クライアントからApplication Gatewayの通信はHTTP2を利用します。今回は”無効”とします。
  • WAFポリシー:新規でWAFポリシーを作成します。WAFポリシーはウェブアプリケーションファイヤーウォールの設定として利用され、WAFポリシーをベースとして通信が規制されます。今回は”test-waf-policy”と命名します。
  • 仮想ネットワーク:Application Gatewayを配置する仮想ネットワークを選択します。”test-ag”を選択します。
  • サブネット:Application Gatewayを配置するサブネットを選択します。”ag-subnet”を選択します。

 フロントエンドの数

フロントエンドの数タブでは通信の入り口であるフロントエンドIPの設定を行います。

  • フロントエンドIPの種類:付与するIPアドレスの公開範囲を指定します。両方を指定すると、パブリックIPアドレス1つとプライベートIPアドレス1つが作成されます。外部公開するアプリケーションの場合は”パブリック”を内部のみに公開するアプリケーションの場合は”プライベート”を選択します。今回は”パブリック”を選択します。
  • パブリックIPアドレス:付与するパブリックIPアドレスを作成します。今回は”test-ag-public-ip”という名前を付与します。

バックエンド

バックエンドタブでは通信を振り分ける先のサーバーの設定を行います。

  • バックエンドプールの追加
    • 名前:バックエンドプールの名前を付与します。今回は”test-backend-pool”と指定します。
    • ターゲットを持たないバックエンドプールを追加します:今回はまだ振り分け先のサーバーを作成していないので、”はい”を選択します。

構成

トラフィック分散のルールを指定します。”ルーティング規則の追加”を押下し設定を行います。

リスナータブ

通信を受け付ける役割であるリスナーの設定を行います。

  • ルール名:任意の名前を付与します。今回は”test-routing-rule”とします。
  • 優先度:”100″と指定します。
  • リスナー名:リスナーに名前を付与します。今回は”test-listener”とします。
  • フロントエンドIP:外部公開するのでパブリックを選択します。
  • プロトコル:利用するプロトコルを指定します。今回は”HTTP”を指定します。
  • ポート:利用するポートを指定します。HTTP通信なので80を選択します。
  • リスナーの種類:Application Gatewayは複数のアプリケーションに対して設定する事も出来ます。複数アプリケーションに対して設定する場合は”マルチサイト”を指定します。今回は”Basic”を設定します。
  • エラーページのURL:カスタムのエラーページを設定する事が出来ます。今回は”いいえ”を選択します。

 

バックエンドターゲットタブ

通信の振り分け先であるサーバーの設定を行います。

  • ターゲットの種類:先程バックエンドプールを作成したので、”バックエンドプール”を選択します。
  • バックエンドターゲット:先程作成した”test-backend-pool”を指定します。
    • HTTP設定名:任意の名前を付与します。今回は”test-backend-setting”とします。
    • バックエンドプロトコル:バックエンドとの通信で利用するプロトコルを設定します。
    • バックエンドポート:バックエンドのポートを指定します。HTTP通信なので”80″を設定します。
    • Cookieベースのアフィニティ:セッション永続化の設定を行います。有効化されると、ユーザーは前回接続されていたサーバーにルーティングされます。今回は”無効化”を選択します。
    • 接続のドレイン:メンテナンス等でバックエンドサーバーを停止する際、実際に停止するまでのバッファタイムを定義します。メンテナンス時に突然サーバーを停止すると、アプリケーションを利用しているユーザーは自動的にアプリケーションからログアウトさせられてしまいます。自動的に利用できなくなってしまう事を防ぐために、シャットダウンが実際に開始されるまで待つ時間を定義します。設定した時間内では既存の処理のみを受け付け、新しいリクエストは受け付けない様にします。そうする事でユーザーがアプリの利用中に突然切断される事が無くなります。。今回は”無効化”を選択します。HTTP設定:どのプロトコルの何のポートに通信を分散するかの設定します。
    • 要求のタイムアウト:タイムアウトの秒数を指定します。
  • パスベースの規則:URLのパスに応じたロードバランシングが可能になります。今回は設定しません。

タグ

タグタブでは、リソースを識別する為のキー/バリューのペア(タグ)を設定する事が可能です。今回は設定しません。

仮想マシンの作成

test-vm-1, test-vm-2という仮想マシンを作成します。

基本タブ、ネットワークタブを以下の様に設定し仮想マシンを作成します。

基本タブ

ネットワークタブ

仮想マシンを作成したらそれぞれの仮想マシンにRDP接続し、以下の手順で画面描写が可能な状態にしましょう。

  1. Install-WindowsFeature -name Web-Server -IncludeManagementTools
  2. Remove-Item C:\inetpub\wwwroot\iisstart.htm
  3. Add-Content -Path “C:\inetpub\wwwroot\iisstart.htm” -Value $(“Hello World from “ + $env:computername)

設定が完了したら、各仮想マシンのパブリックIPアドレスにアクセスし、レスポンスが来る事を確認しましょう。

バックエンドプールに仮想マシン追加

Application Gatewayのバックエンドプールタブから作成した”test-backend-pool”を選択します。

バックエンドターゲットに作成した仮想マシン2台を設定します。

概要タブからフロントエンドIPアドレスを取得します。

取得したIPアドレスにアクセスすると、仮想マシンで設定した画面が表示されます。アクセスを繰り返すとサーバーが変更される事も確認できます。

関連記事

【Azure】Load Balancerとは?徹底解説!

  • このエントリーをはてなブックマークに追加

お問い合わせ

    このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。

    コメントを残す

    *