皆さんこんにちは。横山です。
今回は、現在勉強中のネットワーク関連の内容から、負荷分散について備忘録を残します。
負荷分散とは
負荷分散とは、複数のサーバーやリソースにトラフィックや処理を均等に分ける技術です。これにより、システム全体のパフォーマンスや可用性が向上し、特定のサーバーやサービスが過負荷にならないようにします。
目的
- 負荷の均等化: サーバーやサービスが同時に多くのリクエストを処理する場合、負荷分散はそれらのリクエストを複数のサーバーに均等に分けます。これにより、1つのサーバーだけに負担が集中することを防ぎます。
- 可用性の向上: もし1つのサーバーがダウンしても、他のサーバーにトラフィックを転送することができるので、サービスの中断を防ぎます。
主な負荷分散サービス
Azure は、用途に応じたさまざまな負荷分散オプションを提供しています。以下のサービスが代表的なものです。
1. Load Balancer
Load Balancerは、Azure 上で最も基本的な負荷分散サービスです。主にレイヤー4(TCP/UDP)で動作し、インターネットトラフィックや内部トラフィックの分散を行います。
【特徴】
- 高可用性:Load Balancerは、単一の障害点を排除し、トラフィックを均等に分散することで、高可用性を実現します。
- スケーラビリティ:必要に応じて、バックエンドプールにサーバーを追加できます。
- アベイラビリティゾーン: 複数のアベイラビリティゾーンにまたがって冗長性を提供し、障害耐性を向上させます。
【使用ケース】
- インターネット向け Web アプリケーション: 外部ユーザーからのリクエストを複数の Web サーバーに分散。
- 内部アプリケーション:Azure 内で、複数の仮想マシン間でのトラフィック分散。
2. Application Gateway
Application Gateway は、アプリケーション層(レイヤー7)で動作する負荷分散サービスです。HTTP および HTTPS トラフィックに対して詳細なトラフィックのルーティングを行います。
【特徴】
- Web アプリケーションファイアウォール(WAF)機能:セキュリティを強化し、SQL インジェクションやクロスサイトスクリプティング(XSS)などの攻撃からアプリケーションを保護します。
- URL ベースのルーティング: 特定の URL パターンに基づいてトラフィックを異なるバックエンドにルーティングできます。
- SSL オフロード: Application Gateway で SSL 接続を終端し、その後の通信を HTTP で行うことができます。
【使用ケース】
- ウェブアプリケーション: 特定の URL に基づいてトラフィックを異なるサーバーに分散したい場合に有効です。
- セキュリティ: WAF 機能を活用してアプリケーションを保護し、攻撃を防止。
3. Azure Front Door
Azure Front Door は、グローバルなアプリケーション配信ネットワーク(ADN)サービスで、エンドユーザーとアプリケーション間のトラフィックの最適化を行います。特に、世界中の複数のリージョンにまたがるアプリケーションに適しています。
【特徴】
- グローバルな負荷分散: 世界中のエンドユーザーからのリクエストを最適なバックエンドサーバーに振り分けます。
- エンドユーザー向けの最適化: エンドユーザーが最も近いリージョンからコンテンツを取得できるようにし、パフォーマンスの向上を図ります。
- SSL オフロード: SSL 接続の処理を Azure Front Door が担当し、バックエンドサーバーの負担を軽減します。
【使用ケース】
- グローバルな Web サイトやアプリケーション:世界中に分散するユーザーに対して、高速でスムーズなアクセスを提供。
- 高可用性: Azureリージョン間でのトラフィック分散により、障害が発生した場合でもサービスを継続。
4. Traffic Manager
Traffic Manager は、DNS ベースの負荷分散サービスで、異なる Azure リージョンにある複数のアプリケーションインスタンスにトラフィックを分散します。
【特徴】
- DNS ベースのトラフィック管理:トラフィックの分散方法として DNS を使用し、特定のリージョンやサーバーにリクエストをルーティングします。
- 柔軟な分散ポリシー:いくつかの分散方法(パフォーマンス、地理的ルーティング、重み付け)を選択できます。
- 低遅延:最適なリージョンにトラフィックをルーティングすることで、エンドユーザーの遅延を最小化します。
【使用ケース】
- リージョン間の負荷分散: 世界中のデータセンターにまたがるアプリケーションで、リージョンごとにトラフィックを振り分けたい場合に有効です。
- 災害復旧(DR): 1つのリージョンがダウンした場合、別のリージョンにトラフィックを切り替え、サービスを継続できます。
Azure 負荷分散サービスの特徴をまとめた表
サービス | 主な特徴 | 使用シナリオ | 例 | グローバル/リージョン | 推奨されるトラフィック |
---|---|---|---|---|---|
Load Balancer | ・レイヤー4(TCP/UDP)負荷分散、シンプルで高速な転送を提供 | ・内部サービスや、外部向けアプリケーションで高いスループットが求められる場合 | ・単一リージョン内の Web アプリケーション ・ゲームサーバーやデータベースの接続要求 |
リージョンまたはグローバル | 非 HTTP(S) |
Application Gateway | ・レイヤー7(HTTP/HTTPS)負荷分散- URLベースのルーティング、SSL オフロード ・WAF(Web アプリケーションファイアウォール)機能 |
・Web アプリケーション、特に URL パターンでトラフィックを分ける場合- セキュリティ強化が必要な場合 | ・動的な Web サイトや API のトラフィック ・セキュリティの強化が求められるサイト |
リージョン | HTTP(S) |
Azure Front Door | ・グローバル負荷分散- 高速なコンテンツ配信、エッジロケーションの利用 ・SSL オフロード、WAF 機能 |
・グローバルに分散するアプリケーションに対する最適化 ・ユーザーの位置情報に基づき、最適なエッジロケーションからコンテンツを配信 |
・多国籍企業のWeb サイトやアプリケーション ・迅速なコンテンツ配信が求められる場合 |
グローバル | HTTP(S) |
Traffic Manager | ・DNS ベースの負荷分散- 複数リージョン間でトラフィックを分散 ・地理的なルーティング |
・リージョン間でアプリケーションを冗長化する場合 ・災害復旧(DR)のために使用する場合 |
・国際的な Web サイトやマルチリージョンアプリケーション ・災害復旧構成の設定 |
グローバル | 非 HTTP(S) |
まとめ
Azure の負荷分散サービスは、それぞれ異なる特長を持っており、利用するシナリオに応じて最適な選択が必要です。
アプリケーションの規模やセキュリティ要求、またグローバル/リージョンでの分散方法によって、どのサービスが最も効果的かが決まります。
用途に合わせて、適切なサービスを選択することで、システムのパフォーマンスと可用性を最大化することができます。