在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
bannerAds