目次
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接続し、以下の手順で画面描写が可能な状態にしましょう。
- Install-WindowsFeature -name Web-Server -IncludeManagementTools
- Remove-Item C:\inetpub\wwwroot\iisstart.htm
- Add-Content -Path “C:\inetpub\wwwroot\iisstart.htm” -Value $(“Hello World from “ + $env:computername)
設定が完了したら、各仮想マシンのパブリックIPアドレスにアクセスし、レスポンスが来る事を確認しましょう。
バックエンドプールに仮想マシン追加
Application Gatewayのバックエンドプールタブから作成した”test-backend-pool”を選択します。
バックエンドターゲットに作成した仮想マシン2台を設定します。
概要タブからフロントエンドIPアドレスを取得します。
取得したIPアドレスにアクセスすると、仮想マシンで設定した画面が表示されます。アクセスを繰り返すとサーバーが変更される事も確認できます。
関連記事