ロードバランサ
あるWebサービスが複数のWebサーバやアプリケーションサーバで構成されている時,リクエスト要求の負荷を分散させること。処理速度の向上・高可用性と耐障害性が見込まれる
ELB(Elastic Load Balancing)
AWSが提供している完全マネージドなロードバランシングサービス。同じ構成のEC2インスタンスを別々のAZに配置することで負荷分散できる。
複数のAZにまたがりシステムを構築することで,AZ障害が発生した場合もシステムを稼働することができる。
1台のEC2がダウンしてもロードバランサは自動的に他のEC2にトラフィックを振り分けエンドユーザはサイトへ問題なくアクセスできる。
証明書アタッチ
ELBに証明書をアタッチすることで通信の暗号化/複号も行う。これをSSLターミネーションという。証明書はACM(AWS Certificate Manager)で作成可能。
外部と内部
ELBには外部向け(External)と内部向け(Internal)がある。どちらもプライベートIPアドレスを通じてターゲットと通信するので,外部向けのWebサーバであってもパブリックIPアドレスを待つ必要はない。
クライアント側のフロントエンド接続とサーバ側のバックエンド接続のコネクションを維持する。アイドルタイムの設定が60秒で設定されており,60秒間通信が無ければELBはコネクションを閉じる。
ヘルスチェック
ロードバランシング先となるターゲットに対してリクエストを送信して死活監視を行う。
ELBが一定の感覚でEC2にリクエストを送信し,チェックの結果正常な状態のEC2のみにリクエストを送信する。
プロトコル,ポート,パスを指定してヘルスチェックができる。
デフォルトだと30秒間隔で80ポートで/index.htmlへアクセスし,2回連続でHTTPコードが200以外のレスポンスが応答したら異常。
ELBのタイプ
ALB(Application Load Balancer)
リバースプロキシ型のロードバランシングサービス。
HTTP,HTTPSプロトコルの7層(アプリケーション層)で負荷分散するロードバランサでWebアプリケーションでよく使われる。リスナーと呼ばれるコンポーネントを作成し,使用するプロトコルとポートを設定してルーティングルールを設定する。
例えばパス単位でターゲットグループ(AZをまたいでインスタンスやコンテナをまとめた仮想的なグループ)を振り分け指定できる。
またAWS CognitoやOIDC IDプロバイダと連携するユーザ認証をサポート。認証が成功すると,ALBによってアクセストークンなどがHTTPヘッダに付与されてリクエスト転送される。
NLB(Network Load Balancer)
TCPやUDPの4層(トランスポート層)で動作。
ALBのようにリスナーやロードバランスされる対象をターゲットグループとして設定。静的なIPアドレスを見るので,ALBのような細かい振り分けはできないが,数百万/秒のリクエストを処理できる。
CLB(Classic Load Balancer)
ALBとNLBがリリースされる前のロードバランサ。現在使用は推奨されていない。
リスナー
トラフィックを受け付けるポートとプロトコルを設定。トラフィックをターゲットグループへルーティングする。
ルール
ターゲットグループ(トラフィックの送信先),条件,優先順位を指定したもの。条件に合致した場合,設定したアクションが実行される。
ターゲットグループ
トラフィックを流す対象(EC2,Lambda,プライベートIPアドレス)。
利用料金
「新規接続数」「アクティブ接続数」などをもとに算定する指標であるLCU(LoadBalancer Capacity Unit)が影響
参考
https://www.youtube.com/watch?v=reJ75v5KPBU&list=PLPzcoMdqG5noLR7rAc552mvPADUmmdSt1&index=4
AWSの基本・仕組み・重要用語が全部わかる教科書