 |

|
Javaアプリケーションサーバのクラスタリング機能比較
|
第6回:WebLogic Serverが提供するクラスタ機能
著者:サンモアテック 高木 基成 2005/11/28
|
|
|
前のページ 1 2 3 4 次のページ
|
 |
サーブレットとJSPのクラスタリング
|
WebLogic Serverでは、HTTPサーバとプラグインを利用してロードバランシングを実現します。そしてWebLogic Serverのレプリケーション機能を利用することにより、フェールオーバが実現されます。まず、WebLogic ServerがサポートしているHTTPサーバとプラグインの組み合わせを確認します。
|
HTTPサーバ |
プラグイン |
Netscape Enterprise Server |
Netscapeプラグイン |
Apache |
Apache Serverプラグイン |
Microsoft Internet Information Server |
Microsoft-IISプラグイン |
表2:HTTPサーバとプラグイン
|
これらのプラグインは、HTTPクライアントのリクエストをWebLogic Serverインスタンスに転送します。転送されたWebLogic Serverインスタンスとクライアントの間にはセッションが確立され、クライアントのブラウザにはプライマリとセカンダリのWebLogic Serverインスタンスの位置がCookieに保存されます。
プライマリで障害が発生するとクライアントのセッション情報を利用して、プラグインがセカンダリのWebLogic Serverにリダイレクトします。そして、正常な処理結果をクライアントに返します。
クライアントはサーバの障害の影響を受けることなく処理を継続できます。クラスタ内のWebLogic Serverインスタンスが3台以上存在する場合には、今後のフェールオーバに備えて、更新されたプライマリとセカンダリの情報がCookieに保存されます。
クラスタ内の管理対象サーバが2台の場合は障害の発生したサーバが復旧しない限り、レプリケーションされません。障害の発生したサーバが復旧すると、セカンダリとしてクラスタに参加します。
|
Cookieが使えない場合
|
Cookieが無効(HttpServletRequest.isRequestedSessionIdFromCookie()メソッドで確認できる)になっていたり、Wireless Access Protocolに対応したアプリケーションでCookieが使えなかったりする場合には、プライマリとセカンダリの位置がURLに挿入される「URL書き換え」が利用できます。
この方式では、セッションIDがWebページのハイパーリンクにエンコードされ、WebLogic ServerはURLに埋め込まれているIDを利用して、HttpSessionオブジェクトを特定します。この仕組みを利用するためには、"weblogic.xml"の「<session-param>」要素に、URLRewritingEnabledパラメータ(デフォルトはtrue)を設定する必要があります。
この機能が有効になっていて、HttpServletResponse.encodeURL()メソッドを使用していると、URLが書き換えられてセッションIDが追加されます。リダイレクトする場合にも、HttpServletResponse.encodeRedirectUrl()メソッドを使用しているとセッションIDがURLに追加されます。以下に例を示します。
|
"<a href=\"" + httpServletResponse.encodeURL("dir/sample.jsp") + "\">Sample</a>"
|
 |
加えてURLの長さが制限されている場合には、"weblogic.xml"の「<session-descriptor>」要素でWAPEnabledパラメータやIDLengthパラメータを使用して、セッションIDのサイズを管理することができます。
|
<session-descriptor>
<session-param>
<param-name>URLRewritingEnabled</param-name>
<param-value>true</param-value>
</session-param>
<session-param>
<param-name>WAPEnabled</param-name>
<param-value>true</param-value>
</session-param>
</session-descriptor>
|
 |
WAPEnabledを設定するとセッションIDのサイズが52文字までに制限され、WAPデバイスでは処理できない特殊文字が使用禁止となります。このオプションを有効にすると、WebアプリケーションがWebLogic Serverのクラスタ機能を使用できなくなることに注意してください。
|
HttpSessionのレプリケーション
|
WebLogic Serverでは、HttpSessionオブジェクトの永続化方式が複数用意されています。"weblogic.xml"の「<session-descriptor>」要素のPersistentStoreTypeパラメータを設定することで、永続化方式を選択できます。

表3:永続化方式 (画像をクリックすると別ウィンドウに拡大表示します)
|
クラスタ構成にする場合は、「インメモリレプリケーション」を永続化方式として選択します。WebLogic Serverのレプリケーションは、プライマリとセカンダリのサーバ間で行われるprimary-secondary方式です(「第2回:Tomcatのクラスタ設定」参照)。レプリケーション時の動作を以下に解説します。

図1:レプリケーション時の動作
- HttpSessionオブジェクトが生成され、プライマリの管理対象サーバを確定します
- HttpSessionオブジェクトがプライマリからセカンダリにレプリケーションされます
- HttpSessionオブジェクトに対して、setAttribute()メソッドやremoveAttribute()メソッドが呼び出されると、service()メソッドが終了した時点で、プライマリからセカンダリにレプリケーションが行われます
- プライマリの処理中に障害が発生して停止すると、セカンダリが処理を継続して、クライアントに正常に処理をした結果を返します(クラスタリングしていなければ、クライアントにはHTTPエラーが返ります)
- このときセカンダリとサーバは、すべてのHttpSessionオブジェクトのプライマリとなります
- 先ほどの障害が発生したサーバは復旧すると、既存のHttpSessionオブジェクトのセカンダリとなり、新規にリクエストを受け付けた場合には、そのリクエストのプライマリとなります
表4:レプリケーション時の動作
|
前のページ 1 2 3 4 次のページ
|

|
|

|
著者プロフィール
株式会社サンモアテック 高木 基成
株式会社サンモアテック 技術開発事業部
2002年入社。システム間連携を実現する各種ミドルウェアの調査・導入に従事。現在、ESBやSOAなどを実現するための新技術検証に携わっている。
|
|
|
|