第30章 高可用性
高可用性とは、1 つまたは複数のサーバーで障害が発生した後もシステムが機能を継続できることです。
高可用性の一部がフェイルオーバーです。これは、サーバーで障害が発生した場合に、クライアントアプリケーションが動作を継続できるように、クライアント接続をサーバー間で移行する機能です。
永続メッセージデータのみが、フェイルオーバー後も存続します。フェイルオーバー後、非永続メッセージデータは使用できなくなります。
30.1. ライブ/バックアップのペア
JBoss EAP 7 メッセージングにより、各ライブサーバーがバックアップを持つライブ/バックアップペアとしてサーバーをリンクできます。ライブサーバーはクライアントからメッセージを受信し、バックアップサーバーはフェイルオーバーが発生するまで機能しません。バックアップサーバーは 1 つのライブサーバーのみが所有でき、パッシブモードで留まり、ライブサーバーの作業の引き継ぎを待ちます。
ライブサーバーとバックアップサーバーの間には 1 対 1 の関係があります。ライブサーバーにはバックアップサーバーを 1 つだけ含めることができ、バックアップサーバーは 1 つのライブサーバーのみが所有できます。
ライブサーバーがクラッシュするか、正しいモードで停止した場合、現在パッシブモードのバックアップサーバーが新しいライブサーバーになります。新しいライブサーバーが、自動フェイルバックを許可するように設定されている場合は、古いライブサーバーが復旧することを検出して自動的に停止し、古いライブサーバーがメッセージの受信を再び開始できるようにします。
ライブ/バックアップサーバーのペアを 1 つだけデプロイする場合は、バックアップインスタンスがメッセージをアクティブに処理していないため、ペアの前でロードバランサーを効果的に使用できません。さらに、JNDI や Undertow Web サーバーなどのサービスは、バックアップサーバーでもアクティブではありません。これらの理由により、バックアップメッセージングサーバーとして使用されている JBoss EAP のインスタンスへの JEE アプリケーションのデプロイはサポートされていません。
30.1.1. ジャーナルの同期
HA をレプリケートされたジャーナルで設定する場合は、ライブサーバーとバックアップの同期に時間がかります。
同期が完了したかどうかを確認するには、CLI で以下のコマンドを実行します。
/subsystem=messaging-activemq/server=default/ha-policy=replication-master:read-attribute(name=synchronized-with-backup)
結果が true
であれば、同期は完了です。
ライブサーバーを安全にシャットダウンできるかどうかを確認するには、CLI で以下のコマンドを送信します。
/subsystem=messaging-activemq/server=default/ha-policy=replication-slave:read-attribute(name=synchronized-with-live)
結果が true
であれば、ライブサーバーをシャットダウンしても安全です。