ロードバランサー

機能

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

ELB

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

  • ALB(Application Load Balancer)
    • セキュリティグループ、WAFを設定可
  • NLB(Network Load Balancer)
    • セキュリティグループ、WAFを設定不可
  • GLB(Gateway Load Balancer)
  • CLB(Classic Load Balancer)

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 GroupTargetに追加される)

128810731-c71b560a-7a17-41d0-8710-cfd82c32b71d

Target_groups___EC2_Management_Console

128811030-335991cd-c58d-44f6-adcb-d1edfb4540ce

ルーティング

CloudFormation

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

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

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

NLBとの違い

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

  • NLBはロードバランサーのIPを固定できる
  • NLBはクライアントのIPをIPヘッダに保持したままアプリケーションにアクセスできる
  • NLBはAmazon Cognito、AWS WAFが使用できない
  • NLBはホストヘッダやURLのパスに基づくルーティングができない
  • NLBはセキュリティグループを設定できない
    • アクセス制御はNLBを配置するサブネットのNetwork ACLやターゲットインスタンスのセキュリティグループで実施する
  • NLBもスティッキーセッションはALB同様使用できる
  • NLBのアルゴリズムはフローハッシュアルゴリズム