ノードがクラスタに再ジョインしたときに Confluence Data Center でクラスタ パニックがトリガーされる
プラットフォームについて: Data Center - この記事は、Data Center プラットフォームのアトラシアン製品に適用されます。
このナレッジベース記事は製品の Data Center バージョン用に作成されています。Data Center 固有ではない機能の Data Center ナレッジベースは、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。
*Fisheye および Crucible は除く
問題
ノードがクラスタに再ジョインしたときに Confluence Data Center でクラスタ パニックがトリガーされる。atlassian-confluence.log には、Hazelcast が強制終了されている旨の警告のみが書き込まれている。
次のようなアクションが行われる。
- すべてのクラスタ ノードが 1 つのクラスタ内に正常に存在する (例: ノード 1、2、および 3)
- 1 つのノードがシャットダウンによってクラスタから外される (例: ノード 3)
- これにより、ノード 1 と 2 がクラスタに残される。ノード 3 が開始されてクラスタにジョインすると、ノード 1 と 2 がパニック モードになる
- 一部またはすべてのノードで Hazelcast が終了される
atlassian-confluence.log:
には次のようなログが表示される。
2021-01-27 22:08:43,894 WARN [hz.ShutdownThread] [com.hazelcast.instance.Node] log [xxx.xxx.xxx.xxx]:5801 [confluenceCluster] [3.8.6] Terminating forcefully...
原因
ノードがマルチキャストで継続的に通信するうえで、問題が発生しています。Omping などのネットワーク通信ツールでは、ノードがクラスタ内にいる間は通信エラーは表示されませんが、いずれかのノードで Hazelcast が終了されると通信がダウンします。
回避策
Confluence Data Center バージョン 5.9 以降での回避策は、マルチキャストからユニキャストに移行することです。
Confluence Data Center を初めてセットアップする場合、ガイドに従い、検出モードの選択やクラスタ ノードの追加のプロセスを順に進めていくことができます。クラスタでのノード検出を変更する場合、各クラスタ ノードのローカル ホーム ディレクトリ内の
confluence.cfg.xml
ファイルを編集することが必要になります。- 変更を行う前に、クラスタ内のすべてのノードをシャットダウンしてください。
- 各ノードで検出設定が完全に同一である (各ローカル ホーム ディレクトリ内の
confluence.cfg.xml
ファイルに加えた変更が同じ内容である) ことを確認します。 - これらのファイルを手動で編集する前には必ずバックアップを作成してください。
Confluence Data Center の古いバージョンからアップグレードしたか、バージョン 5.9 で使用を開始したかによって、必要な変更はいくらか異なります。以下に、両方の変更方法の詳細を説明します。
マルチキャストから TCP/IP に変更するには
confluence.cfg.xml
ファイルから、以下の 2 行を探します。<property name="confluence.cluster.address">[multicast IP]</property> <property name="confluence.cluster.join.type">multicast</property>
ファイル内に両方の行が存在する場合、次のように変更します。
confluence.cluster.address
プロパティは存在するが、confluence.cluster.join.type
プロパティへの参照がない場合、1 つめの行を更新し、以下のように 2 行目を追加します。<property name="confluence.cluster.peers">[node 1 IP],[node 2 IP],[node 3 IP]</property> <!-- A comma-separated list of node IP addresses, without spaces --> <property name="confluence.cluster.join.type">tcp_ip</property> <!-- accepted values are multicast or tcp_ip -->
各ノードのアドレスを入力し、各アドレスをカンマで区切ります。IP アドレスの周囲から括弧が削除されていることを確認します。
これで、クラスタ ノードを再起動できます。
マルチキャストから AWS に変更する方法
confluence.cfg.xml
ファイルから以下の 2 行を探し、削除します。<property name="confluence.cluster.address">[multicast IP]</property> <property name="confluence.cluster.join.type">multicast</property>
Confluence に渡す資格情報の種類に応じて、AWS 構成の次の 2 つのブロックのいずれかを追加します。オプション 1: アクセス キー/秘密キー ベースの資格情報の場合
<property name="confluence.cluster.join.type">aws</property> <property name="confluence.cluster.aws.host.header">[---VALUE---]</property> <property name="confluence.cluster.aws.region">[---VALUE---]</property> <property name="confluence.cluster.aws.tag.key">[---VALUE---]</property> <property name="confluence.cluster.aws.tag.value">[---VALUE---]</property> <property name="confluence.cluster.aws.access.key">[---VALUE---]</property> <property name="confluence.cluster.aws.secret.key">[---VALUE---]</property>
オプション 2: IAM ロール ベースの資格情報の場合
<property name="confluence.cluster.join.type">aws</property> <property name="confluence.cluster.aws.host.header">[---VALUE---]</property> <property name="confluence.cluster.aws.region">[---VALUE---]</property> <property name="confluence.cluster.aws.tag.key">[---VALUE---]</property> <property name="confluence.cluster.aws.tag.value">[---VALUE---]</property> <property name="confluence.cluster.aws.iam.role">[---VALUE---]</property>
TCP/IP から AWS に変更する方法
confluence.cfg.xml
ファイルから以下の 2 行を探し、削除します。<property name="confluence.cluster.join.type">tcp_ip</property> <property name="confluence.cluster.peers">[node 1 IP],[node 2 IP],[node 3 IP]</property>
Confluence に渡す資格情報の種類に応じて、AWS 構成を使用して以下の 2 つのブロックのいずれかを追加します。
オプション 1: アクセス キー/秘密キー ベースの資格情報の場合
<property name="confluence.cluster.join.type">aws</property> <property name="confluence.cluster.aws.host.header">[---VALUE---]</property> <property name="confluence.cluster.aws.region">[---VALUE---]</property> <property name="confluence.cluster.aws.tag.key">[---VALUE---]</property> <property name="confluence.cluster.aws.tag.value">[---VALUE---]</property> <property name="confluence.cluster.aws.access.key">[---VALUE---]</property> <property name="confluence.cluster.aws.secret.key">[---VALUE---]</property>
オプション 2: IAM ロール ベースの資格情報の場合
<property name="confluence.cluster.join.type">aws</property> <property name="confluence.cluster.aws.host.header">[---VALUE---]</property> <property name="confluence.cluster.aws.region">[---VALUE---]</property> <property name="confluence.cluster.aws.tag.key">[---VALUE---]</property> <property name="confluence.cluster.aws.tag.value">[---VALUE---]</property> <property name="confluence.cluster.aws.iam.role">[---VALUE---]</property>
これで、クラスタ ノードを再起動できます。
CloudFormation YAML テンプレートを使用している場合、AWS 側にも反映させるため、少なくとも適切な値を設定している必要があります。AWS モードのクラスタ タイプに切り替える場合、「Confluence Data Center を AWS で実行する」を確認し、YAML で次のセットアップを行うようにします。
Key: Cluster Value: !Ref AWS::StackName PropagateAtLaunch: true
TCP/IP からマルチキャストに変更するには
TCP/IP からマルチキャストに切り替えるには、上記でおおまかに説明した変更の逆を実行します。
confluence.cfg.xml ファイルのプロパティのリファレンス
鍵 (キー) 有効な値 注意 confluence.cluster.join.type
'multicast'
、'tcp_ip'
、または'aws'
5.9 より前の Data Center インストールにはこのキーがありません。キーがない場合、Confluence は既定で multicast
を選択します。confluence.cluster.address
単一のマルチキャスト IP アドレス confluence.cluster.join
.type
がmulticast
に設定されている場合にのみ、Confluence はこのキーを使用します。confluence.cluster.peers
IP アドレスのカンマ区切りの文字列(スペースなし) ここには 1 つ以上のアドレスが必要です。アドレスは、クラスタの各ノードの IP アドレスです。例:
<property name="confluence.cluster.peers">[node 1 IP],[node 2 IP],[node 3 IP]</property>
confluence.cluster.join
.type
がtcp_ip
に設定されている場合にのみ、Confluence はこのキーを使用します。confluence.cluster.authentication.enabled
true、false Confluence ノードがクラスターに参加するときに認証しない場合は、このプロパティを false に設定します。これは非推奨です。 confluence.cluster.authentication.secret
(自動生成)。 このプロパティを設定して、ノードがクラスターに参加するときにノードを認証するために使用される共有シークレットを変更します。シークレットは最大 40 字の文字列にする必要があります。
Confluence Data Center versions prior to 5.9 do not have the option to use unicast, so the workaround is not applicable. However, a similar issue has been addressed for versions 5.8.5 and above: CONFSERVER-39396 - Node rejoining cluster can cause cluster panic. Configure cluster safety cache to flush value on merge.