Guide des technologies

Installer Apache Cassandra sur CentOS 8

6 min read Bases de données Mis à jour 19 Oct 2025
Installer Apache Cassandra sur CentOS 8
Installer Apache Cassandra sur CentOS 8

Illustration d'Apache Cassandra en cours d'installation sur CentOS 8

Pourquoi choisir Cassandra

Apache Cassandra est une base de données NoSQL distribuée, tolérante aux pannes et sans point de défaillance unique. Elle réplique automatiquement les données sur plusieurs nœuds et permet des remplacements de nœuds sans interruption. Utilisez Cassandra pour les applications qui exigent haute disponibilité, montée en charge horizontale et faible latence en lecture/écriture.

Définition rapide : NoSQL — base de données non relationnelle conçue pour la scalabilité horizontale et la tolérance aux pannes.

Exigences

  • Un serveur CentOS 8 avec au moins 2 Go de RAM.
  • Accès root ou privilèges sudo.
  • Accès Internet pour télécharger les paquets et le dépôt DataStax.

Important : pour un déploiement de production, prévoyez davantage de RAM (8–16 Go selon la charge) et plusieurs nœuds dans un cluster.

Mise à jour du serveur

Avant d’installer quoi que ce soit, mettez à jour le système :

dnf update

Redémarrez si le noyau ou des paquets critiques ont été mis à jour.

Installer Java et Python2

Cassandra nécessite OpenJDK 8 et Python 2 (pour certains scripts). Installez-les ainsi :

dnf install java-1.8.0-openjdk-devel python2

Vérifiez la version de Java :

java -version

Exemple de sortie attendue : OpenJDK 1.8.x (les numéros peuvent varier selon la version installée).

Ajouter le dépôt Apache Cassandra (DataStax)

Cassandra n’est pas inclus dans les dépôts CentOS 8 par défaut. Créez un fichier de dépôt :

nano /etc/yum.repos.d/cassandra.repo

Ajoutez :

[cassandra]
name = DataStax Repo for Apache Cassandra
baseurl = http://rpm.datastax.com/community
enabled = 1
gpgcheck = 0

Enregistrez et fermez.

Installez le paquet :

dnf install dsc20

Remarque : le paquet et la version peuvent évoluer. Si vous utilisez un autre fournisseur ou une version d’Apache Cassandra pure, adaptez le dépôt.

Créer une unité systemd pour Cassandra

Le paquet peut ne pas créer d’unité systemd fonctionnelle pour CentOS 8. Créez-la pour gérer le service :

nano /etc/systemd/system/cassandra.service

Contenu recommandé (corrigé pour systemd) :

[Unit]
Description=Apache Cassandra
After=network.target

[Service]
Type=forking
PIDFile=/var/run/cassandra/cassandra.pid
User=cassandra
Group=cassandra
ExecStart=/usr/sbin/cassandra -R -p /var/run/cassandra/cassandra.pid
Restart=on-failure
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target

Explication rapide : nous utilisons Type=forking et LimitNOFILE pour des valeurs réalistes en production. Ajustez ExecStart si le binaire est ailleurs.

Rechargez systemd, démarrez et activez le service :

systemctl daemon-reload
systemctl start cassandra
systemctl enable cassandra
systemctl status cassandra

Vous devriez voir le service actif (running) et des journaux indiquant l’écoute sur les ports CQL/Thrift.

Vérifier l’installation

Utilisez nodetool pour vérifier l’état du nœud :

nodetool status

Exemple de sortie attendue (UN signifie Up/Normal) :

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens  Owns (effective)  Host ID                               Rack
UN  127.0.0.1  46.11 KB   256     100.0%            2a680007-8c30-4bde-9a3f-9fa212b96d11  rack1

Critère minimal d’acceptation : le nœud local doit apparaître comme UN pour être considéré opérationnel.

Accéder à CQL Shell (cqlsh)

Pour ouvrir le client CQL :

cqlsh

Vous devriez voir une ligne de connexion indiquant le nom du cluster. Exemple :

Connected to Test Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh>

Changer le nom du cluster depuis cqlsh :

cqlsh> UPDATE system.local SET cluster_name = 'HowtoForge Cluster' WHERE KEY = 'local';
cqlsh> exit;

Puis mettez à jour le fichier de configuration et redémarrez :

nano /etc/cassandra/default.conf/cassandra.yaml

Modifiez :

cluster_name: 'HowtoForge Cluster'

Appliquez les changements :

nodetool flush system
systemctl restart cassandra
cqlsh

Vérifiez que cqlsh affiche le nouveau nom de cluster.

Configuration réseau et ports

Par défaut Cassandra écoute localement. Pour un accès réseau, éditez cassandra.yaml (listen_address, rpc_address, broadcast_address) et ouvrez les ports nécessaires dans le pare-feu :

  • CQL natif : 9042 (TCP)
  • Thrift (si utilisé) : 9160 (TCP)
  • Internode (gossip/heartbeat) : 7000 (TCP non chiffré) et 7001 (TCP chiffré)
  • JMX : 7199 (TCP) — restreindre l’accès

