web-dev-qa-db-fra.com

comment puis-je savoir si la réparation de nodetool est terminée

J'ai un cluster Apache cassandra (2.0.3) à 2 nœuds avec un facteur de représentation de 1. Je change le facteur de représentation en 2 à l'aide de la commande suivante dans cqlsh

ALTER KEYSPACE "mykeyspace" WITH REPLICATION =   { 'class' : 'SimpleStrategy', 'replication_factor' : 2 };

J'ai ensuite essayé d'exécuter la "réparation de nodetool" recommandée après avoir effectué ce type de modification.

Le problème est que cette commande se termine parfois très rapidement. Lorsqu'il se termine ainsi, il indique normalement «Notification perdue ...» et le code de sortie n'est pas nul.

Je répète donc simplement cette "réparation nodetool" jusqu'à ce qu'elle se termine sans erreur. Je vérifie également que «nodetool status» indique l'espace disque prévu pour chaque nœud. (Avec le facteur de représentation 1, chaque nœud a environ 7 Go chacun et je m'attends après réparation de nodetool à 14 Go chacun, en supposant qu'aucune utilisation de cluster n'est en cours)

Existe-t-il un moyen plus correct de déterminer que la «réparation de nodetool» est terminée dans ce cas?

13
user3865568

De manière générale, vous pouvez surveiller une opération nodetool repair avec deux commandes nodetool:

  • états de compactage
  • netstats

L'opération de réparation comporte deux phases distinctes. Il calcule d'abord les différences entre les nœuds (travaux de réparation à effectuer), puis agit sur ces différences en transmettant les données en continu aux nœuds appropriés.

Ceci vérifie les calculs actifs de Merkle Tree:

$ nodetool compactionstats
pending tasks: 0
Active compaction remaining time :        n/a

Les flux de réparation peuvent être surveillés par:

$ nodetool netstats

En fait, Aaron Morton de TheLastPickle suggère d'utiliser le script/la commande Bash suivant pour surveiller les flux de réparation actifs:

while true; do date; diff <(nodetool -h localhost netstats) <(sleep 5 && nodetool -h localhost netstats); done

DataStax a posté sur leurs forums d'assistance technique dépannage des réparations en suspens . Si vous avez des flux de réparation bloqués, vous devriez pouvoir les voir avec un netstats. Cela peut arriver si l'un de vos nœuds devient indisponible pendant le processus de réparation. Pour surveiller les opérations de réparation spécifiques, vous pouvez rechercher dans votre fichier journal des entrées telles que:

DEBUG [WRITE-/172.30.77.197] 2013-05-03 12: 43: 09,107 Erreur OutboundTcpConnection.Java (ligne 165) lors de l'écriture dans /172.30.77.197 Java.net.SocketException: réinitialisation de la connexion

Notez que les sessions de réparation doivent également être notées dans votre system.log:

[repair #02fc68f0-210c-11e7-aa88-c35a9a02c19a] Starting...

[repair #02fc68f0-210c-11e7-aa88-c35a9a02c19a] Completed...
45
Aaron

Les flux de réparation peuvent être surveillés avec l'option --trace lorsque vous lancez la commande de réparation:

nodetool repair --trace <key_space> <table>

2
tjeubaoit

Nous pouvons également surveiller l'avancement des réparations dans la console Opscenter sous Activités.

0