戻る


Webシステムでは24時間サービスは当たり前で、なかなか停止することが許されない。そのため、サービスを停止することなくアプリケーションの入れ替えを行いたいといった要求がしばしば出てくる。そんなときに役に立つのがクラスタである。一般にクラスタは、負荷分散と可用性向上を目的として導入されることが多いが、サービスを停止することなくアプリケーションの入れ替えを行うといった場合にも有効である。

 しかし、サービス中にアプリケーションを入れ替えて大丈夫なのだろうか、セッション情報は正しく引き継がれるのだろうか、といった不安が出てくるかもしれない。今回は、WebLogicクラスタ*1を利用してアプリケーションの入れ替えを行う手順について解説したい。

*1:ここではWebLogic Server 5.1を対象としている。

WebLogicクラスタの仕組み

WebLogicクラスタは、セッション情報をサーバ間でコピーしあう「イン・メモリ・レプリケーション」という特徴的な機能を持っている。ただし、レプリケーションされるのは、クラスタを構成しているサーバ中の2台のサーバ(プライマリとセカンダリと呼ばれる)のみである。また、どのサーバがプライマリ/セカンダリであるかという情報は、セッションIDの中に埋め込まれてクライアント(Webブラウザ)に渡される。

 このため、WebLogicクラスタでは、クライアントから送付されたセッションIDの内容を見て、まずはプライマリに、そしてプライマリに接続できなかった場合はセカンダリに、リクエストを振り分けるといった動作を行っている。この処理を行うのがWebLogicプラグインモジュールであり、Webサーバ上で動作する。これがWebLogicクラスタの仕組みである*2

*2:正確には、WebLogicクラスタの機能は、Servlet/JSPのクラスタとEJBクラスタの大きく2つの機能があるが、ここではServlet/JSPのクラスタのみを取り上げる。

 すなわち、次の図のように、Webブラウザがサーバに初めてアクセスするとき(リクエスト中にセッションIDが含まれない場合)は、プライマリ/セカンダリが動的に決定され、その情報がセッションIDに含められてWebブラウザに返されることになる。

初めてアクセスした場合は、プライマリ/セカンダリの情報をペアとしたセッションIDが作成され、ブラウザに返される

 一方、Webブラウザが2回目以降アクセスした場合は、リクエスト中にセッションIDが存在し、WebLogicプラグインがセッションIDの内容を識別して、プライマリにリクエストを振り分ける。

2回目以降は、WebLogicプラグインリクエスト中のセッションIDの内容を見て、振分けを行う

 もし、プライマリがダウンしている場合は、WebLogicプラグインはリクエストをセカンダリに振り分けるとともに、ほかにもクラスタを構成しているサーバがある場合は、新たにプライマリ/セカンダリのペアを決定し直す。

サーバがダウンした場合は、新たにプライマリ/セカンダリのペアを決定し直す

 

 


戻る