initial_tokenの設定


強いハッシュ関数を使うとキーは均一に分散されるはずだけど、MD5は強くないらしい。

```
# nodetool ring
Note: Ownership information does not include topology, please specify a keyspace.
Address         DC          Rack        Status State   Load            Owns                Token
                                                                                           161038431783640996747061834539477326541
10.10.10.1        datacenter1 rack1       Up     Normal  56.08 KB        59.76%              92566278802770359146832254620092330417
10.10.10.2        datacenter1 rack1       Up     Normal  60.69 KB        5.16%               101344869056471442016922121422834278883
10.10.10.3        datacenter1 rack1       Up     Normal  56.18 KB        18.41%              132670840620665264014573975366691587616
10.10.10.4        datacenter1 rack1       Up     Normal  60.49 KB        5.90%               142707366785106214210137953545520747214
10.10.10.5        datacenter1 rack1       Up     Normal  56.18 KB        10.77%              161038431783640996747061834539477326541
```

バッラバラ。
データが入っていないのでinitial_tokenを設定する。

##プロセス止めてもOKな場合

1.まずプロセスを落とす

```
# /etc/init.d/cassandra stop
```

2.データ削除

```
# rm -rf /var/lib/cassandra/data/*
# rm -rf /var/lib/cassandra/commitlog/*
# rm -rf /var/lib/cassandra/aved_caches/*
```

3.initial_tokenを計算する

```
# token-generator 5
DC #1:
  Node #1:                                        0
  Node #2:   34028236692093846346337460743176821145
  Node #3:   68056473384187692692674921486353642290
  Node #4:  102084710076281539039012382229530463435
  Node #5:  136112946768375385385349842972707284580
```

4.各Nodeごとにinitial_tokenを設定

```/etc/cassandra/cassandra.yaml
# Node1
initial_token: 0
# Node2
initial_token: 34028236692093846346337460743176821145
# Node3
initial_token: 68056473384187692692674921486353642290
# Node4
initial_token: 102084710076281539039012382229530463435
# Node5
initial_token: 136112946768375385385349842972707284580
```

5.起動

```
# /etc/init.d/cassandra start
Starting Cassandra:                                        [  OK  ]
```

6.リング確認

```
# nodetool ring
Note: Ownership information does not include topology, please specify a keyspace.
Address         DC          Rack        Status State   Load            Owns                Token
10.34.68.186    datacenter1 rack1       Up     Normal  9.08 KB         100.00%             0
```

からの

```
# nodetool ring
Note: Ownership information does not include topology, please specify a keyspace.
Address         DC          Rack        Status State   Load            Owns                Token
                                                                                           34028236692093846346337460743176821145
10.10.10.1        datacenter1 rack1       Up     Normal  13.51 KB        80.00%              0
10.10.10.2        datacenter1 rack1       Up     Normal  ?               20.00%              34028236692093846346337460743176821145
```

いい感じ

```
# nodetool ring
Note: Ownership information does not include topology, please specify a keyspace.
Address         DC          Rack        Status State   Load            Owns                Token
                                                                                           136112946768375385385349842972707284580
10.10.10.1        datacenter1 rack1       Up     Normal  6.72 KB         60.00%              0
10.10.10.2        datacenter1 rack1       Up     Normal  13.51 KB        20.00%              34028236692093846346337460743176821145
10.10.10.3        datacenter1 rack1       Up     Normal  6.72 KB         20.00%              68056473384187692692674921486353642290
10.10.10.4        datacenter1 rack1       Up     Joining 6.72 KB         0.00%               102084710076281539039012382229530463435
10.10.10.5        datacenter1 rack1       Up     Joining 4.58 KB         0.00%               136112946768375385385349842972707284580
```

Joining!!

```
# nodetool ring
Note: Ownership information does not include topology, please specify a keyspace.
Address         DC          Rack        Status State   Load            Owns                Token
                                                                                           136112946768375385385349842972707284580
10.10.10.1        datacenter1 rack1       Up     Normal  15.57 KB        20.00%              0
10.10.10.2        datacenter1 rack1       Up     Normal  6.72 KB         20.00%              34028236692093846346337460743176821145
10.10.10.3        datacenter1 rack1       Up     Normal  6.72 KB         20.00%              68056473384187692692674921486353642290
10.10.10.4        datacenter1 rack1       Up     Normal  6.72 KB         20.00%              102084710076281539039012382229530463435
10.10.10.5        datacenter1 rack1       Up     Normal  4.58 KB         20.00%              136112946768375385385349842972707284580
```

ぴったんこカンカン

## オンラインで変更する場合

`nodetool move`を各ノードで実行

```
# nodetool -h ${NODE_IP} move ${割り当てるTOKEN}
```

時間がかかるらしいので、止めれるなら止めよう。