Vérification de l’état de Cassandra à l’aide de nodejs

J’utilise les nodejs dans trois environnements et la Cassandra s’exécute dans les trois nœuds.

Je comprends nodetool status utilisant le nodetool status je pourrai obtenir le statut de chaque nœud. Mais le problème est que si mon nœud actuel est en panne, je ne pourrai pas exécuter l’état nodetool dans le nœud actuel.

Toute aide est appréciée.

EDITED:

Selon la suggestion de dilsingi, j’ai utilisé le client.hosts, mais le problème est le suivant: dans le cluster suivant, 172.30.56.61 est toujours en panne. Comment obtenir le statut de chaque nœud?

 const cassandra = require('cassandra-driver'); const client = new cassandra.Client({ contactPoints: ['172.30.56.60','172.30.56.61','172.30.56.62'], keyspace: 'test', policies : { loadBalancing : new cassandra.policies.loadBalancing.RoundRobinPolicy }}); async function read() { client.connect().then(function () { console.log('Connected to cluster with %d host(s): %j', client.hosts.length, client.hosts.keys()); client.hosts.forEach(function (host) { console.log(host.address, host.datacenter, host.rack); }); }); } read(); 

sortie de statut nodeTool:

 Datacenter: newyork =================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 172.30.56.62 1.13 MiB 256 34.8% e93827b7-ba43-4fba-8a51-4876832b5b22 rack1 DN 172.30.56.60 1.61 MiB 256 33.4% e385af22-803e-4313-bee2-16219f73c213 rack1 UN 172.30.56.61 779.4 KiB 256 31.8% be7fc52e-c45d-4380-85a3-4cbf6d007a5d rack1 Node Js Code : const cassandra = require('cassandra-driver'); const client = new cassandra.Client({ contactPoints: ['172.30.56.60','172.30.56.61','172.30.56.62'], keyspace: 'qcs', policies : { loadBalancing : new cassandra.policies.loadBalancing.RoundRobinPolicy }}); async function read() { client.connect().then(function () { console.log('Connected to cluster with %d host(s): %j', client.hosts.length, client.hosts.keys()); client.hosts.forEach(function (host) { console.log(host.address, host.datacenter, host.rack, host.isUp(), host.canBeConsideredAsUp()); }); }); } read(); 

NodeJs sortie:

  Connected to cluster with 3 host(s): ["172.30.56.60:9042","172.30.56.61:9042","172.30.56.62:9042"] 172.30.56.60:9042 newyork rack1 true true 172.30.56.61:9042 newyork rack1 true true 172.30.56.62:9042 newyork rack1 true true 

Merci,
Harry

Les pilotes en général, y compris (nodejs), connaissent la totalité de la topologie du cluster Cassandra. Lors du contact initial avec la ou les adresses IP du nœud dans la chaîne de connexion, le pilote peut identifier automatiquement tous les nœuds ips qui composent l’anneau de cassandra. Il est suffisamment intelligent pour savoir quand un nœud tombe en panne ou si un nouveau nœud rejoint le cluster. Il peut même continuer à travailler avec des nœuds (ips) complètement nouveaux que ceux avec lesquels il a commencé.

Il n’est donc pas nécessaire de coder pour l’état du nœud, car le pilote le gère automatiquement pour vous. Il est recommandé de fournir plus d’une adresse IP dans la chaîne de connexion, afin de fournir une redondance lors de la connexion initiale.

Voici la documentation du pilote nodejs et cette section décrit la fonctionnalité “Découverte de nœud automatique” et “Métadonnées de cluster et de schéma”.