その問題のTomcatまたはjbossはセッションデータをどこに保存しますか? そして、それらをメモリ内に保存する場合、クラスター化された環境でセッション管理をどのように行うのでしょうか? つまり、セッション コンテキストを失わずにフェイルオーバーを処理する方法です。あなたの助けに感謝。
ありがとう、ヘマント
その問題のTomcatまたはjbossはセッションデータをどこに保存しますか? そして、それらをメモリ内に保存する場合、クラスター化された環境でセッション管理をどのように行うのでしょうか? つまり、セッション コンテキストを失わずにフェイルオーバーを処理する方法です。あなたの助けに感謝。
ありがとう、ヘマント
デフォルトでは、Tomcat はセッション データをメモリに保存します。
クラスタリングを使用する場合、DeltaManager と BackupManager の 2 つのアプローチがあります。
DeltaManager を使用すると、1 つのノードのセッションに対する変更が、クラスター内の他のすべてのノードに複製されます。1 つのノードが停止した場合、クライアントがフェールオーバーするノードで完全なセッションを利用できます。
BackupManager の場合、状況はもう少し複雑になります。セッションごとに、1 つのノードがプライマリ ノード (クライアントがアクセスするノード)、1 つのノードがバックアップ ノード (セッションの完全なコピーが保持されるノード)、他のすべてのノードがプロキシ セッション (プライマリ ノードとバックアップ ノードの場所のみを認識) です。セッションは - データが含まれていません)。ノードが停止すると、クライアントは別のノードをランダムに選択します。バックアップ ノードを選択すると、そのノードがプライマリになり、新しいバックアップが選択され、すべてのプロキシが更新されます。プロキシ ノードを選択すると、そのノードがプライマリになり、バックアップからデータがコピーされ、すべてのプロキシが更新されます。これが機能するには、スティッキー セッションを使用する必要があります。
BackupManager について考えるとき、60 のユーザー セッションをサポートするクラスター内の 4 つのノード (A、B、C、および D) を考慮すると役立つことがよくあります。セッションはラウンドロビン方式でノードに分散されるため、次の状態で終了する必要があります。
ノード A には 15 個のプライマリ セッション、ノード B 用にバックアップされた 5 個のセッション、ノード C 用に 5 個のバックアップ、およびノード D 用に 5 個のバックアップがあります。また、残りのセッション用に 30 個のプロキシ セッションがあり、どのノードがプライマリおよびバックアップであるかを詳述します。
ノード B には 15 のプライマリ セッション、ノード A の 5 つのバックアップ セッション、ノード C の 5 つのバックアップ、およびノード D の 5 つのバックアップがあります。また、どのノードがプライマリおよびバックアップであるかを詳述する残りのセッションの 30 のプロキシ セッションがあります。
ノード C には、15 個のプライマリ セッション、ノード A 用にバックアップされた 5 個のセッション、ノード B 用に 5 個のバックアップ、およびノード D 用に 5 個のバックアップがあります。また、残りのセッション用に 30 個のプロキシ セッションがあり、どのノードがプライマリおよびバックアップであるかを詳述します。
ノード D には 15 のプライマリ セッション、ノード A の 5 つのバックアップ セッション、ノード B の 5 つのバックアップ、およびノード C の 5 つのバックアップがあります。また、どのノードがプライマリおよびバックアップであるかを詳述する残りのセッションの 30 のプロキシ セッションがあります。
ノード間でデータをレプリケートする方法とタイミングを制御するための多くの構成オプションもあります。詳細については、Tomcat のドキュメントを参照してください。