30.5. ライブサーバーへのフェイルバック

ライブサーバーに障害が発生し、バックアップがそのロールを引き継いだ後は、ライブサーバーを再起動して、クライアントをフェイルバックさせることができます。

共有ストアの場合は、単に元のライブサーバーを再起動し、プロセス自体を強制終了して新しいライブサーバーを強制終了します。または、スレーブで allow-fail-backtrue に設定して、マスターがオンラインに戻ったら自動的に停止するように強制できます。allow-fail-back を設定する管理 CLI コマンドは以下のようになります。

/subsystem=messaging-activemq/server=default/ha-policy=shared-store-slave:write-attribute(name=allow-fail-back,value=true)

レプリケーション HA モードでは、マスター設定で check-for-live-server 属性が true に設定されていることを確認する必要があります。JBoss EAP 7.1 より、これがデフォルト値になります。

/subsystem=messaging-activemq/server=default/ha-policy=replication-master:write-attribute(name=check-for-live-server,value=true)

true に設定すると、ライブサーバーは、その nodeID を使用して別のサーバーの起動時にクラスターを検索します。見つかった場合は、このサーバーにアクセスし、フェイルバックを試行します。これはリモートのレプリケーションのシナリオであるため、元のライブサーバーは、その ID で実行しているバックアップとデータを同期する必要があります。同期されると、アクティブな処理を引き継ぐことができるようにするため、シャットダウンするようにバックアップサーバーに要求します。この動作により、元のライブサーバーは、フェイルオーバーがあったかどうかを判断して、フェイルオーバーがあった場合は、そのロールを果たしたサーバーがまだ実行中かどうかを判断できます。

警告

バックアップへのフェイルオーバーが発生した後にライブサーバーを再起動する場合は、check-for-live-server 属性を true に設定する必要があります。再起動しない場合は、バックアップサーバーが実行していることを確認せずに、ライブサーバーが直ちに起動します。これにより、ライブとバックアップが同時に実行され、新しく接続されたすべてのクライアントに重複メッセージが配信されるようになります。

共有ストアの場合、通常のサーバーシャットダウンでフェイルオーバーを発生させることができ、次のようにマスターまたはスレーブのいずれかの HA 設定でこの failover-on-server-shutdowntrue に設定することもできます。

/subsystem=messaging-activemq/server=default/ha-policy=shared-store-slave:write-attribute(name=failover-on-server-shutdown,value=true)

また、allow-failbacktrue に設定することにより、元のライブサーバーが復旧したときに実行中のバックアップサーバーを強制的にシャットダウンし、元のライブサーバーが自動的に引き継げるようにできます。

/subsystem=messaging-activemq/server=default/ha-policy=shared-store-slave:write-attribute(name=allow-failback,value=true)