![Apache mod_jkセッションデータを複製する方法](https://rvso.com/image/503724/Apache%20mod_jk%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E8%A4%87%E8%A3%BD%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
フェイルオーバー設定のために、mod_jk スティッキーセッション情報を別の Apache に複製することは可能ですか?
質問の背後にある考え方は、いくつかの Tomcat の前にスティッキー セッションを持つ 2 つの Apache を設定することです。1 つの Apache に障害が発生した場合、もう 1 つの Apache が mod_jk セッション情報を引き継ぐため、どのリクエストをどの Tomcat に処理するかがわかります。
代替案としては、Tomcat レベルでのセッション レプリケーションとスティッキー セッションを使用しないことが挙げられますが、現時点ではこれは不可能です。
答え1
バックエンド サーバー (tomcat) がクラスター化されている場合は、セッションも複製する必要があります。http 障害が発生した場合、1 つの http ノードへの接続は別のノードに送られます。jsessionid パラメーターは、http / mod_jk に、どのノードにルーティングするかを知るのに十分な情報を提供する必要があります (例: jsessionid=lkj234lkj2ljk234lj.jvmRoute1 は、このセッションが jvmRoute1 という名前のワーカーに必要であることを mod_jk に伝えます)。指定されたワーカーが使用できない場合、mod_jk は次のワーカーにルーティングし、キャッシュからセッションを取得します。
つまり、クライアント側の Cookie または jsessionid を含む URL にルーティング情報が含まれているため、httpd サーバー間でのレプリケーションは必要ありません。
答え2
mod_jk のセッション永続性はステートレスに動作するため、Apache ノード間で何かを複製する必要はありません。
Tomcat の server.xml で jvmRoute を設定する必要があり、これは mod_jk のバランサーによって使用される jk ワーカーの名前と一致する必要があります。