🙆‍♀️

ロードバランサーのコンポーネントを整理 | リスナー,ルール,ターゲットグループ,ターゲット

2024/12/07に公開

はじめに

AWSのドキュメントがすべてを物語っていると思いますが、分かるようで理解しきれていので、各コンポーネントの理解を改めてしてみました。

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/introduction.html#application-load-balancer-components

ロードバランサーとは

ネットワークやアプリケーションレベルでのトラフィックを複数のサーバーやリソース(ターゲット)に効率的に分散するための仕組みです。

整理したいコンポーネント

今回はALBを対象に、リスナー・リスナールール・ターゲットグループ・ターゲットについて整理していくことで、ロードバランサーの動きの理解に役立てたいと思います。

デフォルメして解説しますと、ロードバランサーに通信が合った際に分散するためのコンポーネントの順番は「リスナー --> リスナールール --> ターゲットグループ --> ターゲット」の順番です。
実際に通信しているという話ではなくて、設定したコンポーネント設定の利用用途としてこの順番で考えておくと理解しやすいと思っています。

私が各コンポーネントの概念を理解しづらいと感じた点は、各コンポーネントに分散の概念をもっていることでした。複数のリスナーを設定可能、複数のリスナールールを設定可能、複数のターゲットグループを設定可能、複数のターゲットが存在する。といったように各コンポーネントで持つ分散・分岐の概念に対して理解していくことがロードバランサーと仲良くなる道と感じます。

リスナー

リスナーは、どの通信をロードバランサーで受け入れるかというゲートキーパーの役割です。

Protocol:Port のセットで、受信する通信を決めます。
利用用途が多いのは「HTTPS:443」のリスナーを1つ作成してHTTPS通信のみをロードバランサーに受信させるという方法かと思います。
ロードバランサーはリスナーとして設定しない通信を拒否します。なので、「HTTPS:443」のみを設定している場合は、「「HTTP:80」は拒否します。

リスナールール

リスナールールは、リスナーが許可通信に対して 様々な条件(ルール) に応じて、ターゲットグループに通信を振り分ける役割です。

様々な条件とは、ホストヘッダー、パス、リクエストメソッド、送信元IPなどです。その条件に応じて割り振るターゲットグループを決めます。

ターゲットグループ

ターゲットグループは、特定の機能やロジックを持つリソースの集合体です。また、個別リソースであるターゲットに対して分散処理を行います。

もう少し噛み砕くと、同じ機能を持つEC2インスタンス(タスクでも)をターゲットとして利用する際に、同機能を有した複数のEC2インスタンスがターゲットグループに紐付いてる状態です。

ターゲット

ターゲットは、機能やロジックを実行するコンピューティングリソースをもったサービスです。最終的に実行する処理です。

おわりに

各コンポーネントについて、デフォルメして解説しました。各コンポーネントでは、言及した以外にも多くの機能を有しています。あくまで、ロードバランサーの分散処理の中でざっくりとコンポーネントを紹介しました。
詳しくはドキュメントご確認いただけたらと思います。
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/introduction.html#application-load-balancer-components

Discussion