1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ALBでのCookieによる振り分け設定

Posted at

#まず始めに

この記事はAWSのALBでのCookieによる振り分け設定をまとめたものです。
 
#ALB(Application Load Balancer)の振り分け
基本的な説明は省略します。(こちらを参照ください。)
まずAWSでのLB作成の際には主に以下の種類があります。
ALB(Application Load Balancer)
 ...HTTP,HTTPSのトラフィックをリクエストレベルで動作し、高度なルーティング設定が可能です。
NLB(Network Load Balancer)
 ...大規模なTLSオフロードやアプリケーションの性的IPが必要な場合に、
   接続レベルで動作し、低いレイテンシーで大量のリクエストを処理できます。
GLB(Gateway Load Balancer)
 ...ファイアウォール、侵入検知・防止システムなどの仮想アプライアンスをデプロイスケーリング管理できます。
・その他(Classic Load Balancerなど)
 ...EC2-Classic ネットワークで既存のアプリケーションを実行している場合に使用します。

今回はHTTPSでのリクエストを振り分けのためALBを使い、条件にCookieを用いる方法をご紹介します。

#HTTPSリクエスト振り分け
 基本的にAWSでALBを作成する際にリスナー(設定したプロトコルとポートでの接続リクエストをチェックするプロセス)も一緒に作成します。プロトコルはHTTPもしくはHTTPSを選択できますが、HTTPSの場合、証明書も必要です。
 リスナーのデフォルトアクション(追加した条件に当てはまらない場合)を設定するため、ターゲットグループ(1つ以上のルーティング先を含めたもの)も作成します。

 
#Cookieによる振り分け
 ターゲットグループ1にアプリケーションa,アプリケーションbを設定し、負荷分散を行っているとします。
アプリケーションaでリクエストを処理したあと、再度同じアプリケーションaにリクエストを送りたい際に、このままではアプリケーションbに送信される可能性があります。
そのため、リスナールール(リクエストごとにチェックする条件)にアプリケーションで付与したCookieをしようして、振り分けたいと思います。

まず、ターゲットグループ2(アプリケーションaのみリクエスト送信)とターゲットグループ3(アプリケーションbのみリクエスト送信)を作成します。
アプリケーションで付与するCookieがそれぞれapl=a,apl=bとします。
リスナールールにHTTPヘッダでCookieがapl=aのときにターゲットグループ2にルーティング、
HTTPヘッダでCookieがapl=bのときにターゲットグループ3にルーティングする2つのルールを作成します。
以上で振り分け設定は完了です。

検証方法としては下記のcurlコマンドでCookieを自由につけて検証が可能です。
curl -H 'Cookie:apl=a' [URL]

####追記
 上記で作成したリスナールールだとCookieが複数あった場合にうまく振り分けされない。
 (原因としては複数のCookieを一つのヘッダとして送るため。)
 そのため、ヘッダの条件部分を*apl=a*とすることで振り分け可能。

#最後に
 今回はALBでのCookieによる振り分け設定を簡単にまとめてみました。
 同じターゲットグループにリクエストをしたい場合に
 Cookieを用いずとも、ALBのスティッキーセッション機能をしようして行う方法もあります。
セッション維持の期間なども細かく設定できるため、またいずれまとめようと思います。
最後まで読んでいただきありがとうございました。

 

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?