intra-mart Accel Platform / Cassandra管理员指南

第8版 2014-04-01

«  4.3. Windows服务的登记/删除   ::   Contents   ::   4.5. Linux守护进程的登记,删除  »

4.4. Cassandra 的安装 for Linux

在此,对于在Linux环境下的 Cassandra 安装方法进行说明。

4.4.1. 展开文件

将通过 Apache Cassandra 的取得 下载的<apache-cassandra-1.1.12 -bin.tar.gz>文件展开到任意路径。

注解

本书中,作为例子指定了下述目录。

“/usr/local/cassandra”

注解

建立从展开到/usr/local/apache-cassandra-1.1.12 的内容
/usr/local/cassandra的符号连接,版本升级时会易于访问。
# ln -s /usr/local/apache-cassandra-1.1.12 /usr/local/cassandra

4.4.2. 各种设定

  • 启动 Cassandra 前需要以下设定。

4.4.2.1. Cassandra 的设定

  • 在编辑器中打开记述着 Cassandra 设定的</usr/local/cassandra/conf/cassandra.yaml>文件,进行编辑。
  • 关于cassandra.yaml文件相关详细情况,请参照“Cassandra 参考信息”的“cassandra.yaml主要项目一览”。
  1. 集群名的指定

    在“cluster_name” 属性中指定任意集群名称。
    cluster_name: 'IMBox Cluster'
    

    警告

    存在多个Cassandra服务器时,有可能根据集群名判断是否为同一集群的Cassandra,并组建成集群。
    新构筑 intra-mart Accel Platform 时,建议变更初始值。
  2. 数据保存场所的指定

    在“data_file_directories”属性中指定任意路径。
    指定的目录不存在时,会在启动时自动生成。
    data_file_directories:
      - /var/lib/cassandra/data
    
  3. 提交日志保存场所的指定

    在“commitlog_directory”属性中指定任意路径。
    指定的目录不存在时,会在启动时自动生成。
    # commit log
    commitlog_directory: /var/lib/cassandra/commit_log/1.1.12
    
  4. 缓存数据保存场所的指定

    在“saved_caches_directory”属性中指定任意路径。
    指定的目录不存在时,会在启动时自动生成。
    # saved caches
    saved_caches_directory: /var/lib/cassandra/saved_caches/1.1.12
    
  5. 指定与其他 Cassandra 通信用的地址

    Cassandra中虽然也接受用Java的InetAddress.getLocalHost()取得的IP地址与其他Cassandra进行通信,但有多个地址时,需要明确地指定通信中使用的IP地址。
    listen_address: 192.168.xxx.xxx(任意IP地址)
    
    rpc_address: 192.168.xxx.xxx(任意IP地址)
    
  6. 指定系统日志

    在编辑器中打开</usr/local/cassandra/conf/log4j-server.properties>文件,在“log4j.appender.R.File”属性中指定任意路径
    log4j.appender.R.File=/var/log/cassandra/1.1.12/system.log
    

警告

设定上的注意事项

根据OS和JDK版本的不同组合,有可能出现JVM参数的Xss不足,Cassandra启动失败的情况。
以确认会在以下组合发生。
  • OS: Linux系OS
  • JDK: Oracle JDK 1.7u40 , Oracle JDK 1.7u45

回避方法

可通过变更在${cassandra}/conf/cassandra-env.sh中设定的Xss的值来回避上述现象。

  • Cassandra的版本是1.1.4时

       if [ "`uname`" = "Linux" ] ; then
       # reduce the per-thread stack size to minimize the impact of Thrift
       # thread-per-client.  (Best practice is for client connections to
       # be pooled anyway.) Only do so on Linux where it is known to be
       # supported.
         if startswith "$JVM_VERSION" '1.7.'
         then
    #         JVM_OPTS="$JVM_OPTS -Xss160k"
           JVM_OPTS="$JVM_OPTS -Xss228k"
         else
           JVM_OPTS="$JVM_OPTS -Xss128k"
         fi
     fi
    
  • Cassandra的版本是1.1.12时

     if [ "`uname`" = "Linux" ] ; then
       # reduce the per-thread stack size to minimize the impact of Thrift
       # thread-per-client.  (Best practice is for client connections to
       # be pooled anyway.) Only do so on Linux where it is known to be
       # supported.
       # u34 and greater need 180k
    
      #     JVM_OPTS="$JVM_OPTS -Xss180k"
      JVM_OPTS="$JVM_OPTS -Xss228k"
    fi
    

4.4.2.2. 文件描述符数的变更

根据OS设定情况,在运行中有可能发生IOException, FileNotFoundException等, 而且 Cassandra 有可能无法正常动作。
这是由于 Cassandra 进程可使用(Open)的文件数上限超过了OS限制的上限数而造成的。
就是说,可通过在/etc/system/limits.conf 或/etc/security/limits.conf中添加下述与环境相符的OS文件描述符设定数
以下数目可以回避此问题,请变更成适当值。
* soft nofile 32768
* hard nofile 32768
root soft nofile 32768
root hard nofile 32768

※ 用户以及值只是示例,请设定与环境相符的适当值。

注解

文件描述符的当前设定值可通过

ulimit -n

来确认。

4.4.2.3. 内存设定

Linux环境时,在通过</usr/local/cassandra/conf/cassandra-env.sh>启动时,最大heap size(Xmx)会被自动设定为以下的值。
  • 搭载内存量是2048MB以下时,搭载内存的一半
  • 搭载内存量是2049MB以上、4099MB以下时,1024MB
  • 搭载内存量是4100MB以上、32768MB以下时,搭载内存量的1/4
  • 搭载内存量是32769MB以上时,搭载内存量的8196MB
若要将其设定为任意值,请将</usr/local/cassandra/conf/cassandra-env.sh>中以下项目的屏蔽去除,设定为任意值。
#MAX_HEAP_SIZE="4G"
#HEAP_NEWSIZE="800M"

警告

请在MAX_HEAP_SIZE中设定“512M”以上的值。
设定了比“512M”小的值时,有可能不会正常运行。
建议为Cassandra设定1GB以上的值。
请根据MAX_HEAP_SIZE的设定值,为HEAP_NEWSIZE设定适当的值。

4.4.2.4. 设定环境变量

在环境变量中添加安装了JDK的主目录。
在执行 Cassandra 的用户环境变量中,进行下述设定。
变量 JAVA_HOME
安装了JDK的主目录

«  4.3. Windows服务的登记/删除   ::   Contents   ::   4.5. Linux守护进程的登记,删除  »