说明:本篇使用的是Cassandra1.2.0版本(由于Cassandra存在bug,目前好像只有JDK1.6.30支持),以在linux上安装为例。
第1章Cassandra集群配置
1.1条件
正确地搭建一个多节点多数据中心的集群的先决条件如下:
· 每个节点需要安装Cassandra.
· 集群的总节点数(好像没什么用)
· 集群的名称(默认“Test Cluster”就行)
· 集群中每个节点的IP
· 哪些节点做种子节点(其它节点用种子节点列表找到彼此并知晓集群的拓扑环.)
· 计划使用的snitch
· 如果节点在防火墙后,确保你所知道的端口能访问。可参考ConfiguringFirewall Port Access.
· 其它你可能需要的配置ChoosingNode Configuration Options 和Nodeand Cluster Configuration.
1.2网络拓扑结构
根据实际情况搭建自己的网络拓扑结构。
例如要配置4个节点的集群,可以配成1个RAC,2个数据中心,每个数据中心2个节点,每个数据中一个种子节点。如下图。
1.3单个Cassandra节点安装和配置
因为Cassandra集群中所有节点没有主从之分,所以每个节点的配置都差不多。选择其中1个节点服务器按下述步骤安装(简称node0)。
1.3.1安装
1、创建Cassandra用户及密码
[root@ node0 ~]# useradd javadev
[root@node0 ~]# passwd javadev
2、Cassandra1.2.0需要JDK1.6.30版本的JDK支持。
将此两个文件拷贝到刚才创建的用户的home目录(如/home/javadev)下。
安装JDK:
[javadev@node0 ~]$ chmod +x jdk-6u30-linux-x64.bin
[javadev@node0 ~]$./jdk-6u30-linux-x64.bin
设置Java环境变量:
JAVA_HOME=/home/javadev/jdk1.6.0_30
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
将上面2行写到.bash_profile。
安装Cassandra:
[javadev@node0 ~]$ tar –zxvf apache-cassandra-1.2.0.tar.gz
1.3.2基本配置
l Cassandra使用目录
在appache-cassandra-1.2.0/conf/cassandra.yaml文件中,修改如下配置项的文件目录(如果目录不存在,则需要创建)。
data_file_directories(如/home/javadev/apache-cassandra-1.2.0/data)
commitlog_directory(如/home/javadev/apache-cassandra-1.2.0/commitlog)
saved_caches_directory(如/home/javadev/apache-cassandra-1.2.0/saved_caches)
l 内存使用配置(可选)
在appache-cassandra-1.2.0/conf/cassandra-env.sh文件中,将下面两行的注释符“#”去掉,并调整为适当的大小。
#MAX_HEAP_SIZE="4G"
#HEAP_NEWSIZE="800M"
l Cassandra系统日志文件
在appache-cassandra-1.2.0/conf/log4j-server.properties文件中,修改Cassandra系统日志文件路劲,如: log4j.appender.R.File=/home/javadev/apache-cassandra-1.2.0/system.log
l cassandra.yaml配置
在cassandra.yaml文件中,根据2.2中的网络拓扑结构和服务器信息,做如下关键项修改(黑色字体为说明文字)。
node0:
cluster_name:'Test Cluster'(集群的名字)
num_tokens:256
seed_provider:
class_name:org.apache.cassandra.locator.SimpleSeedProvider
parameters:
-seeds: "192.168.0.188,192.168.0.193"(根据实际拓扑结构修改)
listen_address:192.168.0.193(节点ip地址)
rpc_address:0.0.0.0
endpoint_snitch:RackInferringSnitch
l 网络拓扑配置
在cassandra-topology.properties文件的配置为:
# CassandraNode IP=Data Center:Rack
192.168.0.193=DC1:RAC1
192.168.0.194=DC1:RAC1
192.168.0.188=DC2:RAC2
192.168.0.197=DC2:RAC2
最好还加个默认的数据中心和rack名称:default=DC1:RAC1
1.4集群中其它节点配置
1.4.1条件
最好相同的Cassandra用户名(如node0的是javadev,其它3台也创建此用户),安装好JDK。
1.4.2配置
在node0(刚才装好Cassandra的节点)使用如下命令将Cassandra目录拷贝到其它节点服务器(需要输入目标服务器javadev用户密码)。
[javadev@node0 ~]$ scp-r appache-cassandra-1.2.0 javadev@192.168.0.194:/home/javadev
然后在其它3个节点中修改cassandra.yaml文件的listen_address为本节点地址。
至此,Cassandra集群配置完成。
1.5启动集群
在启动之前,最后确定data_file_directories配置目录没有任何数据。并且先启动种子节点,然后启动其它节点。
进入appache-cassandra-1.2.0/bin目录,在每个节点执行:
[javadev@node0 bin]$./cassandra
如果没有出现异常信息,则启动正常。
1.6使用Cassandra-cli
进入appache-cassandra-1.2.0/bin目录,执行下面的命令连接Cassandra实例。
[javadev@node0 bin]$./cassandra-cli
1.7停止集群
进入appache-cassandra-1.2.0/bin目录,打开stop-server文件,注释“echo”所在行,将下两行的注释去掉。
# user=`whoami`
# pgrep -u $user -f cassandra| xargs kill -9
在每个节点执行下面命令即可停止集群。
[javadev@node0 bin]$ ./stop-server
参考:Initializing a multiple node cluster,InitializingMultiple Data Center Clusters on Cassandra