Verificación de estado de Cassandra usando nodejs

Utilizo los nodejs en tres entornos y Cassandra se ejecuta en los tres nodos.

Entiendo totalmente que con el uso de nodetool status podré obtener el estado de cada nodo. Pero el problema es que si mi nodo actual está inactivo, no podré realizar el estado de la herramienta de nodo en el nodo actual. Entonces, ¿hay alguna forma de obtener el estado utilizando el controlador de Cassandra de nodejs?

Cualquier ayuda es apreciada.

EDITADO:

Según la sugerencia de dilsinging, utilicé client.hosts pero el problema es que, en el siguiente grupo, 172.30.56.61 está inactivo, pero se muestra como disponible. ¿Cómo obtener el estado de cada nodo?

 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(); 

Salida de estado de 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(); 

Salida de NodeJs:

  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 

Gracias,
Acosar

Los controladores en general, incluidos (nodejs), son conscientes de toda la topología de cluster de Cassandra. Tras el contacto inicial con la dirección IP de uno o más nodos en la cadena de conexión, el controlador puede identificar automáticamente todos los ips de nodo que forman el anillo Cassandra. Es lo suficientemente inteligente como para saber cuándo un nodo se cae o un nuevo nodo se une al clúster. Incluso puede continuar trabajando con nodos completamente nuevos (ips) de lo que comenzó.

Por lo tanto, no hay un requisito para codificar el estado del nodo, ya que el controlador lo maneja automáticamente. Se recomienda proporcionar más de 1 ip en la cadena de conexión, a fin de proporcionar redundancia al realizar la conexión inicial.

Aquí está la documentación del controlador nodejs y esta sección describe la función “Detección automática de nodos” y “Metadatos de clúster y esquema”.