CentOS 6 – Cassandra

DevFrançaisLinuxTutorials

NetInstall minimal puis :

yum -y update
yum -y install wget openssh-clients nmap

Ajoutons notre hostname à la fin du fichier host

vi /etc/hosts

Installation du jdk

wget -c http://blog.quidquid.fr/jdk/jdk-7u51-linux-x64.tar.gz
tar zxf jdk-7u51-linux-x64.tar.gz
rm -f jdk-7u51-linux-x64.tar.gz
mv jdk1.7.0_51 /opt/
chown -R root:root /opt/jdk1.7.0_51
ln -s /opt/jdk1.7.0_51 /opt/jdk
cat >> ~/.bashrc << "EOF"
 
# -------------------------
export JAVA_HOME=/opt/jdk
PATH=$PATH:$JAVA_HOME/bin
 
EOF
&#91;/shell&#93;

Installation de cassandra:
&#91;shell&#93;
wget -c http://wwwftp.ciril.fr/pub/apache/cassandra/2.0.5/apache-cassandra-2.0.5-bin.tar.gz
tar zxf apache-cassandra-2.0.5-bin.tar.gz
mv apache-cassandra-2.0.5 /opt/
rm -f apache-cassandra-2.0.5-bin.tar.gz
ln -s /opt/apache-cassandra-2.0.5 /opt/apache-cassandra

groupadd cassandra
useradd -g cassandra cassandra

cat >> /home/cassandra/.bashrc << "EOF"
 
# -------------------------
export JAVA_HOME=/opt/jdk
PATH=$PATH:$JAVA_HOME/bin
 
EOF

mkdir /opt/apache-cassandra/log
chown -R cassandra:cassandra /opt/apache-cassandra
chown -R cassandra:cassandra /opt/apache-cassandra-2.0.5
&#91;/shell&#93;

Création du launcher :
&#91;shell&#93;
cat >> /etc/init.d/cassandra << "EOF"
#!/bin/bash
# chkconfig: 2345 99 01
# Description:    Cassandra Server.
# Processname: cassandra
# Config: $CASSANDRA_HOME/conf/cassandra.yaml

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

CASSANDRA_HOME=/opt/apache-cassandra
prog="Cassandra"
pidfile="/var/run/cassandra.pid"
progbin="$CASSANDRA_HOME/bin"
lock="/var/lock/subsys/cassandra"
logfile="$CASSANDRA_HOME/log/service-cassandra.log"

WriteLog()
{
    echo "<code>date</code>: $@" >> $logfile
}

LogInfo()
{
    echo "$@"
    WriteLog "INFO: $@"
}

LogWarning()
{
    echo "$@"
    WriteLog "WARNING: $@"
}

start()
{
    if [ -f $pidfile ] && checkpid <code>cat $pidfile</code>; then
        action "$prog is already running." /bin/false
        exit 0
    fi

    WriteLog "Starting $prog"

    daemon "$progbin/cassandra" -p $pidfile >> $logfile 2>&1
    usleep 500000
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        touch "$lock"
        action "Starting $prog" /bin/true
    else
        action "Starting $prog" /bin/false
    fi

    WriteLog "Started $prog"

    return $RETVAL
}

stop()
{
    $progbin/nodetool -h localhost disablethrift
    $progbin/nodetool -h localhost disablegossip
    $progbin/nodetool -h localhost drain
    WriteLog "Stopping $prog"
    CASSIEPID=<code>cat "$pidfile"  2>/dev/null </code>
    if [ -n "$CASSIEPID" ]; then
        /bin/kill "$CASSIEPID" >/dev/null 2>&1
        ret=$?
        if [ $ret -eq 0 ]; then
            STOPTIMEOUT=60
            while [ $STOPTIMEOUT -gt 0 ]; do
                /bin/kill -0 "$CASSIEPID" >/dev/null 2>&1 || break
                sleep 1
                let STOPTIMEOUT=${STOPTIMEOUT}-1
            done
            if [ $STOPTIMEOUT -eq 0 ]; then
                echo "Timeout error occurred trying to stop $prog Daemon"
                ret=1
                action $"Stopping $prog: " /bin/false
                LogInfo "Timeout error occurred trying to stop $prog Daemon pid($CASSIEPID)"
            else
                rm -f "$lock"
                action $"Stopping $prog: " /bin/true
                WriteLog "INFO: $prog Daemon Stopped pid($CASSIEPID)"
            fi
        else
            action $"Stopping $prog: " /bin/false
            WriteLog "WARNING: $prog Daemon Stop Failed pid($CASSIEPID)"
        fi
    else
        ret=1
        action $"Stopping $prog: " /bin/false
    fi
    return $ret
}

restart()
{
    LogInfo "Restart Initiated"
    stop
    start
}

ring()
{
    $progbin/nodetool -h localhost ring
}

info()
{
    $progbin/nodetool -h localhost info
}

netstats()
{
    $progbin/nodetool -h localhost netstats
}

repair()
{
    LogInfo "Starting Repair"
    $progbin/nodetool -h localhost repair
    LogInfo "Completed Repair"
}

cleanup()
{
    LogInfo "Starting Cleanup"
    $progbin/nodetool -h localhost cleanup
    LogInfo "Completed Cleanup"
}

version()
{
    $progbin/nodetool -h localhost version
}

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status cassandra
    ;;
  restart)
    restart
    ;;
  ring)
    ring
    ;;
  info)
    info
    ;;
  netstats)
    netstats
    ;;
  repair)
    repair
    ;;
  cleanup)
    cleanup
    ;;
  version)
    version
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|ring|info|netstats|repair|cleanup|version}"
    exit 1
esac

exit $?
EOF

Affectation des droits

chmod a+x /etc/init.d/cassandra

On renomme notre cluster, qui par défaut est Test Cluster, en SANGOKU, dans le fichier de configuration :

sed -i 's:Test Cluster:SANGOKU:' /opt/apache-cassandra/conf/cassandra.yaml

Reste à démarrer cassandra :

/etc/init.d/cassandra start

Et un petit coup de chkconfig histoire de lancer le tout au demarrage:

chkconfig --level 3 cassandra on
chkconfig --level 06 cassandra off
Previous
Centos 6 – Hadoop
Next
CentOS 6 – Cloudera

Leave a comment

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.