インフラ

【ELB/ALB/NLB】スティッキーセッションで認証問題を解決!【ロードバランサ】

elb-sticky-session

こんばんは!光です。

大手グローバル企業でWebエンジニアをやっています。

Webエンジニアを目指してプログラミングを勉強している初心者の方向けに情報を発信しています。

経歴や実績はこちら

システム開発のお仕事の依頼もお待ちしております。

お問い合わせページTwitterのDMからお気軽にお問い合わせください!

今回はこのような質問をいただきました。

ロードバランサを使うとうまく認証ができない…
どうしたらいいんだろう…

構成によってはロードバランサを経由するとうまく認証できないときがあるんですよね。

そこで今回はこちらの質問について解説していきます!

環境
  • AWS
    • EC2
    • ELB
      • ALB
      • NLB

原因:認証前と認証後で別のサーバにアクセスしている

ロードバランサは任意のサーバにリクエストを受け流します。

そのため、本来であれば

  • サーバAから認証→サーバAでコールバック実行
  • サーバBから認証→サーバBでコールバック実行

ということがしたいのに

  • サーバAから認証→サーバBでコールバック実行
  • サーバBから認証→サーバAでコールバック実行

というパターンが発生してしまいます。

そこで、ユーザごとにどちらのサーバで認証を行うか設定する必要があります。

解決:スティッキーセッションを利用する

こちらの問題はスティッキーセッションを利用することで解決できます。

スティッキーセッションとは、ユーザーごとにサーバへの割り振り行う機能です。

セッションの有効期限も設定できます。

スティッキーセッションは簡単に設定できます。

維持設定を有効化する

こちらの設定はターゲットグループ(EC2 > ロードバランシング > ターゲットグループ)に対して行います。

設定するターゲットグループを選択すると、「説明」の下のほうに属性という項目があります。

ターゲットグループの説明

そして、「属性の編集」から維持設定を有効化することで、スティッキーセッションが有効になります。

属性の編集

たったこれだけで認証がうまくいくようになります!

あとがき

認証のように、続けて同じサーバーにアクセスする必要がある場合には便利です。

自力でやろうとするとかなり大変ですよね…スティッキーセッションありがたい!

私も初めてのときは結構困ったのですが、どうやってスティッキーセッションの存在を知ったんだろう…?

どうやって調べたのか覚えてない…調べ方も難しいですね。

どうやって調べたらいいのかわからないからどういうキーワード設定するべきなのかわからないけど、同じ問題に悩んでる人に伝わるといいな!