LoginSignup
19
17

More than 5 years have passed since last update.

Cassandra クラスターの構築

Last updated at Posted at 2016-01-31

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.yamlseeds, 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.yamlseeds, 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
19
17
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
17