在CentOS 6.4上构建Cassandra 2.0.0-beta1
首先
将Cassandra 2.0.0-beta1从tarball安装到CentOS 6.4环境中的步骤备忘录。直到确认基本的运行正常为止。本次安装将使用5台物理服务器(cassandra[01-05].domain.local),每台服务器都安装了干净的CentOS 6.4操作系统。
★ Kernel を確認する
[cassandra[01-05]]# uname -a
Linux localhost 2.6.32-358.11.1.el6.x86_64 #1 SMP Wed Jun 12 03:34:52 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
★ ディストリビューションを確認する
[cassandra[01-05]]# cat /etc/redhat-release
CentOS release 6.4 (Final)
安装
安装Cassandra所需的Java。在此次安装中,使用Cassandra 2.0.0-beta1,因此必须使用Oracle提供的SunJDK 1.7.0_25,该版本要求JDK-1.7。如果尝试在JDK-1.6上运行,将在/var/log/cassandra/cassandra.log中输出“Unsupported major.minor version 51.0”。
★ SunJDK をインストールする
[cassandra[01-05]]# rpm -e $(rpm -qa | grep java) jdk
[cassandra[01-05]]# rpm -ihv ~/jdk-7u25-linux-x64.rpm
★ バージョンを確認する
[cassandra[01-05]]# java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
安装Cassandra。本次安装将从 tarball 安装到 /opt/cassandra 目录下。
★ 展開後に /opt/cassandra 以下に移動する
[cassandra[01-05]]# tar xvzf ~/apache-cassandra-2.0.0-beta1-bin.tar.gz
[cassandra[01-05]]# mv apache-cassandra-2.0.0-beta1 /opt/
[cassandra[01-05]]# rm -f /opt/cassandra
[cassandra[01-05]]# ln -s /opt/apache-cassandra-2.0.0-beta1 /opt/cassandra
★ ログとデータディレクトリを作成する
[cassandra[01-05]]# sudo mkdir -p /var/log/cassandra
[cassandra[01-05]]# mkdir -p /var/lib/cassandra
设定
设置Cassandra。需要对设置项”seeds”、”listen_address”和”rpc_address”进行必要的更改,还需要进行关于虚拟节点的附加设置以及在IPv6环境中运行的设置。 在本次设置中,将从5台物理服务器中选择3台作为seed节点。此外,”listen_address”必须指定可以相互连接的IP地址或可进行域名解析的域名。我们将在IPv6环境且存在DNS的环境中进行构建。
★ 設定を変更する
[cassandra[01-05]]# sed -i 's/- seeds: "127.0.0.1"/- seeds: "cassandra01.domain.local, cassandra02.domain.local, cassandra03.domain.local"/g' /opt/cassandra/conf/cassandra.yaml
[cassandra[01-05]]# sed -i "s/listen_address: localhost/listen_address: `hostname`.domain.local/g" /opt/cassandra/conf/cassandra.yaml
[cassandra[01-05]]# sed -i "s/rpc_address: localhost/rpc_address: `hostname`.domain.local/g" /opt/cassandra/conf/cassandra.yaml
[cassandra[01-05]]# sed -i 's/# num_tokens: 256/num_tokens: 4/g' /opt/cassandra/conf/cassandra.yaml
[cassandra[01-05]]# sed -i 's/JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=true"/JVM_OPTS="$JVM_OPTS -Djava.net.preferIPv4Stack=false"/g' /opt/cassandra/conf/cassandra-env.sh
[cassandra[01-05]]# echo "::1 localhost localhost.localdomain localhost6 localhost6.localdomain6" > /etc/hosts
创建一个启动 Cassandra 的脚本。最后只需调用 /opt/cassandra/bin/cassandra 的 shell 脚本,但是因为各种原因比较麻烦,所以需要简化。通过文件管理 Cassandra 的 PID,并将标准输出和标准错误输出重定向到日志文件。
★ 起動スクリプトを作成する
[cassandra[01-05]]# cat << 'EOS' > /etc/init.d/cassandra && sudo chmod +x /etc/init.d/cassandra
#!/bin/sh
CASSANDRA_ROOT_DIR=/opt/cassandra
CASSANDRA_BIN_DIR=${CASSANDRA_ROOT_DIR}/bin
CASSANDRA_LOG_DIR=/var/log/cassandra
CASSANDRA_RUN_DIR=/var/run/cassandra
case "$1" in
start)
if [ ! -d ${CASSANDRA_LOG_DIR} ]; then
mkdir ${CASSANDRA_LOG_DIR}
fi
if [ ! -d ${CASSANDRA_RUN_DIR} ]; then
mkdir ${CASSANDRA_RUN_DIR}
fi
if [ -e ${CASSANDRA_RUN_DIR}/cassandra.pid ]; then
if [ 1 -ne $(ps $(cat ${CASSANDRA_RUN_DIR}/cassandra.pid) | wc -l) ]; then
echo "NG: already running (pid=$(cat ${CASSANDRA_RUN_DIR}/cassandra.pid))"
exit 1
fi
fi
${CASSANDRA_BIN_DIR}/cassandra -p ${CASSANDRA_RUN_DIR}/cassandra.pid >> ${CASSANDRA_LOG_DIR}/cassandra.log 2>&1
echo "OK: running cassandra (pid=$(cat ${CASSANDRA_RUN_DIR}/cassandra.pid))"
;;
stop)
kill $(cat ${CASSANDRA_RUN_DIR}/cassandra.pid)
echo "OK: stopped cassandra"
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart"
esac
exit 0
EOS
确认行动
启动Cassandra节点。首先要启动的节点必须是在seeds中设置的其中之一。只要集群中有任何一个节点被设置为seeds,下一个要启动的节点可以是任何一个。最后,使用附带的nodetool命令获取集群信息。
★ ノードを起動する (同様に他のサーバでも行なう)
[cassandra[01-05]]# /etc/init.d/cassandra start
OK: running cassandra (pid=24225)
★ 接続されているノードのステータスを表示する
[cassandra[01-05]]# /opt/cassandra/bin/nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 2402:4200:1:52:5054:40ff:fe1a:d412 55.16 KB 4 10.5% 40be2f96-9871-45b9-81e8-03364816bd39 rack1
UN 2402:4200:1:52:5054:5eff:fee1:1174 58.55 KB 4 32.9% 36afe480-8b7d-4a42-9dae-979858f9395a rack1
UN 2402:4200:1:52:5054:60ff:fedb:ae9c 49.23 KB 4 16.1% 3824c783-6282-4615-99d9-58a8fc88bc4b rack1
UN 2402:4200:1:52:5054:7cff:fe4c:10cf 55.19 KB 4 21.3% bc53b062-4258-4c03-ad6f-f9d482728c4e rack1
UN 2402:4200:1:52:5054:6cff:fefc:7aa 49.28 KB 4 19.2% 1a917447-b882-4f39-9b4d-cc87db860d36 rack1
参考来源包括文献资料等
-
- Datastax Apache Cassandra 1.2
-
- Apache Cassandra 1.1.0のインストールと動作確認
-
- Cassandraセットアップ
-
- Apache CassandraでNoSQLに挑戦 前編
-
- Cassandraメモその1(インストール、データモデル、データ操作について)
- Cassandra の自動起動 Shellscript