Comment exécuter une base de données de grappes multi-nœuds avec Cassandra sous Ubuntu 14.04

introduction

Apache Cassandra est un système de base de données open source extrêmement évolutif, offrant d’excellentes performances sur des configurations multi-nœuds.

Auparavant, nous avions consulté how to run un cluster Cassandra à un seul nœud. Dans ce didacticiel, vous apprendrez à installer et utiliser Cassandra pour exécuter un cluster à plusieurs nœuds sur Ubuntu 14.04.

Conditions préalables

Étant donné que vous êtes sur le point de créer un cluster Cassandra à plusieurs noeuds, vous devez déterminer le nombre de serveurs que vous souhaitez inclure dans votre cluster et configurer chacun d’eux. Il est recommandé, mais pas obligatoire, que leurs spécifications soient identiques ou similaires.

Pour compléter ce didacticiel, vous aurez besoin des éléments suivants:

Étape 1 - Suppression des données par défaut

Les serveurs d’un cluster Cassandra sont appelés nodes. Ce que vous avez actuellement sur chaque serveur est un cluster Cassandra à un seul noeud. Dans cette étape, nous allons configurer les nœuds pour qu’ils fonctionnent comme un cluster Cassandra à plusieurs nœuds.

Toutes les commandes de cette étape et des étapes suivantes doivent être répétées sur chaque nœud du cluster. Assurez-vous donc d’avoir autant de terminaux ouverts que de nœuds dans le cluster.

La première commande que vous exécuterez sur chaque nœud arrêtera le démon Cassandra.

sudo service cassandra stop

Lorsque cela est terminé, supprimez le jeu de données par défaut.

