DS201の実施_Gossip

DS201: Foundations of Apache Cassandra™ and DataStax Enterpriseの学習記録。

Cassandraのノード間の通信とデータの同期は、Gossipプロトコルに基づいて行われる。

Gossipは、ネットワーク内のノード間で情報を分散させるためのプロトコル。ノードは定期的にお互いに通信し、各ノードが保持する情報を交換する。この情報には、ノードの状態やトポロジー、データの位置情報などが含まれる。

具体的な動作手順は以下の通り。

  1. 各ノードは、互いに定期的に「ゴシップ(情報交換)」メッセージを送信。
  2. ノードは、受信したメッセージに含まれる情報を自身の状態と比較し、新しい情報があれば自身の情報を更新。
  3. ノードは、自身の情報を他のノードに送信。すべての情報を送信するのではなく、変更された情報のみを送る。
  4. ノードは、他のノードから受信した情報を受け入れ、自身の情報を更新。

演習

$ nodetool gossipinfo
localhost/127.0.0.1
  generation:1686366680
  heartbeat:8156
  STATUS:19:NORMAL,-1868919513406135542
  LOAD:8135:1.2650205E7
  SCHEMA:223:8aec9840-06b7-356a-b5ed-07e43a42d65e
  DC:9:datacenter1
  RACK:11:rack1
  RELEASE_VERSION:6:4.1.2
  RPC_ADDRESS:5:127.0.0.1
  NET_VERSION:2:12
  HOST_ID:3:349d6a93-038a-45a9-bd86-cc22ed3d8e0d
  RPC_READY:21:true
  NATIVE_ADDRESS_AND_PORT:4:127.0.0.1:9042
  STATUS_WITH_PORT:18:NORMAL,-1868919513406135542
  SSTABLE_VERSIONS:7:big-nb
  TOKENS:17:<hidden>

ノードの状態はキーバリューペアとして表される。 2ノードある場合、ノード1でnodetool gossipinfoコマンドを実行しても、ノード1とノード2のGossip状態を確認することができる。

Tags: