サーブレットとJSPのクラスタリング

サーブレットとJSPのクラスタリング

WebLogic Serverでは、HTTPサーバとプラグインを利用してロードバランシングを実現します。そしてWebLogic Serverのレプリケーション機能を利用することにより、フェールオーバが実現されます。まず、WebLogic ServerがサポートしているHTTPサーバとプラグインの組み合わせを確認します。

HTTPサーバプラグイン
Netscape Enterprise ServerNetscapeプラグイン
ApacheApache Serverプラグイン
Microsoft Internet Information ServerMicrosoft-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"の「」要素に、URLRewritingEnabledパラメータ(デフォ ルトはtrue)を設定する必要があります。

この機能が有効になっていて、HttpServletResponse.encodeURL()メソッドを使用していると、URLが書き換えられてセッションIDが追加されます。リダイレクトする場合にも、HttpServletResponse.encodeRedirectUrl()メソッドを 使用しているとセッションIDがURLに追加されます。以下に例を示します。
 

"Sample"

加えてURLの長さが制限されている場合には、"weblogic.xml"の「」要素で WAPEnabledパラメータやIDLengthパラメータを使用して、セッションIDのサイズを管理することができます。




     
          URLRewritingEnabled
          true
     

     
          WAPEnabled
          true
     

WAPEnabledを設定するとセッションIDのサイズが52文字までに制限され、WAPデバイスでは処理できない特殊文字が使用禁止となりま す。このオプションを有効にすると、WebアプリケーションがWebLogic Serverのクラスタ機能を使用できなくなることに注意してください。

HttpSessionのレプリケーション

WebLogic Serverでは、HttpSessionオブジェクトの永続化方式が複数用意されています。"weblogic.xml"の「」要素のPersistentStoreTypeパラメータを設定することで、永続化方式を選択できます。


永続化方式
表3:永続化方式
(画像をクリックすると別ウィンドウに拡大表示します)

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


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

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30