JMS 仕様では、フォールト トレーランスについて規定していません。
FioranoMQ では、
"恒久接続 (障害発生時の再接続機能) と
"クライアント サイドの永続化" (プロデューサ側でのメッセージ永続化機能)
を備えています。
これに加えて、JMS サーバーの自動フェイル オーバー機能 (高可用性 (HA) 機能) も導入し、より強力な耐障害性を実現しました。
FioranoMQ の高可用性 (High Availability) 機能は、JMS サーバーの二重化によって実現されます。
サーバーの二重化によるフェイル オーバー
サーバーの二重化によるフェイル オーバー
フェイル オーバーを完全なものとするためには、上記の "クライアントからセカンダリ サーバーへの自動接続切り替え" のメカニズムに加え、プライマリ サーバーとセカンダリ サーバーとの間の自動フェイル オーバー機能が必要となります。
FioranoMQ の高可用性 (HA) 機能では、サーバーを二重化し、プライマリ (アクティブ状態) とセカンダリ (パッシブ状態) として実行します。クライアントからの接続要求を受けられるのはアクティブ状態のサーバーだけです。
図 2. 高可用性 (HA) 機能
ハートビート メッセージングによる障害の検出
プライマリ サーバーとセカンダリ サーバーは TCP/IP ポートを介してハートビート メッセージの送受信を常時行っています。このハートビート メッセージには、それぞれのサーバーの処理状態がデータとして含まれています。処理状態データの内容によって、もしくはメッセージが途絶えることによって、相手サーバーの障害を検出します。パッシブ状態のサーバー (セカンダリ サーバー) がアクティブ状態であったサーバー (プライマリ サーバー) の障害を検出すると、ただちに自身をアクティブ状態に変更し、クライアントからの接続を受け付けるようにします。
クライアント接続の切り替え
クライアント側では、今まで接続していたサーバーとの接続に障害が発生すると、拡張恒久接続機能によってセカンダリ サーバーへ接続を切り替えます (図 6 を参照)。管理オブジェクト (接続ファクトリ、ディストネーション)、永続メッセージなどの状態はサーバー間で共有化されていますので、JMS クライアントは中断した処理の続きから再開することができます。
図 3. 障害の検出
管理オブジェクト、永続メッセージ、セキュリティ設定情報
管理オブジェクト (接続ファクトリ、ディストネーション)、永続メッセージ、セキュリティ設定情報は、共有データ ストアに格納されていますので、プライマリ サーバーが処理していた状態のままセカンダリ サーバーに引き継がれます。図では、シェアード データベースとしていますが、データベースのミラーリングによる方法も可能です。
|