ロードバランサーの背後に複数のFessノードを置く場合、標準構成ではログインした利用者を同じノードに送り続ける必要があります。Fess 15.10の開発版では、HTTPセッションを共通のOpenSearchに保存し、別のノードでもログイン状態を読み出せます。
各Fessノードの起動環境に設定する
各ノードを同じFessビルドと同じプラグイン構成に揃え、共通のOpenSearchを参照させます。サービスの起動環境、またはDockerのFessコンテナの環境変数に次の値を追加し、各ノードを起動し直します。
FESS_SESSION_STORE=opensearch
未設定、または memory を指定した場合は、従来どおり各ノードのTomcatメモリーに保存します。切り替え時は新しくログインし、同じブラウザーのCookieで別ノードへアクセスしてログインが維持されることと、一方でログアウトすると他方でもログアウトすることを確認します。
認証方式によって共有できる範囲が異なる
ローカル認証とLDAPは本体で共有できます。SAML、OpenID Connect、Entra IDはそれぞれ対応プラグインが必要です。構成の異なるノードは保存されたセッションを読み出せず、ログアウトして見えます。対応するOIDCプラグインでは、セッションの保存先にかかわらず、ログイン開始からコールバックまでの上限が10分になります。Entra IDは権限解決が終わったセッションを共有します。トークンキャッシュはログイン元のノードに残るため、別ノードでのサイレント更新には制限があります。SAMLやEntra IDでは、使用する実際のIdPと複数ノードの構成でログインとログアウトを検証します。
保存先は fess_config.session です。パスワードやSSOトークンは保存対象から外れ、管理画面のバックアップにもこのインデックスは含まれません。OpenSearchへ接続できない間に作られたセッションはローカルに残ります。同時リクエストが同じセッションを書き換えた場合は最後の書き込みが残ります。チャットセッション、管理画面のページ送り状態、WARを単独のTomcatへ配備する構成は共有の対象外です。