Comment sauvegarder des VM Citrix Xen gratuitement avec Xen-pocalypse (Bash)
Avez-vous déjà eu besoin de sauvegarder vos machines virtuelles Citrix Xen mais vous ne vouliez pas casser votre compte en banque? HTG a juste le script bash pour vous avec Xen-pocalypse.
Image de h.koppdelaney, coincée dans Custom et Hotfortech.
L’un des avantages de Citrix Xen est que bon nombre de ses fonctionnalités sont libre frais. Cela dit, si vous souhaitez utiliser la fonction «Protection et restauration automatisées des ordinateurs virtuels», vous devez commencer à payer pour la licence «Advance». Même dans ce cas, vous ne payez que pour des sauvegardes au niveau du disque, qui ne suffisent pas pour de nombreux types de charges de travail telles qu'Active Directory, Bases de données, etc. Pour éviter ce problème, vous pouvez utiliser la fonction «Instantané de la mémoire en direct et restauration». état de la machine, y compris le contenu de la RAM. Cependant, cette fonctionnalité fait partie des éditions «Enterprise» et «Platinum», qui sont encore plus chères. Chez HTG, nous ne rejetons pas la valeur d'un véritable logiciel de sauvegarde, mais si votre budget est serré et que vous ne perdez pas un temps d'arrêt pour l'opération de sauvegarde, vous pourriez penser que Xen-pocalypse est une solution parfaitement raisonnable. avant de prendre l'engagement budgétaire.
Vue d'ensemble
Le «cas d'utilisation»: vous avez plusieurs machines virtuelles nécessitant une sauvegarde. Le «Désactivation d’une machine virtuelle et son exportation sous forme de fichier» à partir du «Centre Xen» à l’aide d’un clic droit fonctionne correctement, mais vous souhaitez que ce processus soit automatique et planifié. Ce script Bash utilise la commande “XE” pour effectuer ses tâches. XE est l'interface de ligne de commande (CLI) Xen, l'équivalent automatique pour l'émission des «clics droits» dans le «Centre Xen». Nous allons appeler le script de Cron qui fournira la partie "planification". Dans sa forme la plus simple, le flux de sauvegarde est le suivant:
- Désactiver la machine virtuelle cible.
- Exporter la VM en tant que fichier vers l'emplacement de sauvegarde.
- Si la machine virtuelle a été allumée, elle sera réactivée avant le démarrage de la sauvegarde..
Permet de craquer :)
Obtenir le script
Xen-pocalypse peut être obtenu librement de github, en utilisant les méthodes habituelles de git. Cela dit, si vous n'êtes pas encore familiarisé avec git, vous pouvez récupérer le fichier zip avec ce lien. Comme le script doit être exécuté sur l'un de vos serveurs Xen, vous devez l'extraire à cet emplacement afin que les autorisations d'exécution soient préservées..
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
décompresser le maître
Bien que ce qui précède fonctionne, il est conseillé d’utiliser la méthode GIT afin de pouvoir bénéficier de mises à jour futures..
Obtenir SendEmail (facultatif)
Nous avons déjà écrit sur le programme perl SendEmail, il est donc inutile de répéter ici. Disons simplement que cela fonctionne de la même manière sous Linux que sous Windows.
Bien que l’activation de la messagerie électronique soit facultative, il est vivement recommandé, car le script pourra alors:
- Vous informer quand il a commencé et fini de courir.
- Vous avertir des erreurs qu'il a pu détecter et traiter.
- Informer des disqualifications de sauvegarde en raison de problèmes d'espace. (Ce comportement peut être désactivé si vous ne le souhaitez pas)
Téléchargez-le sur le serveur Xen et extrayez-le.
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz
Notez l'emplacement où vous l'avez extrait. Vous en aurez besoin pour le fichier de paramètres.
Définir les balises
Citrix Xen vous permet de configurer des «champs personnalisés» pour les fonctionnalités de filtrage. Nous allons créer les champs, puis les renseigner avec les informations utilisées par Xen-pocalypse. Xen-pocalypse reconnaît 3 TAG de contrôle qui désignent le nom du tag pour la sauvegarde et les relations parent à enfant. Si vous ne souhaitez pas utiliser la méthode de saisie de fichier, vous DEVEZ créer au moins le champ Nom de la balise de sauvegarde..
Pour ce faire, ouvrez les propriétés du serveur ou même d'une machine virtuelle. Dans le volet de navigation, sélectionnez «Champs personnalisés»..
Si vous définissez une relation pour la première fois (comme dans l'exemple ci-dessus), vous ne disposerez d'aucun champ dans lequel entrer des données. Vous devez donc les créer. Pour ce faire, cliquez sur «Modifier les champs personnalisés» dans la boîte de dialogue qui s’affiche, puis sur «Ajouter…».
Créez trois (3) champs de type «Texte». L'un s'appellera «BackupTAG» et les autres «parent» et «enfants».
Remarque: Les noms des champs personnalisés ont été «codés en dur» dans le script, vous ne devez donc PAS dévier de l'orthographe ci-dessus, à moins que vous ne changiez également le code approprié..
Une fois que tous les champs ont été créés, vous devriez voir:
Fermez la fenêtre. Vous devriez maintenant avoir les champs «BackupTAG», «Parent» et «Enfants» à remplir, comme dans l’illustration ci-dessous..
Il ne vous reste plus qu’à désigner les machines virtuelles appartenant à ce que “BackupTAG”.
Par exemple, dans l'entreprise où le script a été développé, nous avions des ordinateurs virtuels à sauvegarder hebdomadairement jeudi et vendredi, un calendrier pour nos ordinateurs virtuels de produits Atlassian et certains à sauvegarder uniquement tous les mois. Notre vue d'ensemble ressemblait donc à:
Où, par exemple, «hebdomadaire-vendredi» était le texte que nous avons saisi dans «BackupTAG» «Champ personnalisé». Neat hein? :)
Parents et enfants (facultatif)
La beauté de ce script réside dans le fait qu’il prend en charge les relations «parent» à «enfant». Autrement dit, il est possible de définir une liste de machines virtuelles «enfants» qui seraient désactivées et sauvegardées avant le parent, et que ces enfants ne seront réactivés que lorsque le parent aura terminé sa sauvegarde et ce qu'il aura été restauré. sur. Ceci est utile dans les cas où la mise hors tension de la machine virtuelle parent entraînera l'indisponibilité du service dans l'enfant. Cela signifierait que le service sur la machine virtuelle enfant ne serait pas disponible deux fois, une fois pour le processus de sauvegarde de l'enfant et une fois pour le parent. Créer cette relation surmonte ce problème.
Par exemple, toutes nos machines virtuelles Atlassian utilisaient une seule machine virtuelle DataBase (DB), qui était également configurée pour être sauvegardée. Donc, en notant que la machine virtuelle DB est un «parent» des autres machines virtuelles, un ordre correct d'arrêt -> sauvegarde -> démarrage peut être assuré.
Au moment d'écrire ces lignes, cette fonction a quelques mises en garde:
- Les noms des machines virtuelles devant créer une telle relation ne peuvent pas contenir d'espaces. Vous devrez supprimer des espaces de vos noms de machine virtuelle, car ils seront délimités par des espaces, comme dans l'exemple ci-dessous..
- Il ne peut y avoir qu'un seul parent. Désigner plus d'un n'est même pas prévu, pour ne pas dire testé.
Pour créer cette relation, allez dans les propriétés de la VM. S'il s'agit d'un «parent», écrivez qui sont ses enfants et s'il s'agit d'un «enfant», écrivez qui est son parent. Par exemple:
Remarque: le fait de ne pas désigner un parent pour un enfant peut entraîner le démarrage de l'enfant avant que son parent ne soit prêt et le sauvegarder deux fois..
La méthode FILE (facultatif)
Pour des raisons historiques, Xen-pocalypse permet également de sauvegarder la liste des ordinateurs virtuels sous forme de fichier texte. Même si le «code» est toujours présent, la fonctionnalité est très inférieure à la méthode des balises et n’est donc pas recommandée. Cela dit, si vous préférez utiliser la méthode list pour une raison quelconque, les restrictions suivantes s'appliquent:
- Les noms des machines virtuelles ne peuvent contenir ni espaces ni caractères spéciaux.
- Il ne peut y avoir qu'un seul nom de machine virtuelle par ligne.
- Les lignes vierges ne sont pas autorisées.
Pour générer la liste, copiez le nom de la machine virtuelle depuis le centre Xen ou exécutez-le sur un hôte Xen:
xe vm-list | étiquette de nom grep | awk
'print $ 4' | Trier
Copiez la liste ci-dessus dans un fichier texte normal.
Le lieu de sauvegarde
En cherchant de manière aléatoire dans Citrix Xen, j’ai constaté que les référentiels de stockage (SR) étaient disponibles sous «/ var / run / sr-mount /% UUID%», où UUID était l’identifiant unique du SR, qui peut être obtenu à partir de l'interface graphique.
Cela signifie que nous pouvons utiliser l'assistant habituel «Suivant -> Suivant -> Terminer» pour créer le montage à l'emplacement de sauvegarde souhaité, puis demander au script d'utiliser ce chemin (pour éviter de modifier le montage à partir de la ligne de commande). donc est au-delà de la portée de ce guide.
Pour créer un nouveau “montage”, cliquez avec le bouton droit sur le nom du serveur et sélectionnez Nouveau SR..
Dans cet exemple, nous allons pointer Xen vers un partage Windows, choisissez donc «Partage de fichiers Windows (CIFS)»:
Terminez le suivant -> Suivant -> Terminer.
Obtenir l'UUID du SR
Pour obtenir un UUID de SR, il suffit de cliquer sur son nom dans le Xen Center et de cliquer sur l'onglet "Général"..
Pour copier l’UUID, faites simplement un clic droit dessus et choisissez «copier».
Avec ces informations à portée de main, vous êtes prêt à modifier le fichier de paramètres..
Configurer le fichier de paramètres.
Le projet Xen-pocalypse est fourni avec un modèle de fichier «paramètres». Ce modèle doit être modifié pour refléter votre configuration et transmis en tant que premier argument au script. Le fichier de paramètres désigne les éléments suivants:
La méthode pour obtenir les ordinateurs virtuels à sauvegarder - La méthode par défaut consiste à utiliser des balises. Vous pouvez changer cela en FICHIER, mais ceci n'est pas recommandé.
L'emplacement de la destination de la sauvegarde - Si vous avez suivi le guide jusqu'à ce point, il vous suffit de remplacer le% UUID% par les SR tels qu'ils ont été obtenus ci-dessus..
L'emplacement de SendEmail - Si vous avez choisi d'activer la messagerie électronique, vous devez entrer où vous avez extrait l'exécutable Perl ici..
Email details - Encore une fois, si vous avez activé le courrier électronique, vous devez définir des détails tels que: À, De, Nom du serveur / IP, etc..
Compression - Cette option est définie sur «Non» par défaut, car son activation produira un fichier de sauvegarde plus petit, mais entraînera également une exécution de la procédure de sauvegarde beaucoup plus longue..
Vérifier l'espace libre sur le destinataire: le script vérifie que la sauvegarde de la machine virtuelle n'entraînera pas une perte d'espace libre de l'emplacement de sauvegarde inférieur à 10 Go. Ceci est fait pour garantir que le plus grand nombre de VMs sont sauvegardés au lieu d'un seul très gros VM. Le calcul est effectué en utilisant la taille totale du disque de tous les disques durs associés à la machine virtuelle..
Débogage - Par défaut, le débogage doit être désactivé avec la valeur «0» (zéro). Vous ne devriez pas avoir besoin de l'activer, mais si vous le faites, plus d'informations sont notées dans le segment de dépannage.
Exécution / ordonnancement
Dans sa forme la plus simple, une invocation de Xen-pocalypse ressemblerait à ceci:
./Xen-backup.sh settings.cfg hebdomadaire-ven
Où dans le cas ci-dessus, nous sommes dans le répertoire qui contient le script et le fichier de paramètres. La «balise» recherchée par le script est «hebdomadaire-vendredi»..
Comme indiqué ci-dessus, nous utiliserons Cron pour planifier l'exécution. Avant d’entrer dans la configuration, c’est hautement recommandé que vous configuriez le package SSMTP déjà installé sur votre serveur Xen. Bien qu’il s’agisse d’une étape facultative, vous obtiendrez un collecteur de lavage à contre-courant. Avoir un tel "collecteur de lavage" peut vous alerter de choses que le script n'est pas capable de faire..
Entrez dans l'édition de cron plus en publiant:
crontab -e
Si vous avez suivi les instructions ci-dessus et que vous souhaitez ajouter une sauvegarde planifiée pour vendredi à 18h01, entrez les informations ci-dessous:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg hebdomadaire-ven
Ce qui précède est correct en supposant que votre script et votre fichier de paramètres se trouvent tous les deux sous «/ root / Xen-pocalypse-master /»..
Dépannage
Bien que j'ai déployé beaucoup d'efforts pour rendre le script aussi facile à utiliser et aussi infaillible que possible, «le monde est un laboratoire plus grand». Les informations ci-dessous peuvent vous aider à déterminer quelle est la source de vos problèmes.
Le progrès
Vous voudrez peut-être utiliser ce support pour «observer» rapidement toutes les tâches en cours, pour voir si elles progressent réellement ou si elles sont réellement bloquées..
tandis que [-e / dev / null]; do pour VM dans "$ (xe liste de tâches | grep uuid | awk 'print $ 5')"; do xe tâche-param-get nom-paramètre = progress uuid = $ VM; sommeil 1; terminé; terminé
Pour arrêter de regarder, utilisez Ctrl + C pour freiner la "boucle While".
Enregistrement
Tous les «enregistrements» sont collectés par l'hôte Xen exécutant le script dans le mécanisme syslog. Ceci bien sûr peut être vu avec:
less + F / var / log / messages
Vous recherchez le mot clé "Xen-pocalypse".
Remarque: Citrix a défini une stratégie de rétention de deux (2) jours pour syslog de ses serveurs. Vous voudrez peut-être garder cela à l'esprit pour l'après-mort.
Débogage
Comme indiqué dans le segment de fichier de paramètres, une directive permet d'activer le débogage. Si vous activez le débogage, le script produira une journalisation détaillée sur la console et l'empêchera d'envoyer des courriers électroniques et d'exécuter les exportations, à moins que les indicateurs correspondants ne soient également définis. Les indicateurs possibles sont notés dans le modèle de fichier de paramètres et vous permettent de définir avec précision ce que vous souhaitez déboguer..
J'espère que vous n'avez besoin d'aucun débogage et que vous récoltez les fruits de mon travail :)
Poussée, mon homme, tu es sur le point de devenir le premier decepticon…