JMSのクラスタリング
JMSのクラスタリング
JMSはJ2EE標準のメッセージングモデルやAPIの仕様になります。WebLogic ServerではJMSもクラスタ化することができます。分散送り先(分散キュー・分散トピック)の機能により、メッセージのロードバランシング(ラウンドロビン・ランダム)とフェールオーバを実現できます。フェールオーバを実現できます。
この機能は仮想的な送り先を作成しておき、送信側クライアント(プロデューサ)が分散送り先にメッセージを送信した場合、実体となる送り先 (キュー・トピック)と接続を確立してメッセージを送信します。トランザクションアフィニティがサポートされており、トランザクションセッション内で複数のメッセージを送信すると、すべてのメッセージを同じWebLogic Serverに送信しようとします。

図3:サーバアフィニティ
JMSマイグレーション
送信前のメッセージに関しては、分散送り先を利用するだけでフェールオーバが実現されます。しかし、JMSの送り先は非同期で処理を行うので、未処 理のメッセージを残したまま、WebLogic Serverインスタンスが停止することがあります。この場合、未処理のメッセージに関しては、フェールオーバされていないことになります。
JMSをクラスタ構成にしていると、稼動している別のサーバに保留されているメッセージを移行(マイグレーション)することで処理を継続できます。移行方法は、管理コンソールを利用して、送り先サーバを切り替えることで実現できます。
weblogic.AdminツールのMIGRATEコマンドを利用しても、送り先サーバの切り替えが可能です。これらの切り替え操作は、WebLogic Server 8.1では手動で行う必要がありましたが、最新版のWebLogic Server 9.0では自動でマイグレーションされるように仕様が変更されています。
最後に
WebLogic Serverをベースにした様々なミドルウェアがあります。WebLogic IntegrationやAquaLogic Service Busなどのミドルウェアを活用するためにも、ベースとなるWebLogicの機能を理解しておくことは、大変重要ではないでしょうか。
次回は、Tomcat/JBoss/WebLogicそれぞれのクラスタリング時におけるパフォーマンスを比較します。
*本文2段落目の文章「サーバアフィニティがサポートされており、プロデューサは初回の接 続が確立された送り先にメッセージを送信し続けます。」を「トランザクションアフィニティがサポートされており、トランザクションセッション内で複数の メッセージを送信すると、すべてのメッセージを同じWebLogic Serverに送信しようとします。」に訂正します。(2007/05/11)