【セッションいじ】

セッション維持 とは?

最終更新:
💡 続きのリクエストを、同じ担当サーバーへ

ロードバランサーが、同じクライアントのリクエストを一定の条件や期間で同じサーバーへ振り分ける仕組みです。サーバー内に保存したログイン状態やカートを利用する設計などで使われます。

📌 このページのポイント
続きのリクエストを、同じ担当へクライアントCookie付きのリクエストロードバランサー行き先を確認サーバーA状態ありサーバーB別の行き先繰り返しアクセス期限切れ・障害などでは行き先が変わる状態を自動で複製する機能ではない
Cookie方式の例です。維持する期間や、障害・構成変更時の動作は製品と設定で確認します。
ひよこ ひよこ
どうして同じサーバーへ送るの?
ペンギン先生 ペンギン先生
たとえばカートの状態をサーバーAだけに保存していると、次の操作がBへ届いても、Bはその状態を知らないよね。続きのリクエストをAへ送ることで、Aにある状態を使える。状態の保存先を共有しているなら、別の設計も選べるよ。
ひよこ ひよこ
ログインしている人を、見分けるの?
ペンギン先生 ペンギン先生
アプリのログイン本人確認と同じ機能ではないよ。Cookieなどを手掛かりに、同じ振り分け先を選ぶんだ。AWSのApplication Load BalancerではCookieを使う方式がある。認証用のCookieとロードバランサーのCookieが別の場合もあるよ。
ひよこ ひよこ
IPアドレスを使う方式もある?
ペンギン先生 ペンギン先生
あるよ。たとえばAWSのNetwork Load Balancerでは送信元IPを使う。ただし同じNATの後ろにいる人たちは、外から同じIPに見えることがある。その人たちの通信が一つのサーバーに偏りやすく、IPが変われば行き先も変わる可能性があるんだ。
ひよこ ひよこ
担当のサーバーが止まったら?
ペンギン先生 ペンギン先生
別のサーバーへ振り分けられることがあるよ。期限切れや構成変更でも行き先は変わりうる。セッション維持はデータを自動で複製する機能ではないので、元のサーバーだけにあった状態を次のサーバーが読めるとは限らないんだ。
ひよこ ひよこ
どう設計すればよいの?
ペンギン先生 ペンギン先生
状態をどこに保存し、障害時にどう引き継ぐかを考えよう。共有のセッション保存先を使う方法などがある。トークンで認証する設計でも、カートなど別の状態がサーバーに残る場合はあるよ。新しいアプリなら必ず不要、古いアプリなら必須、という区別ではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「セッション維持」って出てきたら「続きのリクエストを、同じサーバーへ振り分ける仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Session Persistence」 = セッションに対応する振り分け先の維持
💬 ここではロードバランサーの機能を指すよ。Persistenceという名前でも、アプリのデータが永続保存されるという意味ではないんだ。

参考資料

← 用語集にもどる