Project

General

Profile

ELBの負荷分散環境でログインセッションを維持する

ログインでセッション情報が必要になるWebアプリケーションをELB配下に複数ノード
置いて冗長化させる場合、次のいずれかの条件で動作させる必要がある。

  1. セッション情報をノード間共有して、どのノードにアクセスしても同じセッションを利用する
  2. セッションをELBで記憶し、そのセッションでのアクセスは最初に振り分けられたノードに振り分けを固定する

前者は負荷分散状態を最大限活用できるが、アプリケーションがそのような方法に対応している場合のみの実現となる。
後者は一定時間振り分けが固定化されるため、若干振り分けが偏る可能性があるがアプリケーションを問わず対応が可能。

ここでは後者の対策を説明。

設定方法

  • AWSのEC2画面を開く
  • ターゲットグループ画面を開く
  • 『説明』タブの一番下の『属性』の編集を行う
  • 『維持設定』の時間を変更する
    時間の目安については、アプリケーションのセッション時間をあわせて次のパターンが考えられる
    • ユーザ処理を優先して再ログイン処理を走らせない場合、アプリケーションのセッション寿命より長くする
      デメリット:ノード振り分けが偏りやすくなる
    • ノード振り分けの精度を優先して再ログインが走っても問題ない場合、セッション寿命より短くする。
      デメリット:維持設定時間を超えて振り分けが変わった場合、再ログインが発生する(同じノードならそのままのセッションを維持する)