ELB(Elastic Load Balancing)とは
3種類のロードバランサー(ALB, NLB, CLB)の総称です。
※ロードバランサーとは「アプリケーションをトラフィック負荷に応じて分散する仕組み」のことです。
EC2インスタンス, コンテナ, IPアドレス, Lambda関数などへのトラフィックを分散し、EC2インスタンスを登録すればすぐに利用することができます。
ALB(Application Load Balancer)
HTTP(S)のトラフィックの負荷を分散し、マイクロサービス(小規模のサービスを組み合わせる構成)やコンテナサービス(ECS)などに、処理を振り分けることができます。(レイヤ7で動作)
NLB(Network Load Balancer)
HTTP(S)以外は基本的にこちらを使います。
NLBでは数百万リクエストといった大規模なトラフィックでも、高速に負荷を分散させることが可能です。(レイヤ4で動作)
CLB(Classic Load Balancer)
旧タイプのロードバランサーです。
EC2-Classicネットワークで構築されたアプリケーションなど、後方互換性のために残されています。(レイヤ4, 7で動作)
ELBの特徴
セキュリティ
・複数AZに分散し高可用性を実現
→ 1つのAZで障害が発生しても、別のAZで処理を続けることができます。
※クロスゾーン負荷分散で、複数AZに対してリクエストを均等に分散することも可能です。
・通信をSSL化 (暗号化 / 復号化)
→ 配下インスタンスの証明書を一元管理することができます。
・セキュリティグループポリシーを適用
→ ELBのみでアクセス制御を行うことも可能です。
※通常WEBへアクセスする場合、サーバーやロードバランサーのIPアドレスを指定する必要がありますが、ELBではエンドポイント(DNS名)を指定してアクセスします。
・モニタリング
→ CloudWatchによる監視, アクセスログをS3で保存, CloudTrailによるAPI監視..etc。
・外部 / 内部 ELB
→ [外部] ELBのみをパブリックサブネットに配置すればよく、EC2インスタンスはプライベートで良いです。
→ [内部] ELBとEC2インスタンスをプライベートサブネットのみで利用できます。
柔軟性
・自動スケーリング機能
→ CPUなどがしきい値を越えた場合、自動でEC2インスタンスを増やすことができます。
※ELB自体は内部で冗長化されています。
※急激なアクセス増加には対応が間に合わない可能性もあるため、CloudFrontでキャッシュを利用するのも手です。
・ヘルスチェック
→ 異常なインスタンスへの振り分けを停止し、正常なもののみに振り分けます。
※復旧すると、停止したインスタンスへの振り分けも再開されます。
・ユーザーのセッションを管理
→ スティッキーセッション機能を用いると、リクエストを特定インスタンスに振り分けることができます。
・不要インスタンスを安全に解除
→ Connection Drainingを有効にすることで、実行中の処理が完了するまで待機させることが可能です。