Azureでシステムを構築するとき、まず直面するのがこの選択です。
名前が似ていることもあり混同されがちですが、2つのサービスはOSI参照モデルの異なる層で動作するため、解決できる問題の種類が根本的に異なります。「とりあえずApplication Gatewayにしておこう」という判断が後になってコストを圧迫したり、逆に「Load Balancerで足りると思ったらURLパスルーティングができなかった」という失敗は現場でよく起きるパターンです。
この記事では、L4・L7という層の違いを基礎から整理した上で、実際のアーキテクチャシナリオに応じた選定の判断軸を解説します。VMSS + Load Balancerの構築手順は別記事で取り上げているため、本記事は「どちらを選ぶか」の判断力を鍛えることに特化します。
この記事のポイント
・Load Balancer(L4)はTCP/UDP分散、Application Gateway(L7)はHTTPルーティング
・SSLオフロード・URLパスルーティングが必要ならApplication Gatewayを選ぶ
・VM/VMSSへの汎用TCP分散はLoad Balancerが低コストで適切
・WAF統合が要件に入るならApplication Gateway WAF_v2 SKUで一本化できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
L4とL7の違い——選定の前提知識
ロードバランサーを選ぶとき、最初に確認すべきはOSI参照モデルの「どの層で動作するか」です。L4(トランスポート層)で動作するLoad Balancerは、送信元・宛先のIPアドレスとポート番号だけを見て振り分け先を決めます。HTTPリクエストの中身やURLのパスは一切参照しません。プロトコルの中身を解析しないため、オーバーヘッドが小さく高スループットと低レイテンシを維持できます。
L7(アプリケーション層)で動作するApplication Gatewayは、HTTPリクエストの中身(URLパス、Hostヘッダー、Cookieなど)を読み取ってルーティングを決定します。クライアントとのTCPセッションを終端し、バックエンドに向けて別のTCPセッションを確立する「リバースプロキシ」動作が特徴です。
この違いが2つのサービスの機能差を生み出します。Application GatewayはHTTP通信を理解できるからこそSSLオフロードやURLパスルーティングが可能であり、Load BalancerはHTTPの中身を見ないからこそTCP/UDPの汎用プロトコルを低コストで分散できます。
Azure Load Balancerの特徴と得意な用途
1. L4ロードバランサーとして動作する仕組み
Azure Load Balancerは、フロントエンドIPアドレスとポートの組み合わせで受け取ったパケットを、バックエンドプールのVMまたはVMSSインスタンスに転送します。ルーティングの判断基準はIPアドレスとポート番号のみです。HTTPヘッダーやURLパスは参照しません。このシンプルさが高スループットと低レイテンシの両立を可能にしています。プロトコルはTCPとUDPに対応しており、Webアプリケーションに限らず、MySQLのTCPポート(3306)やPostgreSQLのTCPポート(5432)の分散にも使えます。
内部Load Balancer(Internal LB)と外部Load Balancer(Public LB)の2種類があります。
・外部Load Balancer:パブリックIPアドレスでインターネットからのトラフィックを受け付け、VNet内のバックエンドに転送する
・内部Load Balancer:VNet内部のプライベートIPアドレスを使い、サービス間の内部トラフィックを分散する
2. Standard SKUで使える主な機能
Azure Load BalancerにはBasicとStandardの2つのSKUがありましたが、Basic SKUは2025年9月30日にリタイア済みです。2026年時点での新規構築はStandard一択です。Standard SKUの主な機能は以下の通りです。
・フロントエンドIP:パブリックまたはプライベートIPを選択できる
・ヘルスプローブ:TCP・HTTP・HTTPSによるバックエンドの死活監視(応答がないVMは自動で外れる)
・可用性ゾーン対応:ゾーン冗長フロントエンドIPをサポートし、単一ゾーン障害でも継続稼働できる
・アウトバウンドルール:バックエンドVMからインターネットへの送信NATを明示的に設定できる
・SLA:99.99%(複数VMのバックエンドプールが条件)
az CLIでLoad Balancerのロードバランシングルールを確認する例です。
# load balancer のロードバランシングルール一覧を確認する $ az network lb rule list \ --resource-group rg-webapp \ --lb-name lb-webapp \ --output table Name Protocol FrontendPort BackendPort LoadDistribution ------------ ---------- -------------- ------------- ----------------- http-rule Tcp 80 80 Default https-rule Tcp 443 443 Default # ヘルスプローブの確認 $ az network lb probe list \ --resource-group rg-webapp \ --lb-name lb-webapp \ --output table Name Protocol Port IntervalInSeconds NumberOfProbes ------------ ---------- ------ ------------------- ---------------- http-probe Http 80 15 2
3. Azure Load Balancerが向いているシナリオ
以下のいずれかに該当する場合は、Azure Load Balancerを選ぶのが適切です。・HTTP/HTTPS以外のTCP/UDPプロトコルを扱う(DBサーバー、SMTPサーバーなど)
・同じポートのTCPトラフィックを複数のVMに単純分散させたい
・VNet内部のサービス間通信に内部ロードバランサーが必要
・URLパスやホスト名によるルーティングは不要
・コストを最小限に抑えたい
・Application Gatewayのバックエンドにいるアプリサーバー間の内部通信を分散したい
Azure Application Gatewayの特徴と得意な用途
1. L7リバースプロキシとして動作する仕組み
Application GatewayはHTTPリクエストを受け取り、その内容を解析してからバックエンドにプロキシします。クライアントはApplication GatewayとTCPセッションを確立します。Application GatewayはバックエンドのVMやApp Serviceと別のTCPセッションを確立し、リクエストを転送します。この二重のセッション構造(リバースプロキシ動作)があるため、クライアントの元IPアドレスはX-Forwarded-ForヘッダーでバックエンドVMに渡されます(Load Balancerは送信元IPをそのままパスする)。
このリバースプロキシ構造により、HTTPヘッダーの書き換え・URLパスのルーティング・SSLの終端など、HTTP通信を理解した上での制御が可能になっています。
2. URLルーティングとSSL終端
Application Gatewayの最大の強みは、URLパスとホスト名によるルーティングです。パスベースルーティングの例:
・
/api/* のリクエスト → APIサーバー(バックエンドプールA)・
/static/* のリクエスト → 静的コンテンツサーバー(バックエンドプールB)・それ以外 → 汎用Webサーバー(バックエンドプールC)
同一ドメイン上の複数のパスを、それぞれ異なるバックエンドに振り分けられます。マイクロサービス構成で、パスごとに独立したサービスをデプロイしているケースに特に有効です。
マルチサイト(ホストベース)ルーティングの例:
・
app1.example.com → バックエンドプールA・
app2.example.com → バックエンドプールB1つのApplication GatewayのIPアドレスで複数のドメイン(マルチサイト)を捌けます。複数サービスごとにApplication Gatewayを立てる必要がなく、コストを集約できます。
SSLオフロードはApplication Gatewayの定番機能です。クライアントとApplication Gateway間はHTTPSで保護し、Application GatewayからバックエンドVMへはHTTPで転送することでバックエンドのSSL処理負荷を軽減します。証明書はApplication Gateway側に配置するため、更新管理が1箇所に集約されます。
az CLIでApplication Gatewayのルーティングルールを確認する例です。
# Application Gatewayのルーティングルールを確認 $ az network application-gateway rule list \ --resource-group rg-webapp \ --gateway-name agw-webapp \ --output table Name RuleType Priority BackendAddressPool BackendHttpSettings ------------ ---------------- ---------- -------------------- -------------------- api-rule PathBasedRouting 100 pool-api settings-api default-rule Basic 200 pool-web settings-web # HTTPSリスナーの確認(SSL証明書が適用されているか) $ az network application-gateway http-listener list \ --resource-group rg-webapp \ --gateway-name agw-webapp \ --output table Name Protocol FrontendPort SslCertificate ---------------- ---------- -------------- ---------------- https-listener Https 443 cert-example-com http-listener Http 80 -
3. WAFとの統合
Application GatewayはWAF(Web Application Firewall)機能を内蔵できます。WAF_v2 SKUを選ぶと、OWASPのルールセットを使ったWebアプリへの攻撃防御が有効になります。WAFが検知・防御できる主な攻撃:
・SQLインジェクション(DBへの不正クエリ注入)
・クロスサイトスクリプティング(XSS)
・コマンドインジェクション
・HTTPプロトコル違反・スキャンツールによる探索
検知モード(Detection)と防御モード(Prevention)を切り替えられます。最初は検知モードで誤検知の有無を確認してから防御モードに移行するアプローチが一般的です。
PCI DSSやISO 27001などのセキュリティ認証要件でWAFが必須とされる場合、Application Gateway WAF_v2を選ぶことで外部のWAF製品を別途導入するコストを省けます。
4. Application Gatewayが向いているシナリオ
以下のいずれかに該当する場合は、Application Gatewayを選ぶことを検討してください。・URLパスやホスト名でバックエンドを切り替えたい(パスベース・ホストベースルーティング)
・SSLオフロードで証明書をGateway側に集中管理したい
・Cookie-basedセッションアフィニティが必要(ステートフルなアプリ)
・PCI DSSなどのセキュリティ要件でWAFが必須
・同一IPアドレスで複数ドメインのWebアプリを捌きたい(マルチサイト構成)
・HTTP/2に対応させたい
Azure Application Gatewayの実践的な設定については https://azure.linuxmaster.jp/ でもハンズオン演習を提供しています。
用途別の選定基準——判断フロー
1. シナリオ別の選択マトリクス
代表的なアーキテクチャシナリオと推奨サービスを整理します。| シナリオ | 推奨サービス | 理由 |
|---|---|---|
| WebアプリへのHTTPS受付・SSL終端 | Application Gateway | SSL終端とURLルーティングが必須 |
| VM/VMSSへのシンプルなTCP分散 | Load Balancer | ポートベースで十分・低コスト |
| /api/* と / を別バックエンドに振り分け | Application Gateway | パスベースルーティングはL7のみ可能 |
| MySQL(3306)・PostgreSQL(5432)の分散 | Load Balancer | Application GatewayはHTTP/HTTPSのみ対応 |
| WAFでWebアプリを保護したい | Application Gateway WAF_v2 | WAFはApplication Gatewayに内蔵されている |
| app1.example.comとapp2.example.comを同一IPで | Application Gateway | マルチサイト(ホストベース)ルーティング対応 |
| VNet内部のサービス間TCP通信の分散 | 内部Load Balancer | 非HTTP・内部通信向け・低コスト |
| Application GatewayとVM間の内部通信 | Application Gateway + 内部Load Balancer | 外部L7 + 内部L4の組み合わせパターン |
2. コストと複雑さのトレードオフ
Application Gatewayは機能が豊富な分、Load Balancerよりコストが大幅に高くなります。Azure Load Balancer(Standard SKU、東日本リージョン)の概算:
・ロードバランシングルール:約220円/ルール/月
・データ処理料金:約0.9円/GB
Azure Application Gateway(Standard_v2、東日本リージョン)の概算:
・キャパシティユニット(CU)課金:最小構成でも月数千円以上
・固定コスト+トラフィック量に応じた従量課金でLoad Balancerより高コスト
URLパスルーティングやSSL終端などのL7機能を実際に使わないのであれば、Load Balancerで十分です。「コストが10倍以上違う」というケースは珍しくないため、要件を確認してから選定してください。
また、Application Gatewayのインスタンスの起動・停止には数分かかります。Load Balancerは即時反映に近い応答性があるため、デプロイ速度が重要な開発環境ではLoad Balancerが向いています。
az CLIで設定を確認する(実測例)
1. Application Gatewayのバックエンドヘルスを確認する
実際の環境でバックエンドVMの状態を確認する際に使うコマンドです。# Application Gatewayのバックエンドヘルスを確認する $ az network application-gateway show-backend-health \ --resource-group rg-production \ --name agw-webapp \ --output json | \ python3 -c " import json, sys data = json.load(sys.stdin) for pool in data['backendAddressPools']: pool_name = pool['backendAddressPool']['id'].split('/')[-1] print(f'プール: {pool_name}') for setting in pool['backendHttpSettingsCollection']: for server in setting['servers']: print(f' アドレス: {server["address"]} 状態: {server["health"]}') " プール: pool-api アドレス: 10.0.1.4 状態: Healthy アドレス: 10.0.1.5 状態: Healthy プール: pool-web アドレス: 10.0.2.4 状態: Healthy アドレス: 10.0.2.5 状態: Unknown
Unknown になる場合は、Application GatewayとバックエンドVM間のNSG(ネットワークセキュリティグループ)でヘルスプローブのポートが許可されているか確認してください。2. Application Gatewayのヘルスプローブ許可確認
Application Gatewayはバックエンドへのヘルスプローブをポート65200~65535から送信します。このポート範囲がNSGで遮断されると、バックエンド全台がUnhealthyと判定されます。# バックエンドVMのNSGルール一覧を確認する $ az network nsg rule list \ --resource-group rg-production \ --nsg-name nsg-backend \ --output table Name Priority Access Direction Protocol SourceAddressPrefix SourcePortRange DestinationPortRange --------------- ---------- -------- ----------- ---------- --------------------- ----------------- -------------------- AllowAppGwProbe 100 Allow Inbound * GatewayManager * 65200-65535 AllowVnetIn 200 Allow Inbound * VirtualNetwork * * DenyAllIn 4096 Deny Inbound * * * *
GatewayManager からの65200~65535ポートへのInboundが許可されていることを確認してください。このルールがないと、バックエンド全台が Unhealthy 判定になります。設計時の注意ポイントです。よくある選定ミスとエラー対処
1. HTTPアプリにLoad Balancerを使ってSSL集約できない
症状:各バックエンドVMにSSL証明書を配置しなければならず、証明書の更新管理が煩雑になる対処:Application GatewayのSSLオフロードを採用し、証明書管理をGateway側に集約する。バックエンドVMはHTTPで受け取るだけでよく、証明書の配備・更新はGateway1箇所で済む
2. 非HTTPプロトコルにApplication Gatewayを選択して接続できない
症状:MySQLのTCPポート(3306)をApplication Gatewayで受けようとして接続できない対処:Application GatewayはHTTP/HTTPSのみ対応。TCPやUDPの汎用分散にはLoad Balancerを使う
3. Application GatewayのバックエンドがUnhealthyになる
よくある原因:・NSGでGatewayManagerからの65200~65535ポートへのInboundが遮断されている
・バックエンドVMのWebサーバー(Apache/Nginx)が起動していない
・ヘルスプローブに設定したパス(例:
/health)がバックエンドで実装されていない・ヘルスプローブのタイムアウト設定が短すぎてバックエンドの応答が間に合わない
4. コストが想定より大幅に高くなった
症状:L7機能をほとんど使っていないのにLoad Balancerの数十倍のコストが発生している対処:URLルーティング・SSLオフロード・WAFを実際に使用しているか見直す。これらが不要であれば、Standard SKUのLoad Balancerに切り替えることでコストを大幅に削減できる
本記事のまとめ
| 比較項目 | Azure Load Balancer | Application Gateway |
|---|---|---|
| 動作層 | L4(TCP/UDP) | L7(HTTP/HTTPS) |
| ルーティング基準 | IPアドレス+ポート番号 | URLパス・ホスト名・HTTPヘッダー |
| 対応プロトコル | TCP・UDP(汎用) | HTTP・HTTPSのみ |
| SSLオフロード | 不可 | 可能(証明書集約) |
| WAF | なし | WAF_v2 SKUで利用可 |
| セッションアフィニティ | 送信元IPハッシュ | Cookieベース |
| マルチサイト対応 | 不可 | 可能(ホストベースルーティング) |
| コスト目安 | 低(ルール単位+データ転送) | 高(キャパシティユニット課金) |
| 主な用途 | VM/VMSS・DBサーバー・内部通信 | WebアプリのHTTPS受付・WAF |
選定の判断は「HTTP/HTTPSのWebアプリでL7制御(URLルーティング・SSL・WAF)が必要か」で8割が決まります。必要なら Application Gateway、不要なら Load Balancerが適切な選択です。
両者を組み合わせるアーキテクチャも一般的です。Application Gateway(外部向けHTTPS+WAF)+内部Load Balancer(アプリサーバー間のTCP通信)という構成で、役割に応じた使い分けができます。
Azure Load Balancer・Application Gatewayの実構成も、ハンズオンで体系的に習得できます
Load BalancerとApplication Gateway、選定判断の次は実際の構成演習です。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、Azureハンズオン学習コースでは実機を使った演習で即戦力スキルを習得できます。
「Linuxの基礎から体系的に学びたい」という方には、『Linuxサーバー構築入門マニュアル(図解60P)』を無料でプレゼントしています。こちらから無料ダウンロード。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 前のページへ:AzureのRBACとAzure Policyで権限を設計する方法|ロール割り当てとガバナンスの実践
- この記事の属するカテゴリ:Azureへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます