TOP調査レポート> JBossの可用性向上
オープンソースをこう使った! 〜 運用管理ツールHinemosの秘密
オープンソースをこう使った! 〜 運用管理ツールHinemosの秘密

第5回:JBossのクラスタリング機能を活用した可用性向上について

著者:NTTデータ  大上 貴充   2006/9/28
前のページ  1  2  3  4  次のページ
JBossの可用性向上

   JBossは標準でクラスタリングの機能を提供しており、Hinemosで利用しているバージョン(4.0.3SP1)では、主な機能として表2にあげる機能を備えています。
サービス、EJBのフェイルオーバとロードバランシング
JNDI/RMI/EntityBean/SessionBean/MessageDrivenBeanに対するフェイルオーバとロードバランシングを提供します。JMSについてはフェイルオーバの機能を提供します。
クラスタノードの自動検出
クラスタにノードを追加するのに特別な設定は必要ありません。
シングルトンサービス
サービスをクラスタ内の1つのノードでのみ稼動させることができます。そのノードに障害が発生した場合は、フェイルオーバされ、別のノードでサービスが起動します。
ファーミング
サービスやEJBなどをクラスタ内のすべてのノードに自動的にデプロイすることができます。

表2:JBossの主なクラスタリング機能

   これら表2の機能を活用することで、Hinemosで用いるJBossをクラスタ化します。

   一般的にクラスタリングの構成を組む場合、アクティブ/スタンバイ構成とアクティブ/アクティブ構成の2つの方式が考えられます。JBossクラスタリングの機能では、クラスタ化するマシンの台数は限定されず、JMSサービスを除くJNDIやRMIのサービスおよび、EJBをすべてのマシンでアクティブにし、ロードバランシングすることが可能です(図2)。

   この図では、データベースはPostgresForestを使って仮想的に1つのデータベースと見なしたものとして表現しています。PostgresForestについては後述します。

JBossクラスタリング構成(アクティブ-アクティブ)
図2:JBossクラスタリング構成(アクティブ-アクティブ)
(画像をクリックすると別ウィンドウに拡大図を表示します)

   この構成は、更新に比べ参照の多いシステムでは、負荷の分散が可能となり有効な方式となりますが、次の2つの観点を考慮する必要があります。


JMSはシングルトンサービスである

   JMSサービスはクラスタノードのうちどれか1台でのみ動作し、フェイルオーバは提供されていますが、ロードバランシングは提供されていません。


EntityBeanはクラスタノード間にまたがって整合性を維持するための仕組みを持っていない

   例えば、2つのクライアントがそれぞれクラスタノードAとクラスタノードBに対して同時に、同じレコードに対応するEntityBeanに対して更新をかけた場合、クラスタノードAの更新がクラスタノードBでは反映されていない可能性があります。

   よって、下記のいずれかの方法でデータベースレベルでデータの整合性を確保する必要があります。

  • データベースレベルで行ロックをかける
  • データベースのトランザクション独立性レベルをSERIALIZABLEにする

表3:データの整合性を取る方法

   Hinemosでは、マネージャとエージェント間のデータのやり取りや非同期処理(MDB)で、JMSの機能を多く使っています。また、監視結果や実行結果の反映のためのデータの更新が頻繁であるため、ボトルネックとなるのはデータベースアクセス部分であることを考えると、アクティブ/アクティブの構成にするよりも、むしろシンプルに2台構成のアクティブ/スタンバイ方式の方が向いていると考えられます。2台構成のアクティブ/スタンバイ方式とすれば、EntityBeanが生成されるのは1台のノードに限定されるため、データの不整合が生じることはなくなります。

HinemosでのJBossクラスタリング構成(アクティブ/スタンバイ)
図3:HinemosでのJBossクラスタリング構成(アクティブ/スタンバイ)
(画像をクリックすると別ウィンドウに拡大図を表示します)

前のページ  1  2  3  4  次のページ


NTTデータ  大上 貴充
著者プロフィール
株式会社NTTデータ   大上 貴充
基盤システム事業本部 オープンソース開発センタ
2004年よりOSSを用いたシステム構築、運用管理ツールの研究開発に従事。現在はHinemosの開発メンバとして、より一層の機能充実、品質向上とコミュニティの創造を目指して活動中。

INDEX
第5回:JBossのクラスタリング機能を活用した可用性向上について
  はじめに
JBossの可用性向上
  Hinemosをクラスタ化する際のJBossの設定
  PostgreSQLの可用性向上