WebLogicクラスタは、セッション情報をサーバ間でコピーしあう「イン・メモリ・レプリケーション」という特徴的な機能を持っている。ただし、レプリケーションされるのは、クラスタを構成しているサーバ中の2台のサーバ(プライマリとセカンダリと呼ばれる)のみである。また、どのサーバがプライマリ/セカンダリであるかという情報は、セッションIDの中に埋め込まれてクライアント(Webブラウザ)に渡される。 このため、WebLogicクラスタでは、クライアントから送付されたセッションIDの内容を見て、まずはプライマリに、そしてプライマリに接続できなかった場合はセカンダリに、リクエストを振り分けるといった動作を行っている。この処理を行うのがWebLogicプラグインモジュールであり、Webサーバ上で動作する。これがWebLogicクラスタの仕組みである*2。 *2:正確には、WebLogicクラスタの機能は、Servlet/JSPのクラスタとEJBクラスタの大きく2つの機能があるが、ここではServlet/JSPのクラスタのみを取り上げる。すなわち、次の図のように、Webブラウザがサーバに初めてアクセスするとき(リクエスト中にセッションIDが含まれない場合)は、プライマリ/セカンダリが動的に決定され、その情報がセッションIDに含められてWebブラウザに返されることになる。
一方、Webブラウザが2回目以降アクセスした場合は、リクエスト中にセッションIDが存在し、WebLogicプラグインがセッションIDの内容を識別して、プライマリにリクエストを振り分ける。
もし、プライマリがダウンしている場合は、WebLogicプラグインはリクエストをセカンダリに振り分けるとともに、ほかにもクラスタを構成しているサーバがある場合は、新たにプライマリ/セカンダリのペアを決定し直す。
|