3台の仮想マシンで Cassandra クラスターを構築する手順です。
仮想マシンの作成にはVagrantを用いています。
環境
- Vagrant 1.7.4
- Ubuntu 14.04.3 LTS x 3
- Cassandra 2.1.12
Ubuntuは下記のVagrantfileを使って作っています。
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.define "node1" do |node1|
node1.vm.hostname = "node1"
node1.vm.network "private_network", ip: "192.168.10.10"
end
config.vm.define "node2" do |node2|
node2.vm.hostname = "node2"
node2.vm.network "private_network", ip: "192.168.10.11"
end
config.vm.define "node3" do |node3|
node3.vm.hostname = "node3"
node3.vm.network "private_network", ip: "192.168.10.12"
end
end
$ vagrant up
Cassandra のインストール (node1/node2/node3共通)
記事と同様にUbuntuサーバにCassandraにインストールしていきます。コマンドの詳しい意味は、記事を参考にしてください。ここでは、node1について書きますが、node2、node3も同様にCassandraをインストールしてください。
$ vagrant ssh node1
vagrant@node1:~$ sudo add-apt-repository -y ppa:openjdk-r/ppa
vagrant@node1:~$ sudo apt-get update
vagrant@node1:~$ sudo apt-get install -y openjdk-8-jdk
vagrant@node1:~$ echo 'JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"' | sudo tee -a /etc/environment
vagrant@node1:~$ source /etc/environment
vagrant@node1:~$ echo 'deb http://www.apache.org/dist/cassandra/debian 21x main' | sudo tee -a /etc/apt/sources.list.d/cassandra.list
vagrant@node1:~$ echo 'deb-src http://www.apache.org/dist/cassandra/debian 21x main' | sudo tee -a /etc/apt/sources.list.d/cassandra.list
vagrant@node1:~$ sudo apt-get update
vagrant@node1:~$ gpg --keyserver pgp.mit.edu --recv-keys 749D6EEC0353B12C
vagrant@node1:~$ gpg --export --armor 749D6EEC0353B12C | sudo apt-key add -
vagrant@node1:~$ sudo apt-get update
vagrant@node1:~$ sudo apt-get install -y cassandra
vagrant@node1:~$ sudo chmod 750 /var/run/cassandra
vagrant@node1:~$ sudo sed -i 's/CMD_PATT=.*/CMD_PATT="cassandra"/' /etc/init.d/cassandra
vagrant@node1:~$ sudo sed -i 's/^#HEAP_NEWSIZE=.*/HEAP_NEWSIZE="40M"/' /etc/cassandra/cassandra-env.sh | grep HEAP_NEWSIZE
vagrant@node1:~$ sudo sed -i 's/^#MAX_HEAP_SIZE=.*/MAX_HEAP_SIZE="100M"/' /etc/cassandra/cassandra-env.sh | grep MAX_HEAP_SIZE
Cassandra クラスターの設定
node1
node1 をシードサーバとして用いるため、auto_bootstrap
を無効化します。
vagrant@node1:~$ echo 'auto_bootstrap: false' | sudo tee -a /etc/cassandra/cassandra.yaml
その他、設定ファイル /etc/cassandra/cassandra.yaml
の seeds
, listen_address
, rpc_address
を下記のように設定します。
seeds | listen_address | rpc_address |
---|---|---|
192.168.10.10 | 192.168.10.10 | 192.168.10.10 |
設定が完了したら、Cassandraを起動します。
vagrant@node1:~$ sudo service cassandra start
vagrant@node1:~$ sudo service cassandra status
* Cassandra is running
# もし running ではない場合は、/var/log/cassandra/system.log を参照ください
node2, node3
node1 にて Cassandra の起動が完了したら、node2, node3 をクラスターに参加させます。
設定ファイル /etc/cassandra/cassandra.yaml
の seeds
, listen_address
, rpc_address
を下記のように設定します。nodeごとに設定が異なるので注意してください。
node | seeds | listen_address | rpc_address |
---|---|---|---|
node2 | 192.168.10.10 | 192.168.10.11 | 192.168.10.11 |
node3 | 192.168.10.10 | 192.168.10.12 | 192.168.10.12 |
設定が完了したら、Cassandraを起動します。
vagrant@node*:~$ sudo service cassandra start
vagrant@node*:~$ sudo service cassandra status
* Cassandra is running
# もし running ではない場合は、/var/log/cassandra/system.log を参照ください
node2, node3 同様にCassandraを起動させてください。
Cassandra クラスターの状態確認
最後に nodetool
でクラスターの状態を確認します。下記のように3台のノードが見えていれば、クラスターが構築できています。
vagrant@node1:~$ nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 192.168.10.10 51.66 KB 256 67.0% 428c5d05-09ce-460b-a864-1d554733ae38 rack1
UN 192.168.10.11 82.62 KB 256 66.1% 419775e2-f141-47a0-a6f2-4a3674ed1bfa rack1
UN 192.168.10.12 66.79 KB 256 66.8% 85d5b171-c8ac-439e-b7a4-a3c18aee8bdd rack1