Application Gateway

L7負荷分散 Azure Application Gateway について:1回目


はじめまして。Azure推進チーム構成員のヤモトと申します。
自身の知識の備忘を兼ねてApplication Gatewayを少しずつ深堀りしてお話ししていきたいと思います。
最後までお付き合いいただけますと幸いです。

Application Gatewayとは

 Application Gatewayとは、Azureで提供されている7レイヤ:アプリケーション層で動作するロードバランサーです。Webサーバーなど、Webアプリケーションに対するトラフィックを分散できます。
逆に、DBサーバーなどへの振り分けは不得意ですので、Azure Load Balancerとの使い分けをする必要があります。
  バックエンドプールへのルーティングはパケット内のHTTPソケット(IPヘッダ、TCPヘッダ、HTTPデータなど)によって行われます。
他にもSSL/TLSターミネーションやWeb Applcation Firewallなどの機能もございます。

Application Gatewayの構成要素

 Application Gatewayは構成要素が多く、1つ1つ理解することでより丁寧なルーティングを行うことが可能です。Application Gatewayを構築するうえで必要な設定を説明いたします。
※Azureポータル上の構成はAzureの更新によって変更される可能性がございます。

  • フロントエンドIP構成
    Application Gateway が外部からのアクセスを受けるのがこのフロントエンドIPです。内部向け、外部向けによって使用するアドレスが変わりますが、フロントエンドIPとしてプライベートIPアドレスとパブリックIPアドレスを設定できる数はそれぞれ必ず1つずつのみ設定できます。

  • リスナー

    フロントエンドIPに到達したトラフィックをまず振り分けるものがこのリスナーです。IPアドレス、ポート番号、プロトコルの各情報を判断しルーティングを行います。追加の機能として、エラーページ(502と403のみ)毎に表示させる画面を指定も可能です。
    種類として、Basicとマルチサイトの2種類あります。
    • Basicリスナー
      Basicリスナーは主にシングル構成(1FQDNあたり、1個のApplication Gatewayを使用する構成)で使用します。
      設定箇所も少ないため一番シンプルな設定です。
    • マルチサイトリスナー
      IPアドレス、ポート番号、プロトコル 以外にユーザーがアクセスする際のホストヘッダー内のホスト情(FQDN)情報を使用して振り分けを行います。これにより、ホスティング構成などの複数サイトを1個のApplication Gatewayで行うことができます。

  • HTTP設定

    HTTP設定はプロトコル、ポート、接続のタイムアウトなどを設定し、その構成を使用してバックエンドへ通信をルーティングします。
    機能として、バックエンドに対するドレーニング設定やCookieベースのアフィニティ設定も可能です。
    接続のドレインやアフィニティについては次回以降記載予定です。

  • 要求ルーティングルール


    リスナーからバックエンドプールまで、フロントからバックエンドまでの通信をこの設定によって紐づけすることで通信がルーティングされます。
    種類として、Basicとパスベースの2種類あります。
    • Basicルール
      1つのリスナーとバックエンドを紐づけする場合にBasicルールを使用します。他の要素によるルーティングもなくシンプルな構成です。
    • パスベースルール
      リスナーとバックエンドのルーティングの際にアクセスパスによる振り分け設定を追加したものをパスベースルールと呼びます。
      パスルール規則として設定したパスパターンによる振り分けが可能です。

  • バックエンドプール

    上記にあげた設定によってルーティングされた通信をこのバックエンドプールに設定したバックエンドのターゲット(振り分け先)に振り分けることができます。
    ターゲットとして設定できるものは仮想マシン、仮想マシンスケールセットIPアドレス及びホスト名、Web Appsの4つです。
    ターゲットの指定は1つのプールに1種類だけという制限があり、同じプール内に異なる種類のターゲットを設定することはできないので注意が必要です。

  • 正常性プローブ

    Application Gatewayはデフォルトでバックエンドのターゲットに対する正常性の確認を行っています。しかし、デフォルトのままでは細かな設定はできません。そこで、この正常性プローブの設定を行うことにより、ポーリング間隔の設定や異常と見なす閾値、正常性を確認するためのファイルパスの設定などの細かな設定を行うことができます。

