Comment faire pour supprimer morts nœud du cluster Cassandra?
- J'ai le cluster cassandra de 12 nœuds sur EC2.
- En raison d'une panne, nous avons perdu l'un des nœud complètement.Je veux dire que la machine n'existent plus.
- J'ai donc créé une nouvelle instance EC2 avec des ip différentes, et même que celle de la mort de nœud et j'ai aussi eu la sauvegarde des données sur le nœud de sorte qu'il fonctionne bien
- Mais le problème, c'est la mort des nœuds ip apparaît encore comme un inaccessible nœud décrire cluster.
- En tant que nœud (instance EC2) n'existe plus, je ne peux pas utiliser le nodetool déclasser ou nodetool disablegossip
Comment puis-je me débarrasser de cette inaccessible nœud
OriginalL'auteur samarth | 2011-12-21
Vous devez vous connecter pour publier un commentaire.
Normalement lors du remplacement d'un nœud que vous souhaitez définir le nouveau nœud du jeton de
(failure node's token) - 1
et laisser bootstrap. Comme de 1.0 il y a maintenant un drapeau que vous pouvez spécifier dans le démarrage de remplacer un nœud morts: "cassandra.replace_token=".Puisque vous avez déjà ajouté le nouveau nœud avec le même jeton il y a une étape supplémentaire:
(failure node's token) - 1
à l'aide denodetool move
nodetool removetoken <failed node's token>
de l'un des nœudsnodetool cleanup
sur chaque nœudCe sont essentiellement les pré 1.0 instructions pour le remplacement d'une mort nœud avec le jeton supplémentaire déplacer.
Vous devez effacer la connaissance de l'ancien nœud de l'anneau. Vous pouvez le faire avec
nodetool removetoken
. Votre problème, c'est que permettrait également de supprimer le nœud de remplacement. Si vous avez besoin de déplacer le nœud de remplacement du jeton jeton-1 avant de faire leremovetoken
.J'ai essayé la solution que vous avez suggéré.Nous avons déplacé avec succès le nouveau nœud. Mais lors de l'enlèvement des morts nœud qu'il se bloque en me disant: "RemovalStatus: la Suppression de jeton (62676456546693435176060154681903071729). En attente de confirmation de la réplication de [cassandra-1/10.101.101.01'
Dans ce cas, vous pouvez exécuter la commande
nodetool removetoken force
qui va dire à Cassandra de ne pas attendre la confirmation de la mort de nœud.Quand tout cela est fait, vous avez probablement besoin de redémarrer tous les nœuds de manière à éliminer les potins de l'information. Je n'avais pas réussi à le faire et quand j'ai essayé de faire un truncate sur une FC je n'ai plus besoin j'ai un messages d'erreur que tous les nœuds ont été. Toujours en dépit du fait que nodetool anneau a montré tous. L'exécution de nodetool gossipinfo a montré que le cluster toujours conservé une certaine connaissance de la mort de nœuds. Le redémarrage de tous les nœuds fixes.
OriginalL'auteur psanford
J'ai eu le même problème et je l'ai résolu avec
removenode
, qui ne vous oblige pas à rechercher et modifier le nœud jeton.Tout d'abord, obtenir le nœud UUID:
Comme vous pouvez le voir le .201 et .202 sont morts et sur un réseau différent. Celles-ci ont été modifiés pour .91 et .92 sans déclassement et de remise en service. Je travaillais sur l'installation du réseau et fait quelques erreurs...
Deuxième, retirez le .201 avec la commande suivante:
(dans les anciennes versions, il était nodetool supprimer ...)
Mais tout comme pour la
nodetool removetoken ...
, il bloque... (voir le commentaire de samarth dans psandord réponse) Cependant, il a un effet secondaire, il met que l'UUID dans une liste de noeuds à être supprimé. Donc nous pouvons forcer la suppression avec:(dans les anciennes versions, il était nodetool supprimer ...)
Maintenant le nœud accepte la commande il me dit que c'est enlever l'entrée non valide:
Nous voyons aussi qu'il communique avec les deux autres nœuds qui sont en place et donc il faut un peu de temps, mais il est encore assez rapide.
Suivant un
nodetool status
ne montre pas la .201 nœud. Je le répète avec .202 et maintenant, la situation est propre.Après cela, vous pouvez également exécuter un nettoyage comme indiqué dans psanford réponse:
Le nettoyage doit être exécuté sur tous les nœuds, un par un, assurez-vous que le changement est pleinement pris en compte.
Comment puis-je faire pour changer d'adresse ip ? et comment puis-je obtenir la liste de tous les nœuds sur le ring, comme vous l'avez fait ? merci beaucoup. En ce qui concerne meilleur.
Rechercher un fichier nommé cassandra.yaml et à l'intérieur du fichier, recherche pour une entrée nommée seed_provider. Qui a des entrées pour les adresses IP. Ensuite, regardez dans la cassandra-rackdc.propriétés et cassandra-topologie.les propriétés des fichiers. Il y a aussi une cassandra-topologie.yaml qui, je pense, n'est plus utilisé dans les versions plus récentes.
Notez que Cassandra 2.0+, nodetool "supprimer" de la commande est maintenant "removenode".
OriginalL'auteur Alexis Wilke