1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Load Balancerの仕組み、構成

Last updated at Posted at 2022-08-21

TL;DR

https://www.kanzennirikaisita.com/posts/aws-alb-concepts
スクリーンショット 2022-08-21 18.05.52.png

ロードバランサー

負荷分散システム。トラフィックを複数のターゲット(EC2 インスタンス、コンテナ、IP アドレス、Lambda 関数、仮想アプライアンスなど)に分散させることで以下のメリットがある

特徴

高可用性

多数のAZに配布したEC2インスタンスなどにトラフィックを分散するので、一つのAZがダウンしてもユーザーのアプリケーションは問題なく使える。

統合性

 ELBはいろんなAWSサービスと一緒に使用できる

  • Auto Scaling:拡張性管理及びワークロード分散業務を効率的に可能。
  • Route 53:一緒に使うことでDNS失敗に対応できる。

安全性

  • 統合認証管理、SSL復号化、ポートフォワーディングなど多数のセキュリティ機能を提供
  • ELB用セキュリティグループを生成して流入·流出するトラフィックを効果的にコントロール可能

リスナー

プロトコルやポートを設定することでロードバランサーへの接続リクエストをチェックするもの

A listener is a process that checks for connection requests, using the protocol and port that you configure.

リスナーに対して定義したルールにより、ロードバランサーが登録済みのターゲットにルーティングする方法が決まる。

1つのリスナーに対して複数のターゲットグループを指定することが可能

Protcol: HTTP
Port: 80
DefaultAction:
  Type: forward
  TargetGroupArn: !Ref TargetGroup

上記の設定であれば、「HTTPプロトコル & ポート番号80」でのロードバランサーへのリクエストは、
「!Ref TargetGroup」へ転送される

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#forward-actions

Listener Configuration

プロトコルにHTTPSを指定することで暗号化および復号の作業をロードバランサーに任せることができる。HTTPSを使用する場合には少なくとも1つのSSLサーバー証明書をリスナーにデプロイする必要がある

Listener Rles

リスナーはそれぞれデフォルトのルールを持っているが、独自にルールを追加することもできる

ルールは

  • 優先度
  • 1つ以上のアクション
  • 1つ以上の条件で構成される

Default Rules

リスナーを作成するとき、デフォルトのルールのアクションを定義する
デフォルトのルールには条件を付与することはできない
リスナーに設定されたいずれのルールも満たさない場合にデフォルトルールのアクションが実行される

Rule Priority(優先度)

ルールは優先度をもち、優先度の低い順に評価される(デフォルトルールが最後に評価される)
デフォルトルール以外のルールの優先度はいつでも変更可能

Rule Actions(アクション)

ルールのアクションはタイプ、順序、アクションを実行するために必要な情報をもつ

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#rule-action-types

Rule Conditions(条件)

ルール条件はタイプと設定情報をもつ

条件が満たされると、そのアクションが実行される

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#rule-condition-types

Rule Action Type

アクションの種類

authenticate-cognito

Use Amazon Cognito to authenticate users.

authenticate-oidc

Use an identity provider that is compliant with OpenID Connect (OIDC) to authenticate users.

fixed-response

ステータスコードを返す

You can use this action to return a 2XX, 4XX, or 5XX response code and an optional message.

The count of successful fixed-response actions is reported in the HTTP_Fixed_Response_Count metric

forward

一番良く使うのがこれ

リクエストを1つ以上のターゲットグループにルーティングする
複数のターゲットグループを指定した場合は、各ターゲットグループに重みを指定する必要がある

If you specify two target groups, one with a weight of 10 and the other with a weight of 20, the target group with a weight of 20 receives twice as many requests as the other target group.

デフォルトでは、セッション情報を維持しない。
セッションが維持されることを保証するためには、ルールに対してターゲットグループのstickinessを有効化する必要がある。

これにより、ロードバランサーが最初にターゲットグループにルーティングする際、AWSALBTGというクッキーを生成し、クライアントへのリスポンスに含める。
このクッキーには、ルーティングされたターゲットグループの情報が含まれており、クライアントがこのクッキーを含めることによってリクエストは Cookie で指定されたターゲットグループにルーティングされる

