Confluence クラスタでの致命的なエラーによって Confluence が開始されない

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

問題

Confluence にアクセスすると次のようなエラー メッセージが表示される。

Fatal error in Confluence cluster: Database is being updated by an instance which is not part of the current cluster. 
You should check network connections between cluster nodes, especially multicast traffic.

背景

Confluence のデータベースには CLUSTERSAFETY テーブルがあります。このテーブルはクラスタ化されていない環境の場合も存在します。Confluence は 30 秒ごとにこのテーブルを確認し、テーブルの値をメモリにある値と比較します。新しい値がメモリの値と異なる場合、このエラーが表示され、Confluence は先に進むことができなくなります。これがクラスタの安全性を保つためのメカニズムです。

クラスタの安全性を保つためのメカニズムの仕組み...

クラスタの安全性を保つためのメカニズムは、1 人のユーザーによる更新がほかのユーザーに表示されないことによって wiki の一貫性が失われる問題を防ぐために設計されています。このメカニズムでの失敗は Confluence の致命的なエラーであり、クラスタ パニックと呼ばれます。クラスタの安全性を保つためのメカニズムは、Confluence の 2 つのコピーが同じデータベースに接続しているときにデータの一貫性を保つことを支援します。このため、クラスタだけでなくすべての Confluence インスタンスで有効化されています。

スケジュール済みタスクの ClusterSafetyJob は Confluence で 30 秒ごとに実行されます。クラスタでは、このジョブはいずれかのノードでのみ実行されます。スケジュール済みのタスクは、クラスタ内のデータベースと分散キャッシュの両方に保持されるランダムに生成された番号である、セーフティ番号を使用して実行されます。次の処理を行います。

  1. 新しいランダムな番号を生成します。
  2. データベースとキャッシュの両方に既存のセーフティ番号がある場合、既存のセーフティ番号を比較します。
  3. 数字が異なる場合、ClusterPanicEvent を発行します。Confluence では現在、これが起こると、クラスタの各ノードに次のような影響があります。
    • アプリケーションへのすべてのアクセスの無効化
    • すべてのスケジュール済みタスクの無効化
    • Confluence 5.5 以前の場合、データベースのセーフティ番号を新しい値に更新。これにより、データベースにアクセスするすべてのノードが失敗します。Confluence 5.6 以降の場合、データベースのセーフティ番号は更新されないため、他の Confluence ノードは引き続きリクエストを処理できます。
  4. 番号が同じか、未設定の場合、セーフティ番号を更新します。
    • データベースのセーフティ番号を新しいランダムな数字に更新
    • キャッシュのセーフティ番号を新しいランダムな数字に設定

原因

これはクラスタに関連した問題であるように見えますが、非クラスタ環境でも発生します。複数の問題が同じエラー メッセージを表示させている場合があります。

  1. Confluence の複数のインスタンスがデプロイされ、同じデータベースに接続している。本番環境がクローンされていたり、元のデータベースを指す hibernate.connection.url を変更することなくステージング環境が開始されたりした場合に多く発生します。 
  2. Confluence が他の環境にすでに存在する重複した Server ID を使用している。本番環境がクローンされていたり、ステージング環境が新しい Server ID を作成することなく開始されたりした場合に多く発生します。
  3. パフォーマンスの問題 (多くの場合は過剰なガベージ コレクション) によってクラスタ セーフティ ジョブの実行が停止されている。Confluence 3.0.1 および 3.0.2 ではこの構成が劣化しており、非常に確率でこの問題が発生します。「クラスタ パニック (非クラスタの Confluence 2.10.4、3.0.1、および 3.0.2)」をご確認ください。
  4. クラスタ内のノード間の通信が切断された。
  5. 単一ノード (非クラスタ) デプロイメントの場合、clustersafety テーブルに 2 つのレコードがある。 
  6. Confluence が、レプリケーションのマスター サーバーとして構成されている MySQL データベースに接続している。

診断とソリューション

  1. 単一ノード (非クラスタ) デプロイメントの開始直後に問題が発生する場合、「複数デプロイメントによるクラスタ パニック」をご確認ください。
  2. 単一ノード (非クラスタ) デプロイメントの開始直後に問題が発生するが、複数デプロイメントが原因ではない場合、データベースの clustersafety テーブルに複数のレコードがあるかどうか確認します。複数のレコードが存在する場合、片方を削除します。
  3. 3.0.1 または 3.0.2 を使用している場合、バグの影響を受けている可能性があります。「クラスタ パニック (非クラスタの Confluence 2.10.4、3.0.1、および 3.0.2)」をご確認ください。
  4. 単一ノード (非クラスタ) デプロイメントで問題が自発的に発生する場合、「パフォーマンスの問題によるクラスタ パニック」をご確認ください。
  5. マルチノード クラスタ (Confluence 5.4 以前) で問題が発生する場合、「マルチキャスト トラフィックの通信の問題によるクラスタ パニック」をご確認ください。
  6. Confluence Data Center 5.6 以降 (クラスタ環境) で問題が発生する場合、「Data Center クラスタのスプリットブレインを回復する」をご確認ください。
  7. Confluence が MySQL のマスター データベースに接続されている場合、このガイドの「ソリューション」をご確認ください。
  8. Confluence がクローンされた環境で重複した Server ID を使用している場合、「Confluence のサーバー ID を変更する方法」をご確認ください。


最終更新日 2019 年 6 月 20 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.