LoginSignup
2
1

More than 1 year has passed since last update.

IBM Cloud: VPC Load BalancerのCookieベースのセッションパーシスタンス機能

Last updated at Posted at 2021-06-18

1. はじめに

IBM CloudのVPC Load Balancerでは長らくSource IPベースのセッションパーシスタンス機能しか提供されていませんでしたが、新規にCookieベースのセッションパーシスタンス機能も提供されるようになったので試してみました。
https://cloud.ibm.com/docs/vpc?topic=vpc-release-notes#june-17-2021&locale=en

Cookieベースのセッションパーシスタンス機能には2つあり、

  • HTTP cookie persistence: VPC Load BalancerがIBMVPCALBというprefixを付けてCookie情報を挿入する方法
  • APP cookie(Application cookie) persistence: VPC Load Balancerが設定するIBMVPCALBに加えて、利用者がWebサーバーなどで発行するCookie情報を元にセッションパーシスタンスを実現する方法。

の2つ存在します。以下ではその2つのセッションパーシスタンス機能を試してみました。

2. HTTP cookie persistence

Back-end poolのプール設定にて、Session stickinessとしてHTTP cookieを選択します。
image.png

HTTP利用時
# curl -I http://<VLB-LBのFQDN>
HTTP/1.1 200 OK
Date: Fri, 18 Jun 2021 03:04:48 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Last-Modified: Fri, 18 Jun 2021 02:09:34 GMT
ETag: "11-5c500d09e56d8"
Accept-Ranges: bytes
Content-Length: 17
Content-Type: text/html; charset=UTF-8
Set-Cookie: IBMVPCALB_r022-8aaa4e0f-ad99-4d20-b17d-5aa75cd10da7=554e919fd77f334266c7b48f03cec0165a59a8fa; path=/
Cache-control: private

HTTPSの際には、Secure; SameSite=Noneが追加属性として設定されます。

HTTPS利用時。
# curl -I  https://<VLB-LBのFQDN>
Date: Fri, 18 Jun 2021 03:05:00 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Last-Modified: Fri, 18 Jun 2021 02:09:34 GMT
ETag: "11-5c500d09e56d8"
Accept-Ranges: bytes
Content-Length: 17
Content-Type: text/html; charset=UTF-8
Set-Cookie: IBMVPCALB_r022-901d2e7d-531d-49c3-8b5c-f2acfa2ec7f3=c3fa5c11aa1931948a4530cb2b94d0aba050fcc6; path=/; Secure; SameSite=None
Cache-control: private
連続アクセス(Cookieのセットなし。セッションパーシスタンスが効いていない。)
# while true; do curl https://<VLB-LBのFQDN>; sleep 1; done
Server2
Server1
Server2
Server1
Server2
Server2
Server1
Server1
Server2
Server2
Server1
Server1
Server2
連続アクセス(Cookieのセットあり。セッションパーシスタンスが効いている)
# while true; do curl -H "Cookie: IBMVPCALB_r022-901d2e7d-531d-49c3-8b5c-f2acfa2ec7f3=c3fa5c11aa1931948a4530cb2b94d0aba050fcc6;"  https://<VLB-LBのFQDN> ; sleep 1; done
Server2
Server2
Server2
Server2
Server2
Server2
Server2
Server2
Server2
Server2

3. Application cookie persistence

IBM Cloud docsによると、Application cookie persistenceの特徴は以下の通り。

  • Back Endサーバー(Webサーバー)側でCookieを発行する必要があり、そのCookie名をVPC Load Balancerに設定することで利用可能となる(今回はCookie名としてTEST1を設定してみました)。
  • VPC Load Balancerは、依然としてIBMVPCALBというprefixを持つCookieを発行する。よって、ClientはVPC Load Balancerから発行されたIBMVPCALBというprefixを持つCookieと、Back Endサーバー(Webサーバー)で発行されたCookieの2つを受け取る。
  • Clientはこの2つのCookieをVPC LoadBalancerに送ることで、セッションパーシスタンスが有効になる。逆に、どちらか一方を送付しただけではセッションパーシスタンスは機能しない
  • IBMVPCALBに対するCookieは利用者は制御できないが、Back Endサーバー(Webサーバー)で発行されたCookieについては名前や有効期間を制御できるので、いつまでセッションパーシスタンスを持続させるかなどを操作可能となる。

Back-end poolのプール設定にて、Session stickinessとしてAPP cookieを選択します。
image.png

バックエンドサーバーでは実はCookieを発行していないのだが、それでもVPCLoadBalancerはIBMVPCALBというprefixを持つCookieをクライアントに送ってくる。
# curl -I https://<VLB-LBのFQDN>
HTTP/1.1 200 OK
Date: Fri, 18 Jun 2021 05:46:44 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Last-Modified: Fri, 18 Jun 2021 05:29:53 GMT
ETag: "8-5c5039d058e10"
Accept-Ranges: bytes
Content-Length: 8
Content-Type: text/html; charset=UTF-8
Set-Cookie: IBMVPCALB_r022-901d2e7d-531d-49c3-8b5c-f2acfa2ec7f3=5b02d1a9bbeec0e313f1e2189550a526d6d9e7f3; path=/; Secure; SameSite=None
Cache-control: private
連続アクセス(IBMVPCALBに対するCookieは設定されているが、TEST1に対しては設定がないため、セッションパーシスタンスが効かない)
# while true; do curl -k -H "Cookie: IBMVPCALB_r022-901d2e7d-531d-49c3-8b5c-f2acfa2ec7f3=5b02d1a9bbeec0e313f1e2189550a526d6d9e7f3;"  https://<VLB-LBのFQDN>; sleep 1; done
Server2
Server1
Server1
Server2
Server2
Server1
Server2
Server1
Server2
Server1
Server2
Server1
Server1
連続アクセス(IBMVPCALBおよびTEST1に対するCookieが設定されているため、セッションパーシスタンスが有効)
# while true; do curl -k -H "Cookie: IBMVPCALB_r022-901d2e7d-531d-49c3-8b5c-f2acfa2ec7f3=5b02d1a9bbeec0e313f1e2189550a526d6d9e7f3; TEST1=hogemoge"  https://<VLB-LBのFQDN>; sleep 1; done
Server1
Server1
Server1
Server1
Server1
Server1
Server1
Server1
Server1
Server1
2
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
2
1