AWS ロードバランサー完全ガイド

現代のクラウド環境において、ロードバランサーはアプリケーションの高可用性とパフォーマンスを確保するために不可欠なコンポーネントです。AWS Elastic Load Balancing (ELB) は、クライアントからのアプリケーショントラフィックを受信し、複数のアベイラビリティゾーンにまたがる EC2 インスタンス、コンテナ、IP アドレスなど、登録された複数のターゲットにインテリジェントに分散します。これにより、トラフィックのバランスが取れるだけでなく、アプリケーションのフォールトトレランスと可用性も向上します。

 

AWS ロードバランサーの概要

AWS Load Balancer は、クライアントに単一のアクセスポイントを提供し、リクエストを正常なターゲットインスタンスにインテリジェントにルーティングするとともに、異常なインスタンスを自動的に検出し、回復後にトラフィックを再ルーティングします。手動による介入なしにトラフィックの変動に動的に適応し、AZ 間およびリージョン間の分散をサポートすることで高可用性を実現します。

ロードバランサのコア機能は次のとおりです。

  • 複数のターゲットインスタンスにトラフィックを自動的に分散する
  • 対象インスタンスのヘルスチェックとルーティングの動的調整
  • SSL/TLS 復号化とユーザー認証をサポート
  • 弾力的なスケーラビリティとフォールトトレランスを提供する
  • AWS Certificate Manager、Auto Scaling、CloudWatchなどのサービスと統合

 

AWS ロードバランサーの種類

AWS では 4 種類のロードバランサーを提供しています。

  1. クラシック ロードバランサー (CLB)
  • 主に EC2-Classic ネットワークに対して、リクエスト レベルと接続レベルの両方でトラフィックを分散します。
  • 機能が制限されており、パスベースまたはホストベースのルーティングはサポートされていません。
  • これは、古いバージョンのEC2-Classicをご利用のユーザーにのみ推奨されます。新規ユーザーには、ALBまたはNLBをお勧めします。
  1. アプリケーションロードバランサー(ALB)
  • コンテンツに基づいて HTTP/HTTPS パケットをルーティングするレイヤー 7 ロード バランサ。
  • パスベースおよびホストベースのルーティング、およびリクエストを処理する Lambda 関数をサポートします。
  • WebSocket および HTTP/2 プロトコルをネイティブにサポートしており、マイクロサービスやコンテナ化されたアーキテクチャに適しています。
  • ターゲットを IP アドレスまたは複数のポートに登録して、柔軟なトラフィック分散を実現できます。
  1. ネットワーク ロード バランサー (NLB)
  • 高いパフォーマンスと非常に低いレイテンシのニーズに適したレイヤー 4 ロード バランサ。
  • 静的 IP を提供し、TLS 終了をサポートし、1 秒あたり数百万件のリクエストを処理できます。
  • 不安定なトラフィックやバースト的なトラフィックを管理し、DNS キャッシュの問題を回避するのに適しています。
  1. ゲートウェイロードバランサー(GLB)
  • 主にサードパーティの仮想ネットワーク デバイスの展開に使用され、トラフィックは複数のターゲット間で自動的に分散されません。
  • 機能は比較的専門的であり、ほとんどのユーザーにとって適用シナリオは限られています。

 

AWS ロードバランサーの仕組み

AWSロードバランサーは、リスナーを介してクライアントリクエストを検査し、設定されたポートとプロトコルに基づいて登録済みインスタンスにルーティングします。ヘルスチェックにより、トラフィックが正常なインスタンスにのみ送信されることが保証されます。デフォルトでは、ロードバランサーは有効なアベイラビリティゾーンにトラフィックを均等に分散し、フォールトトレランスを向上させるため、各アベイラビリティゾーンにほぼ同数のインスタンスを配置することを推奨します。

  • 内部ELB: VPC 内でのみアクセス可能で、プライベート サブネット アプリケーションに適しています。
  • 外部ロードバランサ(インターネット向け ELB): ノードにはパブリック IP があり、インターネットからアクセスできます。

やり遂げる オートスケーリング(ASG) ELB を組み合わせることで、障害が発生したインスタンスを自動的に特定して削除すると同時に新しいインスタンスを起動し、高いアプリケーション可用性を維持できます。ASG はインスタンスの健全性を検証し、ELB と連携してトラフィックが正常なインスタンスにのみルーティングされるようにします。

 

