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

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

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

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

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

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

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

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

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

トークン・ジェネレーターを使用する

使用法:
  • パッケージおよびInstaller-Servicesのインストール:
    $ token-generator num_of_nodes_in_dc ...[options]
  • tarボールおよびInstaller-No Servicesのインストール:
    $ 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-topologies.propertiesファイルでラックを入れ替える際のトークンをノードに割り当てます。
    図: ラック割り当ての入れ替え

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

注: このタイプのクラスターでは、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. トークンの計算後、トークンを割り当てることで、各データ・センター内のノードは、リングの周りで均等に分散されます。
    図: トークンの位置とデータ・センターの割り当て

    データ・センター1

    データ・センター2

    トークンの位置:Tokenの番号

  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. トークンの計算後、トークンを割り当てることで、各データ・センター内のノードは、リングの周りで均等に分散され、ラック割り当てを交互に入れ替えます。
cassandra.yamlファイルの場所は、インストールのタイプによって異なります。

パッケージ・インストールInstaller-Servicesインストール

/etc/dse/cassandra/cassandra.yaml

tarボール・インストールInstaller-No Servicesインストール

installation_location/resources/cassandra/conf/cassandra.yaml
cassandra-rackdc.propertiesファイルの場所は、インストールのタイプによって異なります。

パッケージ・インストールInstaller-Servicesインストール

/etc/dse/cassandra/cassandra-rackdc.properties

tarボール・インストールInstaller-No Servicesインストール

installation_location/resources/cassandra/conf/cassandra-rackdc.properties
cassandra-topology.propertiesファイルの場所は、インストールのタイプによって異なります。

パッケージ・インストールInstaller-Servicesインストール

/etc/dse/cassandra/cassandra-topology.properties

tarボール・インストールInstaller-No Servicesインストール

installation_location/resources/cassandra/conf/cassandra-topology.properties