Apache Cassandra est un système de gestion de base de données distribué NoSQL gratuit et open-source créé par Facebook (maintenant Meta). La nature distribuée de Cassandra permet une haute disponibilité et des performances élevées sans point de défaillance unique.
En raison de son évolutivité, Cassandra convient aux ensembles de données actifs et critiques massifs. De grandes et célèbres organisations telles qu'Apple, Bloomberg, BestBuy, eBay, Netflix, Spotify et bien d'autres. Et si vous souhaitez connaître Apache Cassandra, vous êtes au bon endroit.
Dans cet article, vous allez apprendre à installer et à configurer un cluster Apache Cassandra sur les systèmes Linux. Vous apprendrez également à interagir avec Cassandra à l'aide de ses outils de ligne de commande.
Prérequis
Pour suivre les exemples de ce didacticiel, assurez-vous d'avoir les exigences suivantes en place.
- Vous aurez besoin de deux serveurs Linux sur le même réseau. Ce didacticiel utilisera deux serveurs Rocky Linux (v8.5) avec les détails suivants.
Nom d'hôte | Adresse IP |
cassandre01 | 172.16.1.10 |
cassandre02 | 172.16.1.15 |
La documentation d'Apache Cassandra ne fournit pas de liste normative des distributions Linux compatibles, mais mentionne que Cassandra peut fonctionner sur CentOS, RHEL, Debian et SUSE Enterprise Linux.
- Vous devez disposer des privilèges sudo ou accéder au compte root.
- Éditeur de texte nano ou tout éditeur de texte basé sur Linux.
Installer Java OpenJDK et Python
Avant de vous lancer dans l'installation d'Apache Cassandra, vous devez d'abord installer les dépendances logicielles. Cassandra est une application basée sur Java, et la dernière version (v4.0 à ce jour) nécessite Java OpenJDK 1.8 et Python 3.6.
Ce didacticiel utilise le gestionnaire de packages DNF pour les distributions Linux basées sur RPM. Vous pouvez également utiliser Yum ou Apt sur des distributions basées sur DEB comme Ubuntu et Debian. Reportez-vous à la documentation de votre distribution pour déterminer quel gestionnaire de packages utiliser.
Suivez les étapes ci-dessous pour installer Java OpenJDK 1.8 et Python 3.6 sur chaque serveur.
1. Ouvrez votre client SSH, connectez-vous à votre serveur et exécutez le sudo su
commande pour devenir root.
ssh [email protected]_name_or_IP
sudo su
2. Ensuite, exécutez le dnf
commande ci-dessous pour installer les packages Java OpenJDK 1.8 et Python 3.6. Attendez que l'installation soit terminée.
dnf install java-1.8.0-openjdk python36 -y
3. Maintenant, vérifiez la version Java en exécutant la commande ci-dessous.
java -version
Ci-dessous, vous pouvez voir que la version actuelle de Java OpenJDK est 1.8.0_312.
4. Ensuite, configurez l'interpréteur Python par défaut sur vos serveurs sur Python 3.6. Pour ce faire, exécutez le alternatives
commande comme ci-dessous.
alternatives --config python
Tapez le numéro correspondant à votre version de Python à l'invite de sélection de commande. L'exemple ci-dessous montre que Python3 est l'option 2.
5. Enfin, exécutez la commande suivante pour vérifier la version Python.
python --version
Vous devriez voir que Python 3.x.x est la valeur par défaut, similaire à la capture d'écran ci-dessous.
Installation de la base de données Apache Cassandra NoSQL
Vous avez installé les dépendances et vous êtes assuré qu'il s'agit de versions appropriées. Il est maintenant temps d'installer Apache Cassandra !
Bien qu'il existe de nombreuses façons d'installer Cassandra, la méthode la plus pratique consiste à utiliser le référentiel officiel. Mais il y a quelques étapes rapides que vous devez d'abord effectuer. Pour installer Cassandra NoSQL Database sur les systèmes Linux, procédez comme suit.
1. Exécutez la commande suivante pour créer un nouveau fichier de référentiel pour Cassandra.
nano /etc/yum.repos.d/cassandra.repo
2. Copiez la configuration de référentiel Cassandra suivante. Ce référentiel est disponible pour la plupart des distributions Red Hat, y compris Rocky Linux.
[cassandra]
name=Apache Cassandra
baseurl=https://downloads.apache.org/cassandra/redhat/40x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.apache.org/cassandra/KEYS
3. Après l'édition, enregistrez et fermez le fichier en appuyant sur Ctrl+X
, Y
, et Enter
.
4. Ensuite, exécutez le dnf
commande ci-dessous pour vérifier tous les référentiels disponibles sur votre système.
dnf repolist
Vous devriez voir le référentiel Apache Cassandra dans la liste des référentiels, comme indiqué ci-dessous.
5. Maintenant, installez la base de données Cassandra NoSQL en exécutant la commande suivante.
dnf install cassandra -y
Vous devriez voir un message de confirmation après l'installation d'Apache Cassandra, similaire à la capture d'écran ci-dessous.
Configuration du cluster Apache Cassandra
Une fois que vous avez installé Cassandra, vous devrez modifier la configuration /etc/cassandra/conf/cassandra.yaml
et configurez le cluster Cassandra.
Pour faire fonctionner le cluster Cassandra, vous devrez modifier la configuration par défaut de Cassandra sur tous les serveurs, par exemple :
- Changer le
cluster_name
par défaut . - Ajouter des adresses IP de serveur au
seeds
option. - Changer le
listen_address
par défaut à l'adresse IP locale. - Activer le
rpc_address
pour les connexions client.
Maintenant, suivez les étapes suivantes pour configurer le cluster Cassandra.
1. Sur cassandra01
, exécutez la commande suivante pour ouvrir la configuration de Cassandra cassandra.yaml pour l'édition.
nano /etc/cassandra/conf/cassandra.yaml
2. Modifiez la valeur par défaut du cluster name
avec le nouveau nom. Ce tutoriel utilise le nouveau nom de cluster ATA Cluster
.
cluster_name: 'ATA Cluster'
3. Maintenant, ajoutez l'adresse IP de chaque serveur avec le port TCP Cassandra 7000 par défaut au seeds
options ci-dessous. Le format suit le modèle IP:Port,IP:Port
, et le port par défaut est 7000
.
seeds: "172.16.1.10:7000,172.16.1.15:7000"
4. Ensuite, modifiez le listen_address
par défaut à l'adresse IP du serveur, pas hôte local. L'option listen_address
définit l'adresse IP que Cassandra exécutera.
# for cassandra01
listen_address: 172.16.1.10
# for cassandra02
listen_address: 172.16.1.15
5. Ensuite, modifiez l'option par défaut rpc_address
avec l'adresse IP du serveur, la même valeur que le listen_address
option. Dans l'environnement de cluster Cassandra, toutes les connexions client passent par l'adresse IP du serveur local par défaut TCP
port 9042
.
# for cassandra01
rpc_address: 172.16.1.10
# for cassandra02
rpc_address: 172.16.1.15
6. Enregistrez et fermez le fichier de configuration en appuyant sur Ctrl+X
, Y
, et Enter
.
7. Après avoir modifié la configuration de Cassandra, exécutez la commande suivante pour démarrer le service Cassandra. Cette commande démarrera automatiquement le cluster et atteindra les autres serveurs dont les adresses IP sont sur le seeds
option.
service cassandra start
8. Maintenant, confirmez l'état du service Cassandra en exécutant la commande ci-dessous.
service cassandra status
Vous obtiendrez une sortie similaire à la capture d'écran ci-dessous. Comme vous pouvez le voir, le service Cassandra est actif (en cours d'exécution) .
Sécuriser le cluster Apache Cassandra avec un pare-feu
La mise en place d'un pare-feu pour sécuriser les services est une tâche essentielle dans l'environnement de production. Cela vous permet de limiter l'accès au cluster Cassandra uniquement à partir d'adresses IP ou de plages de réseau spécifiques.
Sur les distributions Red Hat Linux génériques, firewalld est le logiciel de pare-feu par défaut.
Par défaut, Cassandra nécessite que deux ports TCP soient ouverts. Le port 7000 est le port de cluster par défaut et le port 9042 est le port de transport natif par défaut pour les connexions client.
Suivez ces étapes pour sécuriser le déploiement du cluster Cassandra avec un pare-feu.
1. Tout d'abord, confirmez si vous avez déjà firewalld
sur vos serveurs en exécutant la commande ci-dessous.
dnf search firewalld
Si
firewalld
n'existe pas, suivez les étapes #2 et #3. Mais sifirewalld
existe déjà sur le serveur, passez plutôt à l'étape 4.
2. Si vous n'avez pas firewalld
sur votre système, exécutez la commande suivante pour l'installer.
dnf install firewalld -y
3. Maintenant, démarrez le firewalld
service en exécutant la commande ci-dessous. Cette commande lancera le firewalld
service avec des règles par défaut, ouvrant les ports et services essentiels tels que les clients SSH et DHCP.
systemctl start firewalld
Par défaut, firewalld fournit une interface de ligne de commande
firewall-cmd
pour la gestion et la maintenance des règles de pare-feu.
4. Exécutez le firewall-cmd
suivant commande pour créer une nouvelle zone pour le cluster Cassandra et rechargez le firewalld
règles.
# add firewalld zone cassandra-cluster
firewall-cmd --new-zone=cassandra-cluster --permanent
# reload firewalld
firewall-cmd --reload
Vous verrez le message de sortie succès , ce qui signifie que l'opération a réussi. L'option --permanent
rend les nouvelles règles de pare-feu permanentes.
5. Ensuite, ajoutez le CIDR de votre réseau de serveurs au cassandra-cluster
zone. Cette règle autorise tous les serveurs ou clients sur le CIDR 172.16.1.0/24
pour parler et se connecter. Pour ajouter une seule adresse IP, saisissez l'adresse IP 172.16.1.20
.
firewall-cmd --zone=cassandra-cluster --add-source=172.16.1.0/24 --permanent
6. Maintenant, exécutez la commande ci-dessous pour ajouter les ports de service Cassandra 7000
et 9042
au cassandra-cluster
zone.
# add storage_port Apache Cassandra to the zone cassandra_cluster
firewall-cmd --zone=cassandra-cluster --add-port=7000/tcp --permanent
# add Apache Cassandra port for client connections
firewall-cmd --zone=cassandra-cluster --add-port=9042/tcp --permanent
7. Enfin, rechargez firewalld
rules pour appliquer une nouvelle configuration en exécutant la commande ci-dessous.
firewall-cmd --reload
Le cluster Cassandra est désormais accessible uniquement via le 172.16.1.0/24
réseau et supprimera toutes les connexions des autres réseaux.
Vérification de l'état du cluster Apache Cassandra
Nodetool est un utilitaire de commande natif pour la gestion et la surveillance du cluster Cassandra. Cet outil vous permet d'afficher l'état des métriques du cluster Cassandra, telles que les tables et les espaces de clés, les métriques du serveur, les applications, les métriques de connexion client, etc.
En général, les administrateurs exécutent le nodetool
commande directement sur le serveur Cassandra opérationnel effectuant la maintenance et la surveillance de routine de la base de données.
Suivez les étapes ci-dessous pour apprendre les bases de la surveillance du cluster Cassandra à l'aide du nodetool
utilitaire.
1. Vérifiez l'état du cluster Cassandra en exécutant la commande suivante.
nodetool status
Vous obtiendrez une sortie similaire à la capture d'écran ci-dessous.
- U signifie que le nœud est UP ou courir.
- N signifie que le nœud est NORMAL .
- L'adresse peut être l'adresse IP ou l'URL du nœud.
- Charger est la taille des fichiers dans le répertoire de données de Cassandra. Cette valeur est actualisée toutes les 90 secondes.
- Le jeton est le nombre de jetons disponibles sur le nœud.
- L'ID d'hôte est l'identifiant réseau du nœud. Chaque nœud a un identifiant différent.
2. Maintenant, exécutez la commande ci-dessous pour obtenir des informations détaillées sur le nœud unique.
nodetool info
Ci-dessous, vous pouvez voir des informations détaillées sur le nœud telles que :
- Temps de disponibilité
- Informations sur la mémoire de tas
- Charger
- Cache de clé et cache de compteur
- Emplacement du centre de données
3. Ensuite, affichez les détails du cluster Cassandra en exécutant la commande ci-dessous.
nodetool describecluster
Vous pouvez voir ci-dessous le cluster Cassandra détaillé.
- Informations sur le cluster contient des informations de base sur le cluster Cassandra, y compris le nom, le partitionneur Cassandra par défaut et la version du schéma.
- Statistiques pour tous les nœuds indiquer l'état actuel de tous les nœuds du cluster Cassandra.
- Si vous avez créé le cluster Cassandra sur plusieurs centres de données, vous verrez tous vos centres de données sur les Centres de données section.
- Les versions de la base de données affiche la version de Cassandra sur chaque nœud de cluster.
- La liste de tous les espaces de clés ou bases de données disponibles sur le cluster Cassandra est disponible sous les espaces de clés section.
Connexion au cluster Apache Cassandra
L'installation du package Apache Cassandra sur le serveur installe également Cassandra Query Language Shell (CQLSH). Cet outil permet aux administrateurs de se connecter à Apache Cassandra et de gérer les bases de données ou les espaces de clés et les utilisateurs.
Suivez les étapes ci-dessous pour vous connecter au cluster Cassandra à l'aide de la ligne de commande cqlsh
.
1. Exécutez le cqlsh
commande ci-dessous pour se connecter au cluster Cassandra. Spécifiez l'adresse IP de Cassandra et le port par défaut pour les connexions client est 9042
.
cqlsh 172.16.1.10 9042
Une fois connecté au cluster Cassandra, vous verrez une sortie similaire à celle de la capture d'écran ci-dessous. Cet exemple utilise le nom de cluster ATA Cluster sur l'adresse IP du serveur 172.16.1.10
.
2. Maintenant, exécutez les requêtes CQL suivantes pour vérifier à quel serveur vous vous êtes connecté, vérifiez le nom du cluster et vérifiez tous les espaces de clés disponibles sur Cassandra.
# show detailed host
SHOW HOST
# show cluster name
DESCRIBE CLUSTER
# list all available keyspaces (databases)
DESCRIBE KEYSPACES
Vous verrez une sortie similaire à la capture d'écran ci-dessous. Le SHOW HOST
requête vous montre où vous êtes connecté, la requête DESCRIBE CLUSTER
vous montre le nom du cluster Cassandra et la requête DESCRIBE KEYSPACES
vous montre la liste des espaces de clés sur votre nœud Cassandra.
3. Enfin, tapez le exit
pour se déconnecter du cqlsh
environnement.
Conclusion
Tout au long de ce didacticiel, vous avez appris à installer et à configurer Apache Cassandra sous Linux. Vous avez également configuré le cluster Apache Cassandra à l'aide de deux serveurs Linux et sécurisé le déploiement à l'aide du pare-feud.
À ce stade, vous êtes prêt à ajouter d'autres serveurs et à faire évoluer vos déploiements, en offrant une haute disponibilité, une cohérence et une redondance pour vos données.
Quelle est la prochaine pour vous? Commencez peut-être par configurer l'authentification et l'autorisation sur votre cluster Cassandra, puis configurez la réplication de l'espace de clés/base de données pour vos applications. Et pendant que vous y êtes, pourquoi ne pas apprendre à maintenir le cluster Apache Cassandra avec nodetool ?