ノードに複数のネットワーク インターフェイスがあり、マルチキャスト検出が使用されている場合に、Bitbucket ノードがクラスタを形成しない
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
要約
1 つ以上のノードに複数のネットワーク インターフェイスおよび IP アドレスがあり、ノード検出にマルチキャストが使用されている場合、Bitbucket Data Center ノードはクラスタを形成できないことがあります。
Bitbucket はデフォルトですべてのネットワーク インターフェースでリッスンします。使用する特定のネットワークインターフェースを選択することはなく、基盤となるオペレーティング システムに依存してインターフェースを割り当てます。
ノードに複数の IP アドレスがある場合、"間違った" IP アドレスが選択され、ノードが互いを検出できなくなる可能性があります。
環境
以下を含む Bitbucket Data Center インスタンス
- 複数のノード
- 1つ以上のノードが複数のネットワーク インターフェイスおよび IP アドレスを持つ
ノード検出メカニズムとしてマルチキャストを使用している。
つまり、<BITBUCKET_HOME>/shared/bitbucket.properties
ファイルに次のプロパティが設定されている。# Use multicast to discover cluster nodes hazelcast.network.multicast=true
診断
Bitbucket のデバッグログを有効にします。
Data Center クラスターが形成される際、 $BITBUCKET_HOME/log/atlassian-bitbucket.log
には新しいノードが認証されてクラスターに追加されたことを示すログが記録されます。
サンプル ログ
以下は、既存ノードのログのサンプルです。
2023-04-21 08:30:25,654 DEBUG [hz.hazelcast.cached.thread-3] c.a.s.i.c.DefaultClusterJoinManager ACCEPT(10.255.9.1:5701 <- 10.255.9.3:38113): Authenticating cluster node
2023-04-21 08:30:25,865 DEBUG [hz.hazelcast.cached.thread-3] c.a.s.i.c.SharedSecretClusterAuthenticator Created: Response{proof=C1BC540D6526815590745657F64488C68051FD85ED786CE79BA53286A7F7A1B5}
2023-04-21 08:30:26,306 DEBUG [hz.hazelcast.cached.thread-3] c.a.s.i.c.DefaultClusterJoinManager ACCEPT(10.255.9.1:5701 <- 10.255.9.3:38113): Node authenticated successfully
2023-04-21 08:30:26,557 INFO [hz.hazelcast.IO.thread-in-0] c.hazelcast.nio.tcp.TcpIpConnection [10.255.9.1]:5701 [bitbucket-docker] [3.12.13] Initialized new cluster connection between /10.255.9.1:5701 and /10.255.9.3:38113
2023-04-21 08:30:31,643 INFO [hz.hazelcast.event-1] c.a.s.i.c.HazelcastClusterService Node '/10.255.9.3:5701' was ADDED to the cluster. Updated cluster:
[/10.255.9.1:5701 master this uuid='31eeeedf-3c2c-4a37-947d-a983ad4399d4' vm-id='44ff2601-eb98-46b6-9578-e1e804c5a6ab'],
[/10.255.9.3:5701 uuid='3e10e740-313b-4e0f-974e-686a05785240' vm-id='457c6c42-b8f7-49b7-a194-54a549f48a1f']
2023-04-21 08:30:31,644 INFO [hz.hazelcast.priority-generic-operation.thread-0] c.h.internal.cluster.ClusterService [10.255.9.1]:5701 [bitbucket-docker] [3.12.13]
Members {size:2, ver:3} [
Member [10.255.9.1]:5701 - 31eeeedf-3c2c-4a37-947d-a983ad4399d4 this
Member [10.255.9.3]:5701 - 3e10e740-313b-4e0f-974e-686a05785240 lite
]
以下は、最近クラスターに参加した新しいノードのログのサンプルです。
2023-04-21 08:31:29,725 INFO [spring-startup] c.a.s.i.hazelcast.HazelcastLifecycle Promoting Hazelcast instance at 10.255.9.3:5701 to full member
2023-04-21 08:31:29,728 INFO [hz.hazelcast.priority-generic-operation.thread-0] c.h.i.cluster.impl.MembershipManager [10.255.9.3]:5701 [bitbucket-docker] [3.12.13] Member [10.255.9.3]:5701 - 3e10e740-313b-4e0f-974e-686a05785240 this lite is promoted to normal member.
2023-04-21 08:31:29,729 INFO [hz.hazelcast.priority-generic-operation.thread-0] c.h.internal.cluster.ClusterService [10.255.9.3]:5701 [bitbucket-docker] [3.12.13]
Members {size:2, ver:4} [
Member [10.255.9.1]:5701 - 31eeeedf-3c2c-4a37-947d-a983ad4399d4
Member [10.255.9.3]:5701 - 3e10e740-313b-4e0f-974e-686a05785240 this
]
類似のログが見つからない場合、ノードは互いを検出していません。
ソリューション
オプション 1
マルチキャストの代わりに TCP/IP をノード検出に使用してください。
<
BITBUCKET_HOME>/shared/bitbucket.properties
を以下の設定に編集します。# Disable multicast hazelcast.network.multicast=false # Use TCP/IP hazelcast.network.tcpip=true # IP addresses of some or all of the cluster nodes. # Not all of the cluster nodes have to be listed here but at least one of them has to be active when a new node joins hazelcast.network.tcpip.members=192.168.0.1:5701,192.168.0.2:5701,192.168.0.3:5701
オプション 2
それでもマルチキャストが望ましい場合は、次の回避策を使用できます。これには、ノードに対してローカルの、新しい bitbucket.properties
の作成が含まれます。
<BITBUCKET_HOME>
に新しいbitbucket.properties
ファイルを作成します。このファイルは共有ではなく、特定ノードに対するローカル ファイルです。次のプロパティをローカルの
<BITBUCKET_HOME>/
bitbucket.properties
ファイルに追加します。# Specify the public address to be used explicitly hazelcast.local.public.address=192.168.0.1:5701