sudo rm -rf /var/lib/cassandra/data/system/*

Étape 2 - Configuration du cluster

Le fichier de configuration de Cassandra se trouve dans le répertoire + / etc / cassandra +. Ce fichier de configuration, + cassandra.yaml +, contient de nombreuses directives et est très bien commenté. Dans cette étape, nous allons modifier ce fichier pour configurer le cluster.

Seules les directives suivantes doivent être modifiées pour configurer un cluster Cassandra à plusieurs nœuds:

  • + nom_cluster +: Ceci est le nom de votre cluster.

  • + -seeds +: Ceci est une liste délimitée par des virgules de l’adresse IP de chaque nœud du cluster.

  • + listen_address +: Il s’agit de l’adresse IP que les autres nœuds du cluster utiliseront pour se connecter à celui-ci. La valeur par défaut est * localhost * et les besoins doivent être remplacés par l’adresse IP du nœud.

  • + adresse_rpc +: il s’agit de l’adresse IP pour les appels de procédure distante. La valeur par défaut est * localhost *. Si le nom d’hôte du serveur est correctement configuré, laissez-le tel quel. Sinon, changez l’adresse IP du serveur ou l’adresse de bouclage (+ 127.0.0.1 +).

  • + endpoint_snitch +: Nom du vif, ce qui explique à Cassandra à quoi ressemble son réseau. La valeur par défaut est * SimpleSnitch *, utilisé pour les réseaux d’un centre de données. Dans notre cas, nous le changerons en * GossipingPropertyFileSnitch *, qui est préféré pour les installations de production.

  • + auto_bootstrap +: Cette directive ne se trouvant pas dans le fichier de configuration, elle doit donc être ajoutée et définie sur * false *. Cela fait en sorte que les nouveaux nœuds utilisent automatiquement les bonnes données. Cette option est facultative si vous ajoutez des nœuds à un cluster existant, mais elle est requise lors de l’initialisation d’un nouveau cluster, c’est-à-dire sans cluster.

Ouvrez le fichier de configuration pour le modifier en utilisant + nano + ou votre éditeur de texte favori.

sudo nano /etc/cassandra/cassandra.yaml

Recherchez dans le fichier les directives suivantes et modifiez-les comme ci-dessous pour correspondre à votre cluster. Remplacez «+» par l’adresse IP du serveur sur lequel vous travaillez actuellement. La liste ` - seed: +` devrait être la même sur tous les serveurs et contiendra l’adresse IP de chaque serveur séparée par des virgules.

/etc/cassandra/cassandra.yaml

. . .

cluster_name: ''

. . .

seed_provider:
 - class_name: org.apache.cassandra.locator.SimpleSeedProvider
   parameters:
        - seeds: ",,..."

. . .

listen_address:

. . .

rpc_address:

. . .

endpoint_snitch:

. . .

Au bas du fichier, ajoutez la directive + auto_bootstrap + en la collant dans cette ligne:

/etc/cassandra/cassandra.yaml

Lorsque vous avez fini de modifier le fichier, enregistrez-le et fermez-le. Répétez cette étape pour tous les serveurs que vous souhaitez inclure dans le cluster.

Étape 3 - Configuration du pare-feu

À ce stade, le cluster a été configuré, mais les nœuds ne communiquent pas. Dans cette étape, nous allons configurer le pare-feu pour autoriser le trafic Cassandra.

Tout d’abord, redémarrez le démon Cassandra sur chacun d’eux.

sudo service cassandra start

Si vous vérifiez l’état du cluster, vous constaterez que seul le nœud local est répertorié, car il n’a pas encore été en mesure de communiquer avec les autres nœuds.

sudo nodetool status

Sortie

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns    Host ID                               Rack
UN  192.168.1.4  147.48 KB  256          ?       f50799ee-8589-4eb8-a0c8-241cd254e424  rack1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

Pour permettre la communication, nous devons ouvrir les ports réseau suivants pour chaque nœud:

  • + 7000 +, qui est le port TCP pour les commandes et les données.

  • + 9042 +, qui est le port TCP du serveur de transport natif. + cqlsh +, l’utilitaire de ligne de commande Cassandra, se connectera au cluster via ce port.

Pour modifier les règles du pare-feu, ouvrez le fichier de règles pour IPv4.

sudo nano /etc/iptables/rules.v4

Copiez et collez la ligne suivante dans la chaîne INPUT, ce qui permettra le trafic sur les ports susmentionnés. Si vous utilisez le fichier + rules.v4 + du tutoriel sur le pare-feu, vous pouvez insérer la ligne suivante juste avant le commentaire + # Rejeter tout ce qui est tombé dans ce commentaire +.

L’adresse IP spécifiée par + -s + devrait être l’adresse IP d’un autre nœud du cluster. Si vous avez deux nœuds avec les adresses IP + 111.111.111.111 + et '+ 222.222.222.222 + , la règle sur la machine + 111.111.111.111 + doit utiliser l’adresse IP + 222.222.222.222 + `.

Nouvelle règle de pare-feu

-A INPUT -p tcp -s  -m multiport --dports 7000,9042 -m state --state NEW,ESTABLISHED -j ACCEPT

Après avoir ajouté la règle, enregistrez et fermez le fichier, puis redémarrez IPTables.

sudo service iptables-persistent restart

Étape 4 - Vérifier l’état du cluster

Nous avons maintenant terminé toutes les étapes nécessaires pour transformer les nœuds en un cluster à plusieurs nœuds. Vous pouvez vérifier qu’ils communiquent tous en vérifiant leur statut.

sudo nodetool status

Sortie

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns    Host ID                               Rack
UN  192.168.1.4  147.48 KB  256          ?       f50799ee-8589-4eb8-a0c8-241cd254e424  rack1
UN  192.168.1.6  139.04 KB  256          ?       54b16af1-ad0a-4288-b34e-cacab39caeec  rack1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

Si vous pouvez voir tous les nœuds que vous avez configurés, vous venez de configurer avec succès un cluster Cassandra à plusieurs nœuds.

Vous pouvez également vérifier si vous pouvez vous connecter au cluster à l’aide de + cqlsh +, le client de ligne de commande Cassandra. Notez que vous pouvez spécifier l’adresse IP de n’importe quel nœud du cluster pour cette commande.

cqlsh  9042

Vous verrez qu’il se connecte:

Sortie

Connected to My DO Cluster at 192.168.1.6:9042.
[cqlsh 5.0.1 | Cassandra 2.2.3 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh>

Ensuite, vous pouvez quitter le terminal CQL.

exit

Conclusion

Toutes nos félicitations! Vous avez maintenant un cluster Cassandra multi-nœuds fonctionnant sous Ubuntu 14.04. De plus amples informations sur Cassandra sont disponibles sur le site project. Si vous devez dépanner le cluster, les fichiers d’historique, situés dans le répertoire + / var / log / cassandra +, constituent le premier lieu de recherche d’indices.