Data Center クラスタ スプリット ブレインからの回復

お困りですか?

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

コミュニティに質問

This article applies to Confluence Data Center 5.8.5 or later.

症状

Confluence Data Center node will not start up and you see the following message in the logs:

2014-08-15 15:23:00,023 ERROR [scheduler_Worker-6] [confluence.cluster.safety.ClusterPanicListener] onClusterPanicEvent Received a panic event, stopping processing on the node: Clustered Confluence: 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.
2014-08-15 15:23:00,035 WARN [scheduler_Worker-6] [confluence.cluster.safety.ClusterPanicListener] onClusterPanicEvent  com.atlassian.confluence.cluster.hazelcast.HazelcastClusterInformation@29f82619
2014-08-15 15:23:00,036 WARN [scheduler_Worker-6] [confluence.cluster.safety.ClusterPanicListener] onClusterPanicEvent Shutting down Quartz scheduler

This is known as cluster split-brain (sometimes known as cluster panic), and can happen on any node (for example if you restart a node you may see the cluster split-brain message above on the same node or on a different node). 

背景

The cluster safety mechanism is designed to ensure that Confluence cannot become inconsistent because updates by one user are not visible to another. A failure of this mechanism is a fatal error in Confluence and is called cluster split-brain. Because the cluster safety mechanism helps prevents data inconsistency whenever any two copies of Confluence running against the same database, it is enabled in all instances of Confluence, not just Confluence Data Center.

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

A scheduled task, ClusterSafetyJob, runs every 30 seconds. In a cluster, this job is run only on one of the nodes. The scheduled task operates on a safety number – a randomly generated number that is stored both in the database and in the distributed cache used across a cluster. It does the following:

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

診断

Cluster split-brain can have a number of causes. You should:

  1. Check that the network connectivity for multicast traffic is working between the nodes.  
  2. Check that the same multicast address is being used by all the nodes.
    To determine the multicast address being used by a node, look in the logs for the string Configuring Hazelcast with. For example:

    2014-08-15 15:20:08,140 INFO [RMI TCP Connection(4)-127.0.0.1] [confluence.cluster.hazelcast.HazelcastClusterManager] 
    configure Configuring Hazelcast with instanceName [nutella-buster], multicast address 238.150.128.250:54327, multicast 
    TTL [1], network interfaces [fe80:0:0:0:0:0:0:1%1, 0:0:0:0:0:0:0:1, 127.0.0.1] and local port 580

ソリューション

To recover from a cluster split-brain:

  1. Verify that the network connectivity is fine.
  2. Confirm that the same multicast address is being used by all the nodes.
  3. Restart the nodes that panicked one at a time, and ensure that each one rejoins the cluster (go to  > General Configuration > Clustering) before starting the next node.

最終更新日: 2016 年 2 月 23 日

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

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