构建Cassandra集群

使用Vagrant创建3台虚拟机并构建Cassandra集群的步骤。

环境

    • 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 集群的配置

节点1

由于使用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設定如下。

seedslisten_addressrpc_address192.168.10.10192.168.10.10192.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 を参照ください

节点2,节点3。

当在节点1上启动Cassandra完成后,将节点2和节点3加入到集群中。

请注意,您需要根据每个节点的要求,将/etc/cassandra/cassandra.yaml文件的seeds、listen_address和rpc_address设置如下。

nodeseedslisten_addressrpc_addressnode2192.168.10.10192.168.10.11192.168.10.11node3192.168.10.10192.168.10.12192.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 を参照ください

请以同样的方式启动Cassandra节点2和节点3。

请检查Cassandra集群的状态。

最后使用nodetool来确认集群的状态。如果能看到以下三个节点,则表示集群已经构建成功。

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
bannerAds