Problème du jour avec Ganeti : aucun hyperviseur du cluster ne peut assumer le rôle de master.
sudo systemctl start ganeti
[...]
ganeti[7010]: Starting Ganeti cluster:ganeti-noded...done.
ganeti[7010]: ganeti-wconfd...Not master, exiting.
ganeti[7010]: done (not master).
ganeti[7010]: ganeti-rapi...done.
ganeti[7010]: ganeti-luxid...Not master, exiting.
ganeti[7010]: done (not master).
ganeti[7010]: ganeti-kvmd...done.
ganeti[7010]: ganeti-confd...done.
ganeti[7010]: ganeti-mond...done.
Pourtant, sudo gnt-cluster getmaster retourne le nom de cet hyperviseur… Être master sans le savoir, tout un concept…
Rien de transcendant dans les logs (/var/log/ganeti/).
Lancer les démons concernés à la main ne sert à rien :
sudo ganeti-wconfd --no-voting --yes-do-it
Not master, exiting.
Forcément, la plupart des commandes Ganeti (gnt-instance list, gnt-cluster info, etc.) échouent puisque luxid n'est pas démarré :
Timeout while talking to the master daemon. Jobs might have been submitted and will continue to run even if the call timed out. Useful commands in this situation are "gnt-job list", "gnt-job cancel" and "gnt-job watch". Error:
Connect timed out
Forcer une migration du rôle de master avec gnt-cluster masterfailover [--no-voting] ne fonctionne pas :
Sur un hyperviseur :
This commands must be run on the node where you want the new master to be. XXXX is already the master
Sur l'autre hyperviseur :
ERROR Could not start the master role on the new master XXXX, please check: Can't start Ganeti master: Not master, exiting.
On constate que Ganeti n'est plus capable d'ajouter l'IP du master à l'interface réseau configurée :
The master IP did not come up within 30 seconds; the cluster should still be working and reachable via XXXX, but not via the master IP address
Évidemment, ça marchait très bien avant, as usual.
Solution : vérifier que le nom de l'hyperviseur ne résout pas en une IPv4 ou une IPv6 locale genre 127.0.0.1 et ::1. Dans mon cas, j'avais récemment ajouté la ligne suivante à mon fichier /etc/hosts :
::1 localhost ip6-localhost ip6-loopback nom_hyperviseur.example
Il faut corriger cette ligne en :
::1 localhost ip6-localhost ip6-loopback
Puis redémarrer Ganeti :
sudo systemctl restart ganeti
Oui, ne pas utiliser d'IPs locales est un pré-requis de Ganeti et ça vaut en IPv6 comme en IPv4.