単一トークン・アーキテクチャー・ノードのトークンを計算する
vnodeを使用しない場合、以下の手順を実行してトークンを計算してクラスター全体にわたってデータを均一に分散します。
このトピックでは、手動でトークンを計算する情報について説明します。
単一トークン・アーキテクチャーについて
仮想ノード(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が呼び出されます。
オプション | 説明 |
---|---|
ヘルプ
|
ヘルプを表示します。 |
パーティショナー
|
パーティショナーを指定します。
|
トークン値のオフセット
|
デッド・ノードまたはデータ・センターを追加および交換する際に使用します。 |
リング範囲
|
所定の範囲内で、トークン値を指定します。 |
テスト
|
さまざまなリング配置を表示し、これらの配置を表示している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では、各ラックに同じ数のノードを持たせることを推奨しています。こうすれば、ラック割り当てを交互に入れ替えることができます。
- トークンを計算します。
$ 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
- cassandra-rackdc.propertiesファイルまたはcassandra-topologies.propertiesファイルでラックを入れ替える際のトークンをノードに割り当てます。
複数のデータ・センター・クラスターのトークンを計算する
- トークンを計算します。
$ 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
- トークンの計算後、トークンを割り当てることで、各データ・センター内のノードは、リングの周りで均等に分散されます。
データ・センター1
データ・センター2
トークンの位置:Tokenの番号
- 上記で説明している通りに、ラック割り当てを交互に入れ替えます。
ノード/データ・センターを追加または交換する際にトークンを計算する
--ringoffset
オプションを使用します。- オフセットを持つトークンを以下のように計算します。
$ 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
- トークンの計算後、トークンを割り当てることで、各データ・センター内のノードは、リングの周りで均等に分散され、ラック割り当てを交互に入れ替えます。
パッケージ・インストールInstaller-Servicesインストール |
/etc/dse/cassandra/cassandra.yaml |
tarボール・インストールInstaller-No Servicesインストール |
installation_location/resources/cassandra/conf/cassandra.yaml |
パッケージ・インストールInstaller-Servicesインストール |
/etc/dse/cassandra/cassandra-rackdc.properties |
tarボール・インストールInstaller-No Servicesインストール |
installation_location/resources/cassandra/conf/cassandra-rackdc.properties |
パッケージ・インストールInstaller-Servicesインストール |
/etc/dse/cassandra/cassandra-topology.properties |
tarボール・インストールInstaller-No Servicesインストール |
installation_location/resources/cassandra/conf/cassandra-topology.properties |