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
まずは、インストールまででした。