高度な機能と構成

  • パスベースルーティングALB は、URL パスに基づいてトラフィックをさまざまなバックエンド サービスに誘導できます。
  • ホストベースルーティング: 同じ ALB が複数のドメイン名に対するリクエスト分散をサポートします。
  • リバースプロキシALB はリバース プロキシとして機能し、リクエストの分散と負荷分散を実装できますが、静的ターゲットのみをサポートします。
  • マルチポート負荷分散: コンテナ化されたアプリケーションのパフォーマンスを向上させるために、単一のインスタンスに対して複数のポート登録をサポートします。
  • リージョン間の負荷分散: 異なる AWS リージョン間でトラフィックを均等に分散し、グローバルな可用性を向上させることができます。
  • セキュリティ統合: SSL/TLS 暗号化、AWS WAF 保護、IAM 認証をサポートします。

ロード バランサーを構成するときは、次のことを行う必要があります。

  1. ロードバランサーの種類(ALB、NLB、GLB)を選択します
  2. 可用性ゾーンとサブネットを設定する
  3. セキュリティグループとポートを構成する
  4. ターゲットグループを作成し、インスタンスを登録する
  5. ヘルスチェックポリシーの設定
  6. テストと起動

 

AWS ロードバランサーの制限

ELB は高可用性と復元力に優れていますが、それでもいくつかの制限があります。

  • 遅れ特にバックエンド インスタンスの CPU またはメモリの使用率が高い場合や、ネットワークが不適切に構成されている場合は、リクエストの遅延が発生する可能性があります。
  • 対象グループの制限NLBには、ターゲットグループ内のインスタンス数にクォータ制限があります。これは垂直スケーリングや複数のNLBによって解決できますが、完全に排除することはできません。
  • 接続の安定性: 単一の NLB が多数の確立された接続を処理する場合、短時間の接続切断が発生することがあります。
  • 機能上の制限従来の ELB には、リアルタイムのアプリケーション分析、クラウド間のトラフィック管理、複雑な負荷分散戦略が欠けています。

 

実用的な提案と最適化戦略

実際のアプリケーションでは、適切なAWSロードバランサーの種類を選択することが重要です。マイクロサービスアーキテクチャやマルチサービスWebアプリケーションの場合、ALB パスとホスト名に基づく柔軟なルーティングを提供し、異なるサービスで同じロードバランサーを共有することで、コストを削減し、管理を簡素化します。さらに、ALBはWebSocketとHTTP/2プロトコルをネイティブにサポートしているため、リアルタイムのインタラクティブアプリケーションや複数リクエストの再利用シナリオの構築が容易になります。

大規模な電子商取引のプロモーション、金融取引、オンラインゲームなど、高い同時実行性とバーストトラフィックを処理する必要があるアプリケーションの場合、ナショナルリーグ より適用範囲が広くなりました。固定IPと低レイテンシにより、重要なサービスの安定性が確保され、既存のファイアウォールポリシーとの互換性も確保されます。TLS終端と組み合わせることで、NLBはサーバーの暗号化負荷を軽減し、全体的なパフォーマンスを向上させます。

さらに、 自動スケーリング ロードバランサーを使用すると、トラフィックの変動に応じてインスタンス数を動的に調整できるため、真に弾力的なスケーリングを実現できます。例えば、トラフィックのピーク時には、負荷分散のためにインスタンスを自動的に追加起動し、オフピーク時にはインスタンスをリサイクルすることでコストを削減できます。同時に、ロードバランサーは異常なインスタンスを自動的に削除することで、アプリケーションの継続的な可用性を確保します。

パフォーマンスをさらに最適化するために、ユーザーはクロスリージョン負荷分散またはマルチAZ配置を有効にして、グローバルなトラフィック分散と災害復旧を実現できます。CloudWatchのモニタリングメトリクスと組み合わせることで、リクエストのレイテンシー、ターゲットインスタンスの健全性、トラフィック分散をリアルタイムで追跡できるため、開発者は戦略をタイムリーに調整できます。

総じて、AWS ロードバランサーはアプリケーションの可用性と信頼性を向上させるだけでなく、柔軟なルーティングとセキュリティ機能も提供します。適切なロードバランサーの種類を選択し、ターゲットグループを設定し、スケーリングポリシーを有効にすることで、企業はクラウド環境において、高性能で耐障害性が高く、保守性の高いアプリケーションアーキテクチャを構築できます。

 

高度な代替案

クラウド上の高度なロードバランサ プラットフォームは、AWS ネイティブ ELB よりも多くのエンタープライズクラスの機能を提供します。

  • 高度なHTTPコンテンツスイッチングと永続化機能
  • カスタマイズ可能な健康モニタリング
  • クロスクラウド DNS とグローバル負荷分散 (GSLB)
  • オンデマンドの自動拡張とリアルタイムのトラフィック分析
  • より強力なセキュリティポリシーとアプリケーションポリシーのサポート
  • これらの機能は、複雑なエンタープライズレベルのニーズを満たすだけでなく、リアルタイム分析、クロスクラウド管理、自動化における ALB と NLB の欠点を補います。

さらに詳しく

何が必要か教えてください