Tomcatのセッションレプリケーション
現在(2005年10月)のバージョンのTomcatで使用されている"all-to-all"のセッションレプリケーションでは、クラスタグループ内にあるすべてのTomcatが同じセッション情報を共有します。"all-to-all"のセッションレプリケーションの方式はわかりやすい形ではありますが、クラスタグループ内のサーバの台数が多いとセッション間で情報のやり取りが多くなるため、ネットワークのトラフィックが増大してしまいます。

図1:all-to-all
そのため、少ない台数のTomcatで同じセッション情報を共有する"primary-secondary"のセッションレプリケーションが望まれ ています。"primary-secondary"であれば、セッションレプリケーションされる情報は「プライマリサーバ」と「セカンダリサーバ」の2台の間でのみやり取りされるため、ネットワークにかかる負荷はそれほど大きくなりません(図2)。
また"primary-secondary"ではセッションを保持している1台がダウンした場合、ほかの1台を「プライマリサーバ」または「セカンダリサーバ」に変化させ、セッションレプリケーションが引き継がれます。

図2:primary-secondary
mod_jkの"Domain Clustering"
少し前までApacheとTomcatの間で使われることの多かった通信モジュールはmod_jk2でしたが、結局mod_jkに統合される形で2004年11月に開発が終了しました。
mod_jkはJK Version 1.2.8より「domain」というプロパティが追加され、"Domain Clustering"が利用可能になりました。この"Domain Clustering"はドメインというくくりでいくつかのTomcatをひとまとめにしたグループを作り、セッションレプリケーションはそのドメイン内 のみで行い、ネットワークにかかる負荷を軽減することができます。
ただし、ドメインを超えてセッション情報が共有されていくわけではないので、ドメイン内のすべてのTomcatがダウンしてしまい、ほかのドメインに処理が移った場合には、セッション情報はクリアされてしまいます。
mod_jk2の場合は「group」という単位でクラスタグループを分けることはできたものの、同じアプリケーション(URL)に対してグループをまたがった形ではセッションレプリケーションができなかったことを考えると大きな進歩であるといえます。
