ロードバランサー

機能

  • 負荷分散
  • 死活監視による 可用性 向上

ELB

AWS は ELB(Elastic Load Balancing)として以下のサービスを提供しています。

1つのターゲットグループを複数のロードバランサーに設定することはできない(ターゲットグループは常に1つのロードバランサーにのみ関連付けられる)。ただし1つのロードバランサーは複数のターゲットグループを持つことができる(パスベース/ホストベースルーティングなど)ため、正確には「ターゲットグループ → ロードバランサーは多対1」の関係。

ALB

ALBのおもな機能は以下のとおりです。

  • OSI参照モデル第7層で動作(おもにHTTP/HTTPSで使用されるがgRPCなども使用できる)
  • AWS WAF、Amazon Cognitoとの連携
  • ホストヘッダやURLパスなどの条件にもとづくルーティング
  • SSLとの連携

使用可能な条件

  • ホストヘッダー
  • パスパターン
  • HTTPヘッダー
  • HTTPメソッド
  • クエリ文字列
  • 送信元IP

ターゲットグループ

  • インスタンス
  • IPアドレス
  • Lambda関数

※ ALBのターゲットグループにALBは指定できない(NLBはALBを指定できる)。

アルゴリズム

  • ラウンドロビン

スティッキーセッション

  • ALBが生成した2つのCookie(AWSALB、AWSALBCORS)を使用
  • アプリケーションが生成したCookieを使用

Application Load Balancer のスティッキーセッション

アプリケーションのプライベート化

ALBを使用することによってアプリケーションをプライベートサブネットに配置することができます。
プライベートサブネットに配置することによってセキュリティが高まります。

ALB経由でプリベートサブネットにアクセス

Auto Scalling

EC2

  • Auto Scalling機能はターゲットグループと紐付けたAuto Scallingグループが使用される

ECS

ECSのサービスを作成する際にサービス定義でターゲットグループを指定することで、動的ポートマッピングによりECSは動的に変化するコンテナのポートとインスタンスを自動的にターゲットグループに登録、解除してくれます。

AWS認定 高度なネットワーキング - 専門知識位 p157

X-Forwarded-For

ALBではクライアントIPをアプリケーションにHTTPヘッダのX-Forwarded-Forを使って渡します。

HTTP ヘッダーと Application Load Balancer

ACM ALBにACM設定してECSに登録

Application Load Balancer を作成し、Amazon ECS タスクを自動的に登録する方法を教えてください。から引用

  1. ACMを設定
  2. Target Groupを作成する
    1. TypeはIP Address
    2. ECS Serviceを起動するVPCを選択する
  3. ALBを作成
    1. ACMを関連付ける
    2. Target Groupを関連付ける
    3. Security Groupを設定する
  4. ECS Serviceを作成する 1.ALBを指定する
    1. Target Groupを指定する(ECS Service起動時にPrivate IP adressで指定したTarget GroupのTargetに追加される)

ロードバランサー

ロードバランサー2

ロードバランサー3

ルーティング

CloudFormation

  • ロードバランサー:AWS::ElasticLoadBalancingV2::LoadBalancer
  • リスナー:AWS::AWS::ElasticLoadBalancingV2::Listener
  • ターゲットグループ:AWS::ElasticLoadBalancingV2::TargetGroup

ロードバランサーのタイプ

  • ALB:AWS::ElasticLoadBalancingV2::LoadBalancer.Properties.Type.application

NLBとの違い

NLBとの違いは以下のとおり。

  • NLBはロードバランサーのIPを固定できる
  • NLBはクライアントのIPをIPヘッダに保持したままアプリケーションにアクセスできる
  • NLBはAmazon Cognito、AWS WAFが使用できない
  • NLBはホストヘッダやURLのパスに基づくルーティングができない
  • NLBは2023年8月10日のアップデート以降、セキュリティグループを設定できる(それ以前は不可だった)
  • NLBもスティッキーセッションはALB同様使用できる
  • NLBのアルゴリズムはフローハッシュアルゴリズム