Exemple pour ouvrir 9042 et 9160 :

firewall-cmd --add-port=9042/tcp --permanent
firewall-cmd --add-port=9160/tcp --permanent
firewall-cmd --reload

Note : en production, limitez l’accès par réseau privé/VPC et utilisez le chiffrement et l’authentification.

Sécurité et bonnes pratiques

  • Désactivez Thrift si vous n’en avez pas besoin (version récente de Cassandra privilégie CQL). Thrift est obsolète.
  • Activez l’authentification interne et les rôles (authenticator: PasswordAuthenticator) pour limiter l’accès.
  • Activez le chiffrement des communications internode (ssl) et chiffrez les sauvegardes au repos.
  • Ne laissez pas JMX exposé publiquement. Protégez avec un tunnel SSH ou ACLs réseau.
  • Sauvegardes régulières et tests de restauration.

Playbook rapide d’exploitation (SOP)

  1. Vérifier le statut du nœud : nodetool status
  2. Consulter les logs : journalctl -u cassandra -f
  3. Vérifier l’utilisation mémoire et disque (top, free -h, df -h)
  4. Appliquer les correctifs Java si besoin, puis redémarrer le service en dehors des heures de pointe.
  5. Pour remplacer un nœud défaillant :
    • Retirer le nœud du cluster si nécessaire (nodetool removenode)
    • Installer sur le nouveau serveur et joindre le cluster
    • Laisser la réplication se rééquilibrer

Guide de dépannage rapide

Scénario : nœud en état DN (Down/Normal)

  • Vérifiez si le processus Java est en cours : ps aux | grep cassandra
  • Consulter les logs (/var/log/cassandra/system.log et journalctl)
  • Vérifier l’espace disque et les descripteurs de fichiers
  • Vérifier la connectivité inter-nœuds (ports, DNS)

Scénario : cqlsh ne se connecte pas

  • Vérifier que le port 9042 est à l’écoute : ss -plnt | grep 9042
  • Vérifier cassandra.yaml pour rpc_address/listen_address
  • Vérifier les règles de pare-feu

Critères d’acceptation

  • Le service systemd cassandra est actif et en fonctionnement.
  • nodetool status retourne le nœud local avec l’état UN.
  • cqlsh se connecte et peut exécuter une requête simple (SELECT now() FROM system.local;).
  • Les ports nécessaires sont fermés au public et ouverts pour les pairs autorisés.

Migration et compatibilité

  • Sauvegardez les données (snapshot) avant toute mise à niveau majeure.
  • Vérifiez la compatibilité des versions Java et Cassandra.
  • Testez la mise à niveau sur un environnement de staging identique à la production.

Fiche pratique (cheat sheet)

  • Mettre à jour le système : dnf update
  • Installer Java : dnf install java-1.8.0-openjdk-devel
  • Installer Cassandra : dnf install dsc20
  • Gérer le service : systemctl {start|stop|restart|status} cassandra
  • Vérifier le cluster : nodetool status
  • Ouvrir le shell CQL : cqlsh

Exemples de tests/critères d’acceptation

  • Test de connexion : cqlsh doit accepter une commande USE system; et retourner un prompt sans erreur.
  • Test d’écriture/lecture : créer une table test, INSERT puis SELECT et vérifier la cohérence.
  • Test de redémarrage : redémarrer un nœud et vérifier la réintégration sans perte de données visibles.

Résumé

Vous avez installé Apache Cassandra, configuré une unité systemd, vérifié le service avec nodetool et cqlsh, et appris des pratiques de sécurité et d’exploitation. Pour la production, multipliez les nœuds, limitez les accès réseau et automatisez les sauvegardes.

Important : adaptez cassandra.yaml et les paramètres JVM (heap, GC) selon la taille mémoire de votre machine.

FAQ rapide :

Q : Dois-je utiliser Thrift ? R : Non, CQL natif (port 9042) est recommandé. Thrift est obsolète.

Q : Quelle version de Java utiliser ? R : OpenJDK 8 est compatible pour les versions classiques de Cassandra; vérifiez la compatibilité pour les versions plus récentes.

Si vous voulez, je peux fournir un modèle de cassandra.yaml commenté, un playbook Ansible pour déployer un cluster ou une checklist d’audit de sécurité.

Auteur
Édition

Matériaux similaires

Optimiser l'emplacement du routeur Wi‑Fi
réseau

Optimiser l'emplacement du routeur Wi‑Fi

Enregistrer un stationnement dans Google Maps
Guides

Enregistrer un stationnement dans Google Maps

Prime Video ne fonctionne pas sur iPhone — Guide
Dépannage

Prime Video ne fonctionne pas sur iPhone — Guide

Arbitrage crypto : guide complet et bots
Cryptomonnaie

Arbitrage crypto : guide complet et bots

Devenir influenceur Instagram au Royaume‑Uni
Réseaux sociaux

Devenir influenceur Instagram au Royaume‑Uni

Fenêtres flottantes sur Android Nougat — guide
Android

Fenêtres flottantes sur Android Nougat — guide