Application Load Balancer とは? - Elastic Load Balancing

Application Load Balancer とは?

Elastic Load Balancing は、受信したトラフィックを複数のアベイラビリティーゾーンの複数のターゲット (EC2 インスタンス、コンテナ、IP アドレスなど) に自動的に分散させます。登録されているターゲットの状態をモニタリングし、正常なターゲットにのみトラフィックをルーティングします。Elastic Load Balancing は、受信トラフィックの時間的な変化に応じて、ロードバランサーをスケーリングします。また、大半のワークロードに合わせて自動的にスケーリングできます。

Elastic Load Balancing は、Application Load Balancer、Network Load Balancer、Gateway Load Balancer、Classic Load Balancer といったロードバランサーをサポートします。ニーズに最適なタイプのロードバランサーを選択できます。このガイドでは、Application Load Balancers について説明します。その他のロードバランサーの詳細については、Network Load Balancer ユーザーガイドGateway Load Balancer ユーザーガイド、およびClassic Load Balancer ユーザーガイドを参照してください。

Application Load Balancer のコンポーネント

ロードバランサーは、クライアントにとって単一の通信先として機能します。このロードバランサーは、受信アプリケーショントラフィックを複数のアベイラビリティーゾーンの複数のターゲット(EC2 インスタンスなど) に分散します。これにより、アプリケーションの可用性が向上します。ロードバランサーに 1 つ以上のリスナーを追加できます。

リスナーは、設定したプロトコルとポートを使用して、クライアントからの接続リクエストをチェックします。リスナーに対して定義したルールにより、ロードバランサーが登録済みターゲットにリクエストをルーティングする方法が決まります。各ルールは優先度、1 つ以上のアクション、および 1 つ以上の条件で構成されています。ルールの条件が満たされると、アクションが実行されます。リスナーごとにデフォルトのルールを定義する必要があり、オプションで追加のルールを定義できます。

ターゲットグループは、指定されたプロトコルとポート番号を使用して、1 つ以上の登録済みのターゲット (EC2 インスタンスなど) にリクエストをルーティングできます。1 つのターゲットを複数のターゲットグループに登録できます。ターゲットグループ単位でヘルスチェックを設定できます。ヘルスチェックは、ロードバランサーのリスナールールに指定されたターゲットグループに登録されたすべてのターゲットで実行されます。

次の図に、基本コンポーネントを示します。各リスナーにデフォルトのルールがあり、1 つのリスナーにリクエストを別のターゲットグループにルーティングする別のルールが含まれていることに注意してください。1 つのターゲットが 2 つのターゲット グループに登録されています。


                基本的な Application Load Balancer のコンポーネント

詳細については、次のドキュメントを参照してください。

Application Load Balancer の概要

Application Load Balancer は、開放型システム間相互接続 (OSI) モデルの第 7 層であるアプリケーションレイヤーで機能します。ロードバランサーはリクエストを受信すると、優先度順にリスナールールを評価して適用するルールを決定し、ルールアクションのターゲットグループからターゲットを選択します。リスナールールを構成し、アプリケーショントラフィックのコンテンツに基づいて異なるターゲットグループにリクエストをルーティングできます。それぞれのターゲットグループでルーティングは個別に実行され、複数のターゲットグループに登録されているターゲットの場合も同じです。ターゲットグループレベルで使用するルーティングアルゴリズムを設定できます。デフォルトのルーティングアルゴリズムはラウンドロビンです。代わりに最小の未処理のリクエストを指定することもできます。

アプリケーションへのリクエストの流れを中断することなく、ニーズの変化に応じてロードバランサーに対してターゲットの追加と削除を行うことができます。Elastic Load Balancing はアプリケーションへのトラフィックが時間の経過とともに変化するのに応じてロードバランサーをスケーリングします。Elastic Load Balancing では、大半のワークロードに合わせた自動的なスケーリングが可能です。

登録済みのインスタンスのヘルス状態をモニタリングするために使用されるヘルスチェックを設定することで、ロードバランサーは正常なターゲットにのみリクエストを送信できます。

詳細については、Elastic Load Balancing ユーザーガイドHow Elastic Load Balancing works を参照してください。

Classic Load Balancer からの移行のメリット