Application Load Balancer は、URL エンコードされた Cookie 値をサポートしていない

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-listeners.html#forward-actions

redirect

Redirect requests from one URL to another.

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-listeners.html#redirect-actions

Rule Condition Type

  • host-header
  • http-header
  • http-request-method
  • path-pattern
  • query-string
  • source-ip

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#rule-condition-types

1 つのルールにつき最大 5 つの一致評価を指定できる


ターゲットとターゲットグループ

リスナーのルールを作成するときに、ターゲットグループと条件が指定される

つまり、結局ターゲットにリクエストを送るのは、ロードバランサーであるということ。リスナーやターゲットグループはロードバランサーが受け取ったリクエストをどこに転送するのかを決める時に判断するコンポーネントである。

リスナーで設定されたルールの条件を満たした場合にルールと同時に指定されたターゲットグループへルーティングされる。

ターゲットグループの中には複数のターゲットが含まれる。これらの複数のターゲットにトラフィックが分散される

ロードバランサーのヘルスチェック設定は、ターゲットグループ単位で定義する

リスナーのルールでターゲットグループを指定すると、ロードバランサーは、ロードバランサーで有効なアベイラビリティーゾーンにある、ターゲットグループに登録されたすべてのターゲットの状態を継続的にモニタリングします。

ターゲットグループにターゲットを登録するとデフォルトでは、ロードバランサーはターゲットグループに指定したポートとプロトコルを使用して登録済みターゲットにリクエストを送信する。

ターゲットグループに各ターゲットを登録するときに、このポートを上書き可能!。

ルーティング設定

デフォルトでは、ロードバランサーはターゲットグループ作成時に指定したプロトコルポート番号を使用して、リクエストをターゲットにルーティングする

または、ターゲットグループへの登録時にターゲットへのトラフィックのルーティングに使用されるポートを上書きすることもできる

 

Target Type

ターゲットグループを作成するとき、そのターゲットの種類を指定する

ターゲットグループを作成した後で、ターゲットの種類を変更することはできない

使用可能なターゲットの種類と ip の場合使用可能なIPアドレス

IP アドレスタイプ

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-group-ip-address-type

プロトコルバージョン

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-group-protocol-version

登録済みターゲット

ロードバランサーは、クライアントにとって単一の通信先として機能し、正常な登録済みターゲットに受信トラフィックを分散する

ターゲットの登録処理が完了し、最初のヘルスチェックに合格するとすぐに、ロードバランサーは新しく登録したターゲットへのリクエストのルーティングを開始します

ターゲットを登録解除するとターゲットグループから削除されるが、ターゲットにそれ以外の影響は及ばない。登録解除するとすぐに、ロードバランサーはターゲットへのリクエストのルーティングを停止する。ターゲットは、未処理のリクエストが完了するまで draining状態になる

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-target-groups.html#registered-targets

ターゲットグループの属性

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-group-attributes

ルーティングアルゴリズム

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-target-groups.html#modify-routing-algorithm

登録解除の遅延

ELB は、登録解除するターゲットへのリクエストの送信を停止する。デフォルトでは、ELB 登録解除プロセスを完了する前に 300 秒待って、ターゲットへ処理中のリクエストが完了するのを助ける

登録解除するターゲットの初期状態は draining

録解除の遅延が経過すると、登録解除プロセスは完了し、ターゲットの状態は unused になる

登録解除するターゲットに未処理のリクエストやアクティブな接続がない場合は、ELB は登録解除の遅延時間が経過するのを待たずに、即時登録解除プロセスを完了する。ただし、ターゲットの登録解除が完了しても、ターゲットのステータスは、登録解除の遅延タイムアウトの期限が切れるまで drainingと表示される。タイムアウトの期限が切れると、ターゲットは unused状態に移行する。

ターゲットグループに登録解除の遅延という設定項目があります。 ターゲットの登録解除中に未処理のリクエストが完了するまで待つ時間。この時間中、ターゲットの状態はストリーミングになります。 インスタンス切り離し後、ここで設定した時間だけターゲットはdraining状態になります。 初期設定では300秒となっています。 つまり切り離してから300秒間は未処理のリクエストが完了するまで待機します

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-target-groups.html#deregistration-delay

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?