単一トークン・アーキテクチャー・ノードのトークンを計算する

vnodeを使用しない場合、以下の手順を実行してトークンを計算してクラスター全体にわたってデータを均一に分散します。

cassandra-topology.properties

cassandra-topology.propertiesファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra-topology.properties
tarボール・インストール installation_location/resources/cassandra/conf/cassandra-topology.properties

cassandra.yaml

cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra.yaml
tarボール・インストール installation_location/resources/cassandra/conf/cassandra.yaml

cassandra-rackdc.properties

cassandra-rackdc.propertiesファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra-rackdc.properties
tarボール・インストール installation_location/resources/cassandra/conf/cassandra-rackdc.properties

このページでは、手動でトークンを計算する情報について説明します。

DataStaxでは、DSE OpsCenter内のLifecycle Managerを代わりに使用することを推奨しています。

単一トークン・アーキテクチャーについて

仮想ノード(vnode)を使用しない場合、単一トークン・アーキテクチャーを使用します。「仮想ノードを使用する際のガイドライン」を参照してください。vnodeを使用する場合、トークンを計算する必要はありません。

vnodeなしで、DataStax Enterpriseクラスターを起動する場合、トークンの割り当てを使用してクラスター内のノード全体でデータが均等に分割されていることと、異なるデータ・センター内であったとしても2つのノードが同じトークンを共有していないを確認する必要があります。トークンは、パーティショナーが各ノードのどこに行を格納するのかを特定する際に使用するハッシュ値です。この値によって、リング内のノードの位置とノードが責任を担っているデータを特定します。各ノードは、ノードそのもの(包括的)とノードの前身(排他的)間のクラスターの範囲の責任を担います。

わかりやすい例を挙げると、可能性があるトークンの範囲が0~100で、ノードが4つある場合、ノードのトークンは次のようになります。0、25、50、75。この分割により、各ノードが同じ範囲のデータを担当していることが確認されます。詳細については、「データ分散およびレプリケーションについて」を参照してください。

クラスター内で初めて各ノードを開始する前に、num_tokenプロパティをコメントアウトし、initial_token値を割り当てます。これらは、cassandra.yaml 構成ファイルで行います。

トークン・ジェネレーターの使用

使用法:
  • パッケージ・インストール:
    token-generator num_of_nodes_in_dc ... [options]
  • tarボール・インストール:
    installation_location/resources/cassandra/tools/bin/token-generator num_of_nodes_in_dc ... [options]
    注: オプションが入力されていない場合、Token Generator Interactive Modeが呼び出されます。
オプション 説明
ヘルプ
  • -h
  • --help
ヘルプを表示します。
パーティショナー
  • --murmur3
  • --random
パーティショナーを指定します。
  • Murmur3Partitionerでは、ハッシュ値の可能な最大範囲、-263~+263-1を使用します。指定されていない場合のデフォルトのパーティショナー。
  • ランダム・パーティショナーでは、0~2127-1の範囲を使用します。DataStax Enterprise 3.1/Apache Cassandra 1.2以前のデフォルト・パーティショナー。
トークン値のオフセット
  • --ringoffset offset
デッド・ノードまたはデータ・センターを追加および交換する際に使用します。
リング範囲
  • --ringrange range_start range_end
所定の範囲内で、トークン値を指定します。
テスト
  • --test
さまざまなリング配置を表示し、これらの配置を表示しているHTMLファイルを生成します。

1つのラックを持つ単一データ・センターのトークンを計算する

たとえば、
token-generator 6

DC #1:
  Node #1:  -9223372036854775808
  Node #2:  -6148914691236517206
  Node #3:  -3074457345618258604
  Node #4:                    -2
  Node #5:   3074457345618258600
  Node #6:   6148914691236517202

複数のラックを持つ単一データ・センターのトークンを計算する

DataStaxでは、各ラックに同じ数のノードを持たせることを推奨しています。こうすれば、ラック割り当てを交互に入れ替えることができます。

  1. トークンを計算します。
    token-generator 8
    
    DC #1:
      Node #1:  -9223372036854775808
      Node #2:  -6917529027641081856
      Node #3:  -4611686018427387904
      Node #4:  -2305843009213693952
      Node #5:                     0
      Node #6:   2305843009213693952
      Node #7:   4611686018427387904
      Node #8:   6917529027641081856
    
  2. ラックを入れ替える際のトークンをノードに割り当てます。この場合、cassandra-rackdc.properties ファイルまたはcassandra-topology.properties ファイルを使用します。
    1. ラック割り当ての入れ替え

複数のデータ・センター・クラスターのトークンを計算する

注: このタイプのクラスターでは、SimpleStrategyを使用しないでください。NetworkTopologyStrategyを使用する必要があります。このストラテジにより、各データ・センター内でレプリカ配置を単独で特定します。
たとえば、
  1. トークンを計算します。
    token-generator 4 4
    
    DC #1:
      Node #1:  -9223372036854775808
      Node #2:  -4611686018427387904
      Node #3:                     0
      Node #4:   4611686018427387904
    DC #2:
      Node #1:  -4690182801719768975
      Node #2:    -78496783292381071
      Node #3:   4533189235135006833
      Node #4:   9144875253562394737
  2. トークンの計算後、トークンを割り当てることで、各データ・センター内のノードは、リングの周りで均等に分散されます。
    2. トークンの位置とデータ・センターの割り当て
    データ・センター1
    データ・センター2
    トークンの位置 トークンの位置
  3. 上記で説明している通りに、ラック割り当てを交互に入れ替えます。

ノード/データ・センターを追加または交換する際にトークンを計算する

衝突を防ぐために--ringoffsetオプションを使用します。
  1. オフセットを持つトークンを以下のように計算します。
    token-generator 3 2 --ringoffset 100
    結果には、オフセットを使用して3つのノードを持つ1つのデータ・センターと2つのノードを持つ1つのデータ・センター向けに、Murmur3Partitionerの生成されたトークン値が表示されます。
    DC #1:
      Node #1:   6148914691236517105
      Node #2:  12297829382473034310
      Node #3:  18446744073709551516
    DC #2:
      Node #1:   9144875253562394637
      Node #2:  18368247290417170445
    オフセット値は最初のノード向けで、均一な分散に備えて、オフセットからその他すべてのノードは計算されます。
    オフセットなしのトークンには以下のものがあります。
    token-generator 3 2
    
    DC #1:
      Node #1:  -9223372036854775808
      Node #2:  -3074457345618258603
      Node #3:   3074457345618258602
    DC #2:
      Node #1:    -78496783292381071
      Node #2:   9144875253562394737
  2. トークンの計算後、トークンを割り当てることで、各データ・センター内のノードは、リングの周りで均等に分散され、ラック割り当てを交互に入れ替えます。