Lucee を実行している 2 つのマルチホームで Web バランスの取れた Web サーバーがあり、セッションを EHCache インスタンス間で複製する際に問題が発生しています。自動検出が機能するかどうかさえわかりません
これが私のセットアップと設定です:
OSセットアップ
- アドレス 224.0.0.0 の eth0 上の両方のサーバーのマルチキャスト設定 (224.0.0.1 に ping を実行すると、両方の Web サーバー IP から応答が返されるため、これが機能することがわかっています)
- /etc/sysctl.conf:
net.ipv4.icmp_echo_ignore_broadcasts = 0およびnet.ipv4.ip_forward =1
インスタンスごとのLucee SessionCacheオブジェクトのセットアップ
- 自動ピア検出
- マルチキャスト ユーザー グループ アドレス:
224.0.0.1 - マルチキャスト ユーザー グループ ポート:
4446 ホスト:
xx.xx.xx.xx(これは、私が使用している各サーバーの eth0 インターフェイスの IP アドレスであり、マルチキャスト ユーザー グループに ping を実行したときに応答することを確認しました)同期はすべてチェックされています
他のすべての設定 (RMI、リスナー) はデフォルトのままです (場合によっては空白)。
この sessionCache オブジェクトを sessionstorage として使用するアプリケーションを実行してログインしようとすると、1 つのインスタンスにのみログインし、次のインスタンスにリダイレクト (ロード バランサー) されて、セッションが複製されないため、再度ログインする必要があります。
更新 #1
分散クラスタでセッション レプリケーションを有効にするに は、疑似コンストラクタthis.sessionCluster = trueでJ2EEセッション タイプ ( this.sessionType = "j2ee")が必要です。Application.cfc
アップデート #2
セッション ストレージの分散キャッシュは、同期レプリケーションでも競合状態になりやすいようです。Asynchronous replication特にロード バランサーがラウンド ロビンを実行する場合は、絶対にお勧めできません。
これにより、ロード バランサーが表示されますRound Robin。Lucee はインスタンスをジャンプするたびにまったく新しいセッションを作成するため、同じセッション ID にアクセスしていないため、レプリケーションは役に立たない
アップデート #3
プロパティを介してセッションをデータベースに保存するsessionStorageと、すべての問題が軽減されるようです。ロード バランサーでラウンド ロビンを実行することもできます。セットアップの手順については、こちらを参照してください。
CFML代わりにセッションが推奨されますJ2EE