構成例

Application Gatewayは各設定により複雑な構成が可能です。
そこで、下記に対応可能な簡単な構成例を記載いたします。

  1. シングル構成
    一番シンプルな構成で、アクセスしてきたトラフィックを複数サーバーに分散します。バックエンド側の振り分けはラウンドロビン形式形式です。


  2. パスによる振り分け
    ユーザーがアクセスする際のパスによってルーティングさせるサーバーを変えることができます。
    下記の図の例のように、”http://test.com”というサイトに対し、“/dog/”というパスにアクセスした場合はServer Aに、“/cat/”というパスにアクセスした場合はServer Bにルーティングするといった構成を行うことが可能です。
  3. URLによる振り分け
    マルチサイト機能により、ユーザーのアクセスしたURL情報により異なるサーバーの振り分けを行うことができます。1つのApplication Gatewayで複数サイトを振り分けるホスティング構成をとることが可能です。
    さらにパスによる振り分け機能を組み合わせることにより、複雑な振り分けを搭載することができます。

Azureの負荷分散サービスとの違い

Azureの負荷分散はApplication Gateway以外に複数あります。
簡単にそれぞれの負荷分散装置の要約を下記に纏めました。

  • Azure Load Balancer
    Azure Load Balancerはレイヤ4のトランスポート層で動作するロードバランサーです。ハッシュベースの分散方式で、5タプル(送信元IPアドレス,送信元ポート,宛先IPアドレス,宛先ポート,プロトコルの種類)によって分散されます。5タプル情報が同じ通信であれば同じサーバーに振り分けられます。ソースIPアフィニティモードと呼ばれる分散設定も可能です。(詳しくはこちらのドキュメントをご覧ください。)

  • Azure Traffic Manager
    DNSレベルで負荷を分散する、グローバルロードバランサーです。
    DNS情報とバックエンドサーバー側の重みなどによって振り分けを行います。
    (詳しくはこちらのドキュメントをご覧ください。)

  • Azure Front Door
    CDNとApplication Gatewayを足してそれぞれの機能をまとめたようなサービスです。グローバルレベルでの分散が可能であり、エンドポイントをグローバルレベルで分散させることができます。
    (いつかFront Doorに関する記事を纏める予定です…)

まとめ

Application Gatewayは一見シンプルに見えますが、中身を見てみるとかなり複雑で幅広い機能を搭載しています。
設定の組み合わせによりさまざまな構成を取ることが可能なのが魅力です。
Standard_v2が公開されさらにできることが増え、より複雑な設定もできるようになりましたのでしっかりと中身を把握してより良い構成提案ができるように精進していきたいと思います。

今回は以上です。
次回はマルチサイトとパスベース設定についてお話しできればと思います。

LogAnalytics(監視エージェント)を利用したVMの監視をしよう前のページ

AADDSを構築する記事次のページ

関連記事

  1. Azure

    普通のAzure Windows VMを、従量課金のSQL VMにしたい

    こんにちは。今回は、通常のWindows VMを従量課金のS…

  2. Azure

    Azure Key Vaultでみんなしあわせ(その2)

    はい。Key Vaultを使うとキー情報等の小規模な重要情報の管理が…

  3. Azure

    AzureのDMSでデータを移行してみる記事 ~MySQL編~

    皆様、こんにちは。夏の暑さ対策、エアコンより扇風機派です。×3です。…

  4. Azure

    Managed InstanceへのDB移行・アプリとの連携時の注意Point

    そがひろです。今回は、OnPremiseからAzure Manage…

  5. Azure

    Loganalyticsを利用してログを分析する

    取得したログを分析、必要なログを確認する Loga…

  6. Azure

    Runbookで管理タスクを自動化する。

    1.はじめに初めまして、Cloud Engineerの曽我で…

関連記事

  1. Azure

    WindowsVirtualDesktopがGAされているので(その3)
  2. Azure

    Managed InstanceへのDB移行・アプリとの連携時の注意Point
  3. Azure

    Azure FilesをLinuxからマウントする記事
  4. Azure

    Runbookで管理タスクを自動化する。
  5. Appサービス

    Azure App Serviceを使ってみる
PAGE TOP