1. Load Balancers
種類
- Application Load Balancer (以下ALB)
- Network Load Balancer (以下NLB)
- Classic Load Balancer (以下CLB)
- Gateway Load Balancer (以下GWLB)
※ELBは総称、ただCLBに対して言われることが多い
すべてAZ/サブネットサービス
これが一番大事
以下ポイント
Application Load Balancer
概要
レイヤ7で動作するロードバランサ
ターゲットは EC2インスタンスやコンテナ、IPアドレスが想定
HTTP/HTTPS に対応
AWS WAFと連携可能
HTTP および HTTPS トラフィックを使用するウェブアプリケーション用に柔軟性の高い機能セットが必要な場合は、Application Load Balancer を選択します。Application Load Balancer はリクエストレベルで動作し、マイクロサービスとコンテナを含む、アプリケーションアーキテクチャを対象とした高度なルーティングおよび可視性機能を提供します。
参考:https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/introduction.html
インターネット向け/内部
作成時にスキームカラムで指定(作成後は変更不可)
インターネット向け:インターネットからのトラフィックをルーティング(パブリックサブネットがマスト)DNSでルーティング
内部:プライベートIPアドレスでルーティング
SG
インターネットからの着信は HTTP/HTTPS で 0.0.0.0/0(要件によっては特定IP)
ALB 配下のインスタンスにはALBにアタッチしたSGを送信元にすることでセキュアにできる
リスナー
着信したトラフィックのルーティング設定を実施
ターゲットグループや着信プロトコル、ポート番号を指定する
ターゲットグループ
ターゲットタイプ:インスタンス(Auto Scaling Group)/IPアドレス/Lambda関数
ヘルスチェック:HTTP/HTTPS
プロトコルバージョン:HTTP1/HTTP2/gRPC ※インスタンス又はIPアドレス時のみ選択可能
ルール
作成時にはデフォルトルールが作成される
カスタムでredirectやforwardができる
〇Host名やHTTPヘッダー、URLパスベールでのルーティングが可能
→同一インスタンス内の複数ポートやパスにターゲット可能
TLS終端
ターゲットグループでプロトコルをHTTPにすると ALBで終端
HTTPSにするとE2EでHTTPS通信
クロスゾーン負荷分散
ターゲットグループが複数のAZに存在するときすべてのターゲットに対して負荷分散が出来るようになる
XFF
付加、保持、削除が選択可能
スティッキーセッション
デフォルトラウンドロビンで振り分けられるトラフィックをアクセス元のユーザ(ブラウザ/セッション)ごとに固定する機能
※CLBとは異なる
Connection Draining
EC2インスタンスの登録解除やヘルスチェックの失敗時、新規リクエストを止め処理中リクエストの処理のみを行う
※CLBとはちょっと異なる
監視
- CloudWatch メトリクス
- アクセスログ(S3に保存)
- リクエストのトレース
- CloudTrailログ
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-monitoring.html
Network Load Balancer
概要
レイヤ4で動作するロードバランサ
TCP/UDP/SSL に対応
高可用性、高スループット、低レイテンシ
Source IP/Portがターゲットまで保持される
固定IPを持つ
非常に高いパフォーマンス、大規模な TLS のオフロード、証明書のデプロイの一元管理、UDP のサポート、およびアプリケーションの静的 IP アドレスが必要な場合は、Network Load Balancer を選択します。Network Load Balancer は接続レベルで動作し、非常に低いレイテンシーを維持しながら、1 秒あたり数百万のリクエストを確実に処理することができます。
AZごとの固定IP(EIP可能)
FW の穴あけなどに便利
背後にALBを置くことでALBでの固定IPも疑似的に実施可能
送信元IP保持
クライアントのIPとポートが保持される
→つまりターゲットはクライアントと直接やり取りしているように見える
※NLBはSGが設定できないのでターゲット側でSG管理が必要
PrivateLink
VPCEポイント経由でPrivateLinkを使いNLBにアクセスが可能
シンプルなアクセス制御で別VPCに対してサービスを提供できる
TLS 透過
注意:昔はできなかった(2019年以前)からターゲット側で行う必要があった
ターゲット
IP/インスタンス/ALB
Classic Load Balancer
概要
レイヤ4, 7で動作するロードバランサ
HTTP/HTTPS/TCP/UDP/SSL に対応
旧サービスのため基本的には推奨されない
※使用用途としては後方互換性
EC2-Classic ネットワークで既存のアプリケーションを実行している場合は、Classic Load Balancer を選択します。
使われる場所
EC2-Classic環境
アプリケーション側で生成されたクッキーでのスティッキーセッションをしたい場合
Gateway Load Balancer
概要
セキュリティアプライアンス用ロードバランサ
アプライアンスごとのHA管理を簡素化、VPC分離が出来るようになる
GENEVE をサポートするサードパーティーの仮想アプライアンスのフリートをデプロイおよび管理する必要がある場合は、Gateway Load Balancer を選択します。これらのアプライアンスを使用すると、セキュリティ、コンプライアンス、ポリシー制御を向上させることができます。
Transit Gateway Appliance mode
EC2 インスタンスが存在している AZ がどこにあるか」によって決まっています。つまり AZ-1a に存在している EC2 インスタンスが取る経路は AZ-1a に存在している GWLB とそのアプライアンスへとつながる( AZ-1c に存在している EC2 インスタンスが取る経路は AZ-1c に通信される
他AZに対して通信する際に非対称ルーティングが発生する
→通信がドロップされる
TGW Attachment に行きと同じAZを通るようにする設定
マルチアカウント
VPCEサービスを作成し、そこに対してアクセスするエンドポイントを作っていくことで別アカウントでも使用可能
※GWLB-GWLBE Serviceは同一VPC内で一意に紐づき
GENEVE
ポート6081
各 Load Balancer の比較
Discussion