Cassandraの構築を初めてやってみた

今回やった手順とかです

おもむろにスペックのいいサーバを用意しましょう。
今回は5台用意しました。

jdkとCassandraのインストールはCassandraクラスタと、DataStax OpsCenterの構築を見てインストールできます。
大変お世話になりましたm(_ _)m

ん?じゃなんでこのエントリー書いてるの?

という話になると思うのですが、ちょっと詰まった箇所があったのでメモとして書いておこうと思いました。

詰まったポイント1

OpsCenterから各ノードを設定してクライアントをインストールしようとしたら
JAVA_HOMEが見つからないと言われた('A`)マンドクセ
理由はjdkをソースでインストールして/usr/local/java/bin/javaにコマンドがあり
このせいで見つからないと(´・ω・`)
m9(^Д^)プギャー

JAVA_HOMEで取った対応

ln -s /usr/local/java/bin/java /usr/bin/

シンボリックリンクで強制的にJAVA_HOMEに合わせた。

見つからないと言われた理由はCassandraの方はjdkをソースで入れて、OpsCenterの方は公式のrpmパッケージで入れたので
お互いのJAVA_HOMEが違うからじゃないかなと・・・あくまで予想ですが。

詰まったポイント2

OpsCenterで見た時にリングがすごい偏ってしまって工エエェェ(´д`)ェェエエ工
って感じになりました・・・
正直Cassandraの構築自体初だったので、よくわからずググってググって
initial_tokenというものでこのリングの位置を決めているようでfmfm
更にググって
initial_tokenの設定
を発見キタ━━━━(゚∀゚)━━━━!!

token-generatorなるコマンドがあるとfmfm

ノードが5台だったので引数を5にして計算したものを
各ノードのcassandra.yamlのinitial_token: のところに追記して
Cassandraを起動
psコマンドでプロセス確認!
node01しかCassandraが起動していない・・・・
キョロ(ω・`))(´・ω・`)(( ´・ω)キョロ
Cassandraちゃんどこに行ったの?

Cassandraのログを見るとExceptionを吐いている・・・
NumberExceptionがガガガ・・・
initial_tokenの数字が宜しくなかったようで(´・ω・`)

initial_tokenの追記したところを全部消して
再起動したら起動はするけど、やっぱりリングがバラバラに(´;ω;`)ブワッ
node-tool moveでさっきの計算したinitail_tokenの数字を書いたら
範囲外みたいなエラーが出てmoveできず

調べてたら英語のサイトにinitial_tokenを計算するpythonがあってやってみたらいけた!!!
pythonは下記の通り。


$ python -c 'print [((2**64 / 5) * i) - 2**63 for i in range(5)]'
[-9223372036854775808L, -5534023222112865485L, -1844674407370955162L, 1844674407370955161L, 5534023222112865484L]

この5のところがノード数ですね。
なので


$ python -c 'print [((2**64 / ノード数) * i) - 2**63 for i in range(ノード数)]'

token-generatorで出た数字でうまくいかなかった理由はよくわかりませんが、pythonでうまくいきました。

こんな感じで綺麗なリングが表示できました。