Classic Load Balancer の代わりに Application Load Balancer を使用すると、以下の利点があります。

  • パスの条件 のサポート。リクエスト内の URL に基づいてリクエストを転送するリスナーのルールを設定できます。これにより、アプリケーションをより小さなサービスとして構成し、URL の内容に基づいて適切なサービスにリクエストをルーティングできます。

  • ホストの条件 のサポート。HTTP ヘッダー内のホストフィールドに基づいてリクエストを転送するリスナーのルールを設定できます。これにより、1 つのロードバランサーを使用して複数のドメインにリクエストをルーティングできます。

  • HTTP ヘッダー条件 とメソッド、クエリパラメータ、送信元 IP アドレスなど、リクエスト内のフィールドに基づくルーティングのサポート。

  • 1 つの EC2 インスタンス上での複数のアプリケーションへのルーティングリクエストのサポート。インスタンスまたは IP アドレスは、それぞれ異なるポート上の複数のターゲットグループに登録できます。

  • 1 つの URL から別の URL へのリクエストのリダイレクトのサポート。

  • カスタム HTTP レスポンスの出力のサポート。

  • ロードバランサーの VPC 外のターゲットを含め、IP アドレスによるターゲットの登録をサポート。

  • ターゲットとしての Lambda 関数の登録のサポート。

  • リクエストをルーティングする前に企業 ID またはソーシャル ID を通じてアプリケーションのユーザーを認証するロードバランサーのサポート。

  • コンテナ化されたアプリケーションのサポート。Amazon Elastic Container Service (Amazon ECS) は、タスクをスケジュールするときに未使用のポートを選択し、そのポートを使用するターゲットグループにタスクを登録できます。これにより、クラスターを効率的に使用することができます。

  • 各サービスの個別のヘルスステータスのモニタリングのサポート。ヘルスチェックがターゲットグループレベルで定義され、多数の CloudWatch メトリクスがターゲットグループレベルで報告されます。ターゲットグループを Auto Scaling グループにアタッチすることで、各サービスをオンデマンドで動的にスケールすることができます。

  • アクセスログへの情報の追加と圧縮形式での保存。

  • ロードバランサーのパフォーマンスの向上。

各ロードバランサータイプでサポートされている機能の詳細については、Elastic Load Balancing の製品比較を参照してください。

Elastic Load Balancing は、アプリケーションの可用性とスケーラビリティを高める以下のサービスを使用します。

  • Amazon EC2 — クラウドでアプリケーションを実行する仮想サーバーです。EC2 インスタンスへのトラフィックをルーティングするように、ロードバランサーを設定できます。

  • Amazon EC2 Auto Scaling — インスタンスに障害が発生した場合でも必要なインスタンスの実行数を保証し、需要の変化に応じて自動的にインスタンス数を増減できるようにします。Elastic Load Balancing を使用して Auto Scaling を有効にした場合、Auto Scaling によって起動されたインスタンスは自動的にロードバランサーに登録され、Auto Scaling によって終了されたインスタンスは自動的にロードバランサーから登録解除されます。

  • AWS Certificate Manager — HTTPS リスナーを作成するには、ACM で提供された証明書を指定できます。ロードバランサーは、証明書を使用して接続を終了し、クライアントからのリクエストを復号します。詳細については、「」を参照してくださいSSL 証明書

  • Amazon CloudWatch — ロードバランサーを監視し、必要に応じてアクションを実行することができます。詳細については、「」を参照してくださいApplication Load Balancer の CloudWatch メトリクス

  • Amazon ECS — EC2 インスタンスのクラスター上で Docker コンテナを実行、停止、管理することができます。コンテナにトラフィックをルーティングするように、ロードバランサーを設定できます。詳細については、Amazon Elastic Container Service デベロッパーガイドService load balancing を参照してください。

  • AWS Global Accelerator — アプリケーションの可用性とパフォーマンスが向上します。アクセラレーターを使用して、1 つ以上の AWS リージョンの複数のロードバランサーにトラフィックを分散します。詳細については、「AWS Global Accelerator デベロッパーガイド」を参照してください。

  • Route 53 — ドメイン名 (www.example.com など) を、コンピュータが相互の接続に使用する数字の IP アドレス (192.0.2.1 など) に変換することで、閲覧者をウェブサイトにルーティングするための信頼性が高く、コスト効率のよい方法を提供します。AWS は、ロードバランサーなどの URL をリソースに割り当てます。ただし、ユーザーが覚えやすい URL を使用することもできます。たとえば、ドメイン名をお客様のロードバランサーにマッピングすることができます。

  • AWS WAF — Application Load Balancer で AWS WAF を使用して、ウェブアクセスコントロールリスト (ウェブ ACL) のルールに基づいてリクエストを許可またはブロックできます。詳細については、「」を参照してくださいApplication Load Balancer および AWS WAF

ロードバランサーに統合されたサービスに関する情報を表示するには、AWS Management Consoleでロードバランサーを選択し、[統合されたサービス] タブを選択します。

Pricing

ロードバランサーについては、お客様が利用された分のみのお支払いとなります。詳細については、Elastic Load Balancing の料金表を参照してください。