Bonjour,
Je viens de déployer un VCenter avec deux ESX en clusters connectés sur un SAN IScsi. L'ensemble est racké et alimenté par un onduleur APC. L'onduleur APC est managé par un serveur complémentaire qui gère la sauvegarde (Veeam Backup + Arc Serv pour l'archivage, client Exchange, et l'extériorisation des sauvegardes).
L'idée est qu'en cas de coupure électrique la console APC lance un script bat, qui à son tour via un tunnel SSH (crée par Putty) lance un script de mise en pause sur les ESX. J'ai autorisé la connexion SSH du PC de sauvegarde sur chacun des ESX, les ESX autorise la connexion en root en SSH via l'IP du PC, tout va bien de ce côté.
Voici le script BAT lancé par la console APC:
Voici le script que je lance et qui devrait mettre en pause toutes les VM puis arrêter l'ESX.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Rem ############################################################################################### Rem # Add - Théo - 13/07/2009 Rem # Mod - Théo - 23/07/2009 Rem # Script de fermeture des serveurs en cas de coupure électrique Rem # Installer sc.exe dans win32 ainsi que le fichier pscp.exe et psftp.exe livré avec putty Rem # Configurer les sessions putty ESX1 sur l'IP 192.168.10.1 Rem # ESX2 sur l'IP 192.168.10.2 Rem # Penser à autoriser la connexion SSH sur les ESX Rem # Script lancé par le serveur UPSAPC sur DIDEROT Rem # Tous les serveurs en cours d'activité sont automatiquement mis en pause Rem # Rem ############################################################################################### @echo off echo ATTENTION! echo COUPURE DES SERVICES RESAUX POUR CAUSE ELECTRIQUE echo -- echo Fermer cette fenetre pour annuler (avec la croix ou Ctrl + C) Rem # Mise en attente ping 127.0.01 -n 5 -w 1000 > nul Rem # Prévention des utilisateurs net send * ATTENTION, en raison de la coupure électrique arrêt de tous les serveurs dans 3 minutes ping 127.0.01 -n 5 -w 1000 > nul putty -load xxxxxxxx -l root -pw xxxxxxxxx-m C:\BAT\preventionArret.sh Rem # Mise en attente de 3 minutes ping 127.0.01 -n 180 -w 1000 > nul Rem # Mise en pause des VM et arrêt des ESX putty -load ESX1 -l root -pw xxxxxxxxxx -m C:\BAT\arretVM.sh putty -load ESX2 -l root -pw xxxxxxxxxx -m C:\BAT\arretVM.sh Rem # Arrêt du serveur shutdown -s -f
Je rencontre deux problèmes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 # NEW - 23/07/2009 - Théo # Script de mise en pause automatique des VM en cas de coupure électrique ######################################################################### # Log du shutdown echo `date` " - Coupure éléctrique, début de la mise en pause des VM" >> /var/log/powershutdown.log; # Récupération de la liste des VM sur l'ESX for str_file in `vmware-cmd -l`; # Récupération du statut de la VM do str_status=`vmware-cmd $str_file getstate`; bool_status=$(echo $str_status | cut -d" " -f3); str_name=$(echo $str_file | cut -d"/" -f5); # Si la VM est ON on essaye de la mettre en pause if [ $bool_status = "on" ]; then `vmware-cmd $str_file suspend`; # Récupération du nouveau statut de la VM str_new_status=`vmware-cmd $str_file getstate`; bool_new_status=$(echo $str_new_status | cut -d" " -f3); # Log de la réussite ou de l'échec de la mise en pause if [ $bool_status = "suspend" ]; then echo "Serveur " $str_name " suspendu avec succès." >> /var/log/powershutdown.log; else echo "Serveur " $str_name " non suspendu." >> /var/log/powershutdown.log; fi; else "Serveur " $str_name " déjà inactif ou suspendu." >> /var/log/powershutdown.log; fi; done; # Arrêt de l'ESX shutdown -h now
1. Apparemment si Veeam Backup pendant ce temps travaille ça met la zone, comment arrêter le job de Veeam de manière propre avant d'arrêter les VM?
2. Après quelques tests, je m'aperçois que la mise en pause n'est pas détectée alors qu'elle a bien lieu. C'est à dire qu'après le `suspend`, le `getstate`met un certain temps à se rafraichir..... Vous avez une idée sur la manière de récupérer à coup sur le nouvel état de la VM après la mise en pause pour vérifier la réussite ou l'échec de l'action ?
Merci de votre aide, Théolude.
Partager