こんにちは、Global Solutions事業部です。

本記事は、Azure Load BalancerとAzure Application Gatewayに関する解説記事のパート2となります。
パート1:Azure Load BalancerとAzure Application Gatewayの比較 ①

Azure Application GatewayもAzureにおけるロードバランサーの一種です。しかし、Azure Load Balancerとは異なり、Azure Application GatewayはOSIモデルのアプリケーション層(第7層)で動作します。

Azure Application Gatewayは、Azure Load Balancerで説明した共通のコンポーネントを含んでいますが、Azure Application Gateway固有のコンポーネントもあります。

Listener (リスナー)

リスナーは、受信接続リクエストを確認する論理的なエンティティです。リスナーがリクエストを受信すると、関連するプロトコル、ポート、ホスト名、IPアドレスを設定と比較し、リクエストが適切かどうかを判断します。Azure Application Gatewayを利用する前に、少なくとも1つのリスナーを設定する必要があります。複数のリスナーをAzure Application Gatewayに接続することができ、同じプロトコルに指定することも可能です。リスナーがクライアントからのリクエストを検出すると、Azure Application Gatewayは、関連するルールに基づいてこれらのリクエストをバックエンドプール内のメンバーに転送します。

Routing Rules (ルーティングルール)

ルーティングルールは、Azure Application Gatewayの機能において重要な役割を果たします。これらのルールは、リスナー、バックエンドサーバープール、およびバックエンドHTTP設定との接続を確立します。リスナーがリクエストを受け入れると、リクエストルーティングルールがそのリクエストをバックエンドに転送するか、別の場所にリダイレクトします。バックエンドに転送する場合、ルールはどのバックエンドサーバープールがリクエストを受信するべきかを指定します。また、リクエストルーティングルールは、リクエストのヘッダーを書き換える必要があるかどうかも管理します。リスナーには1つのルールしか関連付けることができません。

一般的に、リクエストルーティングルールには2つのタイプがあります。

  • Basic Rule (基本ルール):リスナーに関連付けられたすべてのリクエスト(例: blog.contoso.com/*)が対応するバックエンドプールに関連付けられたHTTP設定を使用して転送されます。
  • Path-based Rule (パスベースルール): リクエストに含まれるURLに基づいて、リスナーに関連するリクエストを特定のバックエンドプールにルーティングするルールです。リクエストのURLパスが指定されたパスベースのルールに一致する場合、そのルールが適用されます。パスパターンはURLパスにのみ関連し、クエリパラメータは含まれません。URLパスがいずれのパスベースルールとも一致しない場合、リクエストはデフォルトのバックエンドプールとHTTP設定にルーティングされます。

以下のアーキテクチャ図を使用して、Azure Application Gatewayがどのようにレイヤー7のロードバランシングを実装するかを理解できます。

 Azure Application Gatewayの仕組み

Azure Application Gatewayの仕組み

Azure Load BalancerとAzure Application Gatewayの比較および使用タイミング

Azure Load BalancerとAzure Application GatewayはどちらもMicrosoft Azureのトラフィック分散サービスですが、目的と機能が異なります。以下は、Azure Load BalancerとAzure Application Gatewayの主な違いです。

動作層

  • Azure Load Balancer (ALB):OSIモデルのトランスポート層(第4層)で動作します。ラウンドロビンや最小接続数などの要素に基づいて、ネットワークトラフィックを複数のサーバーに分散します。
  • Azure Application Gateway (AG): OSIモデルのアプリケーション層(第7層)で動作します。コンテンツに基づいたルーティングを行い、URLベースのルーティングやSSL終端などの機能を提供します。

ユースケース

  • Azure Load Balancer (ALB): 主に複数のサーバー間でネットワークトラフィックを分散し、高可用性と信頼性を確保するために使用されます。TCPやUDPなどのプロトコルを利用するアプリケーションに適しています。
  • Azure Application Gateway (AG): SSL終端、URLベースのルーティング、Webアプリケーションファイアウォール(WAF)機能など、アプリケーション層の処理が必要なアプリケーションに最適です。特にウェブアプリケーション向けに設計されています。

プロトコル

  • Azure Load Balancer (ALB): TCPやUDPなどのトランスポート層プロトコルをサポートしています。
  • Azure Application Gateway (AG):HTTP、HTTPS、WebSocketプロトコルをサポートしており、HTTPリクエストの内容に基づいたルーティングが可能です。

ルーティングと負荷分散

  • Azure Load Balancer (ALB): IPアドレスとポートに基づいてトラフィックを分散します。
  • Azure Application Gateway (AG):コンテンツベースの高度なルーティングを行い、URLベースのルーティングを実現し、より高度な負荷分散シナリオに対応します。

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

  • Azure Load Balancer (ALB): WAF機能は内蔵されていません。
  • Azure Application Gateway (AG):WAFが内蔵されており、一般的な脆弱性からウェブアプリケーションを保護します。

終わりに

ロードバランサーは、ウェブサーバーへのトラフィックを分散し、ユーザーが中断なくシステムにアクセスできるようにするために重要な役割を果たします。本記事では、特にAzure Load BalancerとAzure Application Gatewayに焦点を当て、ロードバランサーについての全体的な理解を提供しました。

アイレット株式会社のGlobal Solutions事業部では、お客様のビジネス変革を実現しながら、最新のデータソリューションの導入を加速できるように設計されたデータ分析ソリューションとデータサービスの幅広いポートフォリオを提供しています。ビジネスの成功こそ、私たちが追求するものです。お困りの際はぜひ一度お気軽にお問い合わせください。

cloudpack サービスページ

 参考資料

[1] https://learn.microsoft.com/en-us/azure/architecture/guide/technology-choices/load-balancing-overview
[2] https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-overview
[3]  https://learn.microsoft.com/en-us/azure/load-balancer/components