Datalbi  
Créé le 29/08/2016 par Laurent Bourcier

Installation de Cassandra 3.7 sous CentOS 7.1

Le but est d'installer un cluster cassandra 3.7 (version communautaire Apache).

Le cluster est constitué de 3 noeuds :

cassandra01.datalbi.com    192.168.56.141
cassandra02.datalbi.com    192.168.56.142
cassandra03.datalbi.com    192.168.56.143

Prérequis hardware

Voici la configuration par serveur :

CPU : un processeur est suffisant
Mémoire : 4 Go minimum, 8 Go conseillé
Disque : maximum 500 Go

Prérequis système

On part d'une installation minimale de CentOS 7.1.

Les seuls prérequis pour Cassandra sont :

Installer le jdk 8 que l'on aura préalablement téléchargé:

cd /opt
tar xf /root/jdk-8u91-linux-x64.tar

Il est conseillé d'utiliser un compte linux dédié pour exécuter Cassandra. On crée donc un groupe et un compte cassandra :

groupadd -g 400 cassandra
useradd -g cassandra -u 400 -m cassandra
passwd cassandra

Si le firewall est activé, le désactiver :

systemctl disable firewalld
systemctl stop firewalld

Installation

A l'heure ou est écrit cet article, il n'existe pas de paquetage rpm pour installer Cassandra en version communautaire. On doit donc installer les fichiers manuellement.

Télécharger le fichier apache-cassandra-3.7.bin.tar à l'adresse http://cassandra.apache.org/download.

Extraire le contenu du fichier :

su -
cd /opt
tar xf /root/apache-cassandra-3.7.bin.tar
chown -R cassandra:cassandra /opt/apache-cassandra-3.7

Mettre à jour les variables d'environnement pour le compte linux cassandra :

su - cassandra
vi .bashrc
# Ajouter les lignes suivantes
export JAVA_HOME=/opt/jdk1.8.0_91
export CASSANDRA_HOME=/opt/apache-cassandra-3.7
export PATH=$PATH:$JAVA_HOME/bin:$CASSANDRA_HOME/bin

Créer les répertoires qui vont acceuillir les données :

su -
mkdir /var/lib/cassandra
mkdir /var/lib/cassandra/data
mkdir /var/lib/cassandra/commitlog
mkdir /var/lib/cassandra/hints
mkdir /var/lib/cassandra/saved_caches
chown -R cassandra:cassandra /var/lib/cassandra

Configuration

Modifier dans le fichier $CASSANDRA_HOME/conf/cassandra.yaml les variables ci-dessous en prenant soins de respecter les espaces et retour à la ligne.

# Nom du cluster
cluster_name : 'cassandra'

# Adresse d'ecoute pour la communication inter-noeuds
# Utiliser l'adresse du noeud
listen_address: 192.168.56.141

# Adresse d'ecoute pour la communication avec les clients
# Utiliser l'adresse du noeud
rpc_address: 192.168.56.141

# Adresses pour le bootstrap
# Preco : 3 IP par Data Center
seed_provider:
        - seeds : "192.168.56.141,192.168.56.142,192.168.56.143"

# Definition de la topologie
# GossipingPropertyFileSnitch = definition du noued local dans le fichier cassandra-rackdc.properties
# puis propagation par le protocole Gossip
endpoint_snitch: GossipingPropertyFileSnitch

# Repertoire des fichiers hinted handoff
hints_directory: /var/lib/cassandra/hints

# Repertoire des fichiers de donnee
data_file_directories:
    - /var/lib/cassandra/data

# Repertoire des fichier commitlog
commitlog_directory: /var/lib/cassandra/commitlog

# Repertoire des fichiers saved cache
saved_caches_directory: /var/lib/cassandra/saved_caches

Modifier le nom du Data Center et du Rack dans le fichier $CASSANDRA_HOME/conf/cassandra-rackdc.properties

dc: dc1
rack: rack1

Démarrage du cluster

Sur chaque noeud :

su - cassandra
cd $CASSANDRA_HOME
bin/cassandra

Le démarrage s'exécute de lui-même en background.

Statut

su - cassandra
nodetool status

Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens       Owns (effective)  Host ID                               Rack
UN  192.168.56.141  178,04 KiB  256          71,6%             a52103c7-8554-4a0a-934d-fbf0f172212d  rack1
UN  192.168.56.142  171,56 KiB  256          60,1%             47007c0e-fe14-406b-beb1-9dc12d74232a  rack1
UN  192.168.56.143  171,27 KiB  256          68,3%             9f034b97-1896-445f-96ad-b41cd36ed863  rack1

Arrêt du cluster

Sur chaque noeud :

ps -ef | grep java
# noter le pid de cassandra
kill no_du_pid