19523¶
titile: cloud run + loadbalancerの環境で、頻繁にログアウトされてしまう。 [Case#19523]
2024-08-22 Incoming¶
ログイン認証が必要なアプリケーションをcloud runで運営しています。 セッションアフィニティの設定は行なっていますが、loadbalancerの環境だと、頻繁にCookieが消えてしまい、ログアウトされてしまいます。 GAESAの値と有効期限も更新されているようです。 loadbalancerの場合は、別途設定など必要なのでしょうか。
2024-08-23 Sent¶
ibis studio株式会社 吉元 様
お世話になっております、株式会社G-genサポートの高井です。 ご案内にお時間いただいており恐れ入ります。
お問い合わせいただきありがとうございます。ご質問いただいた内容について下記にご案内いたします。
セッションアフィニティの設定は行なっていますが、loadbalancerの環境だと、頻繁にCookieが消えてしまい、ログアウトされてしまいます。
まず本件につきまして「対象の Cloud Run サービスに対してはセッション アフィニティを設定しているが、ロードバランサーを構成している場合は適用できておらず、適用する方法や回避策は無いか」という趣旨のご質問と理解しましたが、認識に相違ございませんでしょうか。
上記認識に相違がない場合、ロードバランサを含む・含まないに関わらず Cloud Run 側にセッション アフィニティを設定する方法で問題ございません。
なお、お客様の Cloud Run アプリケーション側のセッション管理方法をステートレスな状態になるよう見直していただけますと解決いただける想定となりますのでご確認いただけますでしょうか。
ご案内の背景といたしまして、セッション アフィニティでは設定いただいても同じインスタンスにセッションを流そうとする努力はしますが、同じインスタンスが受け付けることを保証するものではございません。 自動スケーリングなどでインスタンスが終了した場合はセッション アフィニティも破棄されるものでございます。 こちらを解決するためにはアプリケーション側のセッション管理をステートフルなものではなく、ステートレスな実装にしていただく必要がございます。
参考資料として Google Cloud 公式によるコンテナ アプリケーションのセッション アフィニティに関する解説記事[1]も添付いたしますので、併せて参照くださいませ。
[1] Cloud Run のセッション アフィニティで応答性を向上 (Google Cloud 公式ブログ) https://cloud.google.com/blog/ja/topics/developers-practitioners/improve-responsiveness-session-affinity-cloud-run/?hl=ja
ご質問いただいております内容への回答は以上となりますが、認識の相違ある場合や不明点などありましたらお知らせくださいませ。 お客様の問題を直接解決することができず申し訳ございませんが、ご確認のほどよろしくお願いいたします。
2024-08-29 Incoming¶
高井様
お世話になっております。 ご連絡ありがとうございます。 こちらの件で確認なのですが、お送りいただいたブログ記事に記載のこちらは、
生成されたセッション アフィニティ Cookie をレスポンス ヘッダーとして追加します。
cloud runで生成されている、GAESAという名前のCookieで相違ないでしょうか。 そのGAESAは、保証はしないが、オートスケールや、デプロイなどが無い限り、 有効期限の30日まで存続し続けるという理解で良いでしょうか。
こちらを解決するためにはアプリケーション側のセッション管理をステートフルなものではなく、ステートレスな実装にしていただく必要がございます。
こちらの実装の為に、GAESAという名前のCookieを使用するという認識でよろしいでしょうか。
お手数ですがご確認のほどお願い致します。
2024-08-30 Sent¶
ibis studio株式会社 吉元 様
お世話になっております、株式会社G-genサポートの高井です。 お問い合わせいただきありがとうございます。ご案内にお時間いただいており恐れ入ります。
追加でご質問いただいた内容について下記にご案内いたします。
cloud runで生成されている、GAESAという名前のCookieで相違ないでしょうか。 そのGAESAは、保証はしないが、オートスケールや、デプロイなどが無い限り、 有効期限の30日まで存続し続けるという理解で良いでしょうか。
ご認識あっております。
こちらの実装の為に、GAESAという名前のCookieを使用するという認識でよろしいでしょうか。
こちらは別の名前で Cookie を発行・管理いただく必要がございます。
背景といたしまして、Cookie GAESA はオートスケールなどでインスタンスが破棄された場合に再発行される仕組みとなっております。
ブラウザ上には当該の Cookie が存在し続けますが、紐付いたインスタンスが有効期間の終了まで起動を維持することは保証できかねるものでございます。
よって当該の Cookie でセッション管理を実施された場合、インスタンスが破棄されるタイミングで同時にセッションが切れてしまい、現状のお客様環境と同じ状態となります。
これを回避するために、別の名前で Cookie を発行・管理いただく必要がございます。
ご質問いただいております内容への回答は以上となりますが、認識の相違ある場合や不明点などありましたらお知らせくださいませ。 引き続きどうぞよろしくお願いいたします。