Tâche #20338
Scénario #20318: Traitement express MEN (19-21)
Les VM ne se relancent pas après un reboot
Description
Noramlement dans Hâpy les vm qui étaient RUNNING avant un reboot (après Maj-Auto automatique par exemple) doivent être relancées par le service onenode.
Actuellement sur Hâpy 2.6.1 ce n'est plus le cas. En effet les VM sont à l'étât POWEROFF et le script ne relance pas les VM POWEROFF.
Avant l'étât était Unknown.
Cela se produit très régulièrement sur notre Hâpy de "test".
Il faut trouver une solution pour relancer uniquement les VM qui étaient RUNNING avant le reboot.
Révisions associées
Correction du lancement du service onenode
Le service onenode ne se lance pas a cause d'une
boucle dans les dépendances de services.
Pour régler le problème on le lance après la multi-user.target
De plus au moment ou le service se lance opennebula n'est pas
complètement lancé alors le script essaye d'ouvrir des connections
pendant 20 secondes avant de remonter un problème.
Enfin on garde une liste des machines qui sont "running" avant l'arrêt
du serveur pour pouvoir les relance proprement.
Contribution de Cadoles (htts://www.cadoles.com)
ref #20338 @6h
onenode.service in error when VM state file is not present
- scripts/onevm-all: truncate file only if it exists.
Ref: #20338
Historique
#1 Mis à jour par Daniel Dehennin il y a presque 7 ans
La solution la plus simple c’est de lister les VMs qui tournent avant de les éteindre soit même (attention à libvirt-guest.service) et de les démarrer au prochain boot.
#2 Mis à jour par Daniel Dehennin il y a presque 7 ans
Est-il possible de pousser la branche ?
#3 Mis à jour par Philippe Caseiro il y a presque 7 ans
C'est fait branche fix-20338
#4 Mis à jour par Gérald Schwartzmann il y a presque 7 ans
up auprès de Daniel :-)
#5 Mis à jour par Daniel Dehennin il y a presque 7 ans
- Tâche parente mis à #20318
#6 Mis à jour par Daniel Dehennin il y a presque 7 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Daniel Dehennin
- Restant à faire (heures) mis à 4.0
- Rebaser la branche sur 2.6.0
- Diffuser sur 2.6.1
- Prévoir un rétro-portage sur 2.6.0.
#7 Mis à jour par Daniel Dehennin il y a presque 7 ans
- % réalisé changé de 0 à 100
- Restant à faire (heures) changé de 4.0 à 0.25
- Rebase de la branche sur 2.6.0
- Intégration dans 2.6.1
- Compilation du paquet 2.6.1-6 en
eole-2.6.1-proposed-updates
- Intégration à la branche
master
.
#8 Mis à jour par Daniel Dehennin il y a presque 7 ans
J’ai testé sur igor.eole.lan qui est un 2.6.1 :
Maj-Auto -C
- reboot → coincé sur
libvirt-guest.sh
:A stop job is running for Suspending Active Libvirt Guest (12mn 17s / nolimit)
#9 Mis à jour par Daniel Dehennin il y a presque 7 ans
Daniel Dehennin a écrit :
J’ai testé sur igor.eole.lan qui est un 2.6.1 :
Maj-Auto -C
- reboot → coincé sur
libvirt-guest.sh
:A stop job is running for Suspending Active Libvirt Guest (12mn 17s / nolimit)
Après désactivation de libvirt-guest.service
et un reboot j’obtiens :
root@igor:~# systemctl status onenode.service ● onenode.service - OpenNebula Node starter Loaded: loaded (/lib/systemd/system/onenode.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since mer. 2017-05-10 16:43:24 CEST; 2min 33s ago Process: 1932 ExecStart=/usr/share/eole/sbin/onevm-all -t 20 -w -c ${CREDS} -e ${ENDPOINT} -a resume (code=exited, status=255) Main PID: 1932 (code=exited, status=255) mai 10 16:43:21 igor systemd[1]: Starting OpenNebula Node starter... mai 10 16:43:24 igor onevm-all[1932]: No such file or directory @ rb_file_s_truncate - /var/lib/one/running.bck mai 10 16:43:24 igor systemd[1]: onenode.service: Main process exited, code=exited, status=255/n/a mai 10 16:43:24 igor systemd[1]: Failed to start OpenNebula Node starter. mai 10 16:43:24 igor systemd[1]: onenode.service: Unit entered failed state. mai 10 16:43:24 igor systemd[1]: onenode.service: Failed with result 'exit-code'.
#10 Mis à jour par Daniel Dehennin il y a presque 7 ans
Daniel Dehennin a écrit :
J’ai testé sur igor.eole.lan qui est un 2.6.1 :
Maj-Auto -C
- reboot → coincé sur
libvirt-guest.sh
:A stop job is running for Suspending Active Libvirt Guest (12mn 17s / nolimit)
Arf, j’ai utilisé eole.ac-dijon.fr
alors que le paquet n’était que sur test-eole.ac-dijon.fr
.
#11 Mis à jour par Daniel Dehennin il y a presque 7 ans
J’ai corrigé l’erreur générée lorsque le fichier n’existe pas au démarrage.
Par contre le script démarre toutes les VM suspendue et pas seulement celles qui sont dans le fichier.
- Démarrer une machine virtuelle
- Suspendre manuellement la machine virtuelle
oneadmin@igor:~$ onevm suspend 15
- Attendre que la machine soit bien suspendue
oneadmin@igor:~$ onevm list ID USER GROUP NAME STAT UCPU UMEM HOST TIME 15 eoleone oneadmin Amon 2.5.2.1 - susp 0.0 0k igor 128d 06h16
- Redémarrer le serveur
- Lister les machines
oneadmin@igor:~$ onevm list ID USER GROUP NAME STAT UCPU UMEM HOST TIME 15 eoleone oneadmin Amon 2.5.2.1 - runn 1.01 2G igor 128d 06h17
Voici les logs:
mai 10 17:30:49 igor systemd[1]: Stopping OpenNebula Node starter... mai 10 17:30:49 igor systemd[1]: Stopped OpenNebula Node starter. -- Reboot -- mai 10 17:31:31 igor systemd[1]: Starting OpenNebula Node starter... mai 10 17:31:50 igor onevm-all[1885]: Resume on Amon 2.5.2.1 - production-15 mai 10 17:31:50 igor onevm-all[1885]: Resume on Scribe 2.6.0 - production-16 mai 10 17:31:50 igor systemd[1]: Started OpenNebula Node starter.
#12 Mis à jour par Scrum Master il y a presque 7 ans
- Projet changé de eole-one-master à Distribution EOLE
- Statut changé de En cours à Résolu
#13 Mis à jour par Philippe Caseiro il y a presque 7 ans
- Fichier fix-resume.patch Voir ajouté
Voici une proposition de correction
#14 Mis à jour par Daniel Dehennin il y a presque 7 ans
Philippe Caseiro a écrit :
Voici une proposition de correction
Pourquoi ne pas :
- Parcourir la liste des ID de VM du fichier de sauvegarde
- Vérifier son état
!=
RUNNING
- Reprendre l’exécution de la VM
Une idée ?
#15 Mis à jour par Daniel Dehennin il y a presque 7 ans
- Statut changé de Résolu à Fermé
- Restant à faire (heures) changé de 0.25 à 0.0