CentOS6.5にCassandra2.1.5をインストール

O'reillyの「Cassandra: The Definitive Guide」という本を発売待ちしています(ちなみに発売はMay 2016 (est.)みたいです)。発売前から以下のURLからEarly Releaseを入手できたので、この本に合わせた環境をインストールしたメモです。
shop.oreilly.com

OS環境

Mac OS上にVagrant使って構築しています。ここに上記の本に合わせてCassandraの2.1.5をインストールします。

$ uname -a
Linux vagrant-centos65.vagrantup.com 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/redhat-release
 release 6.5 (Final)

事前準備

必要なパッケージをインストールします。

# yum -y install java-1.7.0-openjdk-devel wget

Cassandraインストール

旧バージョンのアーカイブを探す

今回は最新版ではない2.1.5パッケージをインストールするので、以下のURLからダウンロードリンクを取得します。
http://archive.apache.org/dist/cassandra/

ダウンロードと解凍

/usr/localにインストールします。

$ wget http://archive.apache.org/dist/cassandra/2.1.5/apache-cassandra-2.1.5-bin.tar.gz
# tar zxvf apache-cassandra-2.1.5-bin.tar.gz -C /usr/local

シンボリックリンク作成しておきます。

# ln -s /usr/local/apache-cassandra-2.1.5 /usr/local/cassandra

実行ユーザの作成

ここでは実行ユーザとしてcassandraユーザを作成して権限とユーザ環境変数JAVA_HOMEを調整します。

# user add cassandra
# chown -R cassandra:cassandra /usr/local/apache-cassandra-2.1.5 /usr/local/cassandra
# echo "export JAVA_HOME=$(readlink -f /usr/bin/javac | sed 's@/bin/javac@@')" >> /home/cassandra/.bash_profile

Cassandra起動

ユーザをスイッチして「-f」オプションつけてフォアグランドモードで起動します。ログがコンソールに表示されるので確認します。

# su - cassandra
$ /usr/local/cassandra/bin/cassandra -f

停止したい場合はCtrl+cで止まります。

サービス管理したい場合は/etc/init.dにスクリプト用意してあげます。

事前準備として/var/run以下にディレクトリを掘ってcassandraユーザに見えるようにしてあげてます。

# mkdir /var/run/cassandra /var/log/cassandra
# chown cassandra:cassandra /var/run/cassandra /var/log/cassandra

INITスクリプトソースコードはこちらで動かしてみました。
gist.github.com

CQL Shellで接続

別のコンソール立ち上げてCQL Shellで接続できることを確認します。

$ /usr/local/cassandra/bin/cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.5 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
cqlsh>

複数ノード

3台ノード構成組んでみる

上記の手順で3台構成を組んでみました。
それぞれのノードで/usr/local/cassandra/conf/cassandra.yamlを編集します。

Node1のcassandra.yaml
seeds:"192.168.33.11"
listen_address: 192.168.33.11
rpc_address: 192.168.33.11
Node2のcassandra.yaml
seeds:"192.168.33.11"
listen_address: 192.168.33.12
rpc_address: 192.168.33.12
Node3のcassandra.yaml
seeds:"192.168.33.11"
listen_address: 192.168.33.13
rpc_address: 192.168.33.13

起動する

ログ

2台目以降を起動した際に以下のようなログが見られると思います。

INFO  14:27:06 Handshaking version with /192.168.33.12
INFO  14:27:08 Node /192.168.33.12 is now part of the cluster
INFO  14:27:08 InetAddress /192.168.33.12 is now UP
INFO  14:27:41 [Stream #9b8ebe70-d0cb-11e5-aab2-13b4c7a87e34 ID#0] Creating new streaming plan for Bootstrap
INFO  14:27:41 [Stream #9b8ebe70-d0cb-11e5-aab2-13b4c7a87e34, ID#0] Received streaming plan for Bootstrap
INFO  14:27:41 [Stream #9b8ebe70-d0cb-11e5-aab2-13b4c7a87e34, ID#0] Received streaming plan for Bootstrap
INFO  14:27:42 [Stream #9b8ebe70-d0cb-11e5-aab2-13b4c7a87e34] Session with /192.168.33.12 is complete
INFO  14:27:42 [Stream #9b8ebe70-d0cb-11e5-aab2-13b4c7a87e34] All sessions completed
コマンドで確認

コマンドからもノードが追加できていることが確認できます。

$ /usr/local/cassandra/bin/nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens  Owns (effective)  Host ID                               Rack
UN  192.168.33.13  124.52 KB  256     63.9%             4d7a2ce3-e796-487d-9b19-ae9206da7ec1  rack1
UN  192.168.33.12  110.79 KB  256     68.9%             4e90b880-9a8a-4226-9446-06013e1a9f2b  rack1
UN  192.168.33.11  187.14 KB  256     67.1%             92ba80ed-3190-4044-b912-455ea8b278f2  rack1


まずは、インストールまででした。