Notre cluster Cassandra est constitué de trois noeuds. Les trois noeuds correspondent à trois instances EC2 (AWS) appartenant à la même région (us-east-1) mais à trois zones de disponibilité différentes (us-east-1a, us-east-1b, us-east-1c).
Les trois instances EC2 ont été créées directement sur la plateforme AWS. Nous avons choisi des images AMI Ubuntu 18.04.
Afin d'installer et de configurer Cassandra sur les trois instances, nous nous sommes connectés à chacune d'entre elles.
Dans le terminal, la commande est la suivante :
ssh -v [email protected] -i ~/Downloads/gdeltKeyPair.pem
Une fois connecté, les étapes suivantes ont été réalisées :
- Ajout du repo webupd8 au système :
sudo add-apt-repository ppa:webupd8team/java
- Mise à jour des packages :
sudo apt-get update
- Installation de java :
sudo apt install openjdk-8-jre-headless
Ensuite, il a fallu ajouter des variables d'environnement afin d'indiquer au système le chemin du répertoire d'exécution. Pour cela, nous avons modifié le fichier .bashrc de la façon suivante :
- Ouverture du fichier .bashrc avec un éditeur de texte (ici Vim) :
vi ~/.bashrc
- Ajout des variables d'environnement :
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
Ne pas oublier de les charger avec la commande :
source ~/.bashrc
Ces commandes ont été effectuées sur chaque instance.
- Téléchargement du fichier d'installation (janvier 2020) :
wget http://archive.apache.org/dist/cassandra/3.11.3/apache-cassandra-3.11.3-bin.tar.gz
- Décompression du fichier zip :
tar -xvf apache-cassandra-3.11.3-bin.tar.gz
- Suppression du fichier zip :
rm apache-cassandra-3.11.3-bin.tar.gz
- Suppression du fichier zip :
rm apache-cassandra-3.11.3-bin.tar.gz
Cassandra est désormais installé dans le /home de l'instance. Ces commandes ont été effectuées sur chaque instance avant de passer à l'étape suivante.
- Positionnement dans le dossier de configuration de Cassandra :
cd apache-cassandra-3.11.3/conf/
Nous avons configuré deux fichiers : cassandra.yaml et cassandra-rackdc.properties.
Configuration du fichier cassandra.yaml
- Ouverture du fichier cassandra.yaml :
vi cassandra.yaml
- Modification des éléments suivants :
seeds : "ip_noeud1,ip_noeud2,ip_noeud3"
endpoint_snitch : Ec2Snitch
listen_address : ip privée du noeud en question sans guillemets
rpc_address : ip privée du noeud en question sans guillemets
Ec2Snitch est utilisé car nous développons le cluster dans une seule région. Comme notre facteur de réplication était de 3 dans la région USA Est (Virginie du Nord), us-east-1, alors le paramètre Ec2Snitch permet la réplication des données sur les zones de disponibilité dans us-east-1. Chaque opération d'écriture a été répliquée sur les nœuds de nos trois zones de disponibilité (us-east-1a, us-east-1b et us-east-1c). Chaque zone de disponibilité était un rack différent.
Configuration du fichier cassandra-rackdc.properties
Les éléments relatifs aux datacenters (dc=dc1) et aux racks (rack=rack1) ont été commentés.
Ces étapes ont été réalisées sur chaque noeud avant de démarrer Cassandra.
Sur chaque noeud, nous avons effectué les opérations suivantes :
- Positionnement dans le dossier /bin de Cassandra :
cd apache-cassandra-3.11.3/bin/
- Exécution de Cassandra :
./cassandra
Cassandra a démarré et la présence du mot "HANDSHAKE" dans certaines lignes nous a indiqué que les noeuds communiquaient.
Nous avons également vérifié l'état des différents noeuds avec la commande :
./nodetool status