in

Comment sauvegarder gratuitement des machines virtuelles Citrix Xen avec Xen-pocalypse (Bash)

Avez-vous déjà eu besoin de sauvegarder vos machines virtuelles (VM) Citrix Xen, mais vous ne vouliez pas casser la banque en le faisant? HTG a juste le script bash pour vous avec Xen-pocalypse.

L’un des avantages de Citrix Xen est que bon nombre de ses fonctionnalités sont payantes. Cela dit, si vous voulez la fonction «Protection et récupération automatisées des VM», vous devrez commencer à payer pour la licence «Advance». Même dans ce cas, vous ne payez que pour les sauvegardes au niveau du disque, qui ne sont pas suffisantes pour de nombreux types de charges de travail telles que Active Directory, bases de données et etc. l’état de la machine, y compris le contenu de la RAM. Cependant, cette fonctionnalité fait partie des éditions «Entreprise» et «Platine», qui sont encore plus chères. Ce n’est pas que chez HTG nous rejetons la valeur d’un véritable logiciel de sauvegarde, mais si vous avez un budget serré et que cela ne vous dérange pas de temps d’arrêt pour l’opération de sauvegarde, vous pourriez trouver que Xen-pocalypse est une solution parfaitement raisonnable. avant de vous engager dans le budget.

Aperçu

Le «cas d’utilisation»: vous avez quelques machines virtuelles qui nécessitent une sauvegarde. «Éteindre une VM et l’exporter sous forme de fichier» à partir du «Xen Center» en utilisant des clics droits fonctionne bien, mais vous voulez que ce processus se déroule automatiquement et selon un calendrier. Ce script Bash utilise la commande «XE» pour exécuter ses tâches. XE est l’interface de ligne de commande (CLI) Xen, équivalent automatique pour l’émission des «clics droits» dans le «Xen Center». Nous allons appeler le script de Cron qui fournira la partie «planification». Dans sa forme la plus simple, le flux de sauvegarde est:

  • Éteignez la machine virtuelle cible.
  • Exportez la VM sous forme de fichier vers l’emplacement de sauvegarde.
  • Si la VM était allumée, avant le début de la sauvegarde, elle sera réactivée.

Faisons craquer 🙂

Obtenez le script

Xen-pocalypse peut être librement obtenu depuis github, en utilisant les méthodes git habituelles. Cela dit, si vous n’êtes pas versé dans git pourtant, vous pouvez récupérer le fichier zip avec ce lien. Comme le script doit s’exécuter sur l’un de vos serveurs Xen, vous devez l’extraire ici afin que les autorisations d’exécution soient préservées.

wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
unzip master

Bien que ce qui précède fonctionne, il est conseillé d’utiliser la méthode GIT, afin de pouvoir bénéficier des futures mises à jour.

Obtenir SendEmail (facultatif)

Nous avons écrit sur le programme perl SendEmail dans le passé, il n’est donc pas nécessaire de le répéter ici. Qu’il suffise de dire que cela fonctionne de la même manière sous Linux que sous Windows.

Bien que l’activation du courrier électronique soit facultative, elle est fortement recommandée car le script pourra alors:

  • Vous informer quand il a commencé et a fini de fonctionner.
  • Vous alerter de toutes les erreurs qu’il a pu détecter et traiter.
  • Informez-vous des disqualifications de sauvegarde en raison de problèmes d’espace. (Ce comportement peut être désactivé s’il n’est pas souhaité)

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éfinition des balises

Citrix Xen vous offre la possibilité de configurer des «champs personnalisés» pour les capacités de filtrage. Nous allons créer les champs puis les remplir avec les informations utilisées par Xen-pocalypse. Xen-pocalypse reconnaît 3 TAG de contrôle qui désignent le nom de la balise pour la sauvegarde et les relations parent-enfant. Si vous n’avez pas l’intention d’utiliser la méthode d’entrée de fichier, vous DEVEZ créer au moins le champ de nom de balise de sauvegarde.

Pour ce faire, ouvrez les propriétés du serveur ou même d’une VM. Dans le volet de navigation, sélectionnez «Champs personnalisés».

Si c’est la première fois que vous définissez une relation (comme dans l’exemple ci-dessus), vous n’aurez aucun champ dans lequel saisir 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 apparaît, cliquez sur «Ajouter…»

Créez trois (3) champs de type «Texte». L’un s’appellera «BackupTAG» et les autres «Parent» et «Children».

Les noms des champs personnalisés ont été «codés en dur» dans le script, vous NE DEVEZ donc pas vous écarter de l’orthographe ci-dessus, sauf si vous changez également le code correspondant.

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 «Children» à remplir, comme dans l’image ci-dessous.

Il ne vous reste plus qu’à désigner quelles VM appartiennent à quel «BackupTAG».
Par exemple, dans l’entreprise où le script a été développé, nous avions des VM qui devaient être sauvegardées chaque semaine le jeudi et le vendredi, un calendrier pour notre Atlassian machines virtuelles de produit et certaines ne devaient être sauvegardées qu’une fois par mois. Notre aperçu ressemblait donc à:

Où, par exemple, «hebdomadaire-vendredi» était le texte que nous avons entré dans le «champ personnalisé» «BackupTAG». Neat hein? 🙂

Parents et enfants (facultatif)

La vraie beauté de ce script est qu’il prend en charge les relations «parent» à «enfant». Autrement dit, il est possible de définir une liste de VM « enfants » qui seraient désactivées et sauvegardées avant le parent, et que ces enfants ne seront réactivés qu’une fois que le parent aura terminé sa sauvegarde et sera réactivé sur. Cela est utile dans les cas où la désactivation de la machine virtuelle parente entraînera l’indisponibilité du service de l’enfant. Une telle chose signifierait que le service sur la VM enfant serait indisponible deux fois, une fois pour le processus de sauvegarde de l’enfant et une fois pour celui du parent. Créer cette relation surmonte ce problème.

Par exemple, toutes nos VM Atlassian utilisaient une seule VM DataBase (DB), qui était également configurée pour être sauvegardée. Ainsi, en notant que la VM DB est un «Parent» des autres VM, un ordre d’arrêt correct -> sauvegarde -> démarrage, peut être assuré.

Au moment d’écrire ces lignes, cette fonction comporte quelques mises en garde:

  1. Les noms des machines virtuelles qui doivent avoir une telle relation ne peuvent pas contenir d’espaces. Vous devrez supprimer les espaces de vos noms de VM, car ils seront délimités par des espaces, comme dans l’exemple ci-dessous.
  2. Il ne peut y en avoir qu’un parent. Désigner plus d’un n’est même pas prévu, sans parler des tests.

Pour créer cette relation, accédez aux 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 peut entraîner sa double sauvegarde.

La méthode FILE (facultatif)

Pour des raisons historiques, Xen-pocalypse prend également en charge l’obtention de la liste des VM à sauvegarder sous forme de fichier texte. Tant que le «code» est toujours là, la fonctionnalité est sévèrement inférieur à la méthode TAG et donc déconseillée. Cela dit, si vous préférez utiliser la méthode de liste pour une raison quelconque, les restrictions suivantes s’appliquent:

  1. Les noms des VM ne peuvent pas contenir d’espaces ni de caractères spéciaux.
  2. Il ne peut y avoir qu’un seul nom de machine virtuelle par ligne.
  3. Les lignes vides ne sont pas autorisées.

Pour générer la liste, copiez le nom de la VM à partir du centre Xen ou exécutez sur un hôte Xen:

xe vm-list | grep name-label | awk '{ print $4 }' | sort

Copiez la liste ci-dessus dans un fichier texte normal.

L’emplacement de sauvegarde

En cherchant au hasard dans Citrix Xen, j’ai constaté que le Référentiels de stockage (SR) sont disponibles pour une utilisation sous «/ var / run / sr-mount /% UUID%» où UUID est 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 (comme cela se produit avec le montage à partir de la ligne de commande), mais en faisant cela dépasse donc le cadre 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, alors choisissez «Partage de fichiers Windows (CIFS)»:

Terminez le suivant -> Suivant -> Terminer.

Obtenir l’UUID du SR

Pour obtenir l’UUID d’un SR, cliquez simplement sur son nom dans Xen Center et allez dans l’onglet «Général».

Afin de copier l’UUID, cliquez simplement dessus avec le bouton droit de la souris et choisissez «copier».

Avec ces informations à portée de main, vous êtes prêt à modifier le fichier de paramètres.

Configurez le fichier de paramètres.

Le projet Xen-pocalypse est livré avec un modèle de fichier «settings». Ce modèle doit être modifié pour refléter votre configuration et transmis comme premier argument du script. Le fichier de paramètres désigne les éléments suivants:

pour obtenir les VM à sauvegarder – La méthode par défaut est les TAG. Vous pouvez le changer en FILE, mais ce n’est pas recommandé.

de la destination de sauvegarde – Si vous avez suivi le guide jusqu’à présent, il vous suffit de remplacer le% UUID% par le SR tel qu’il a été obtenu ci-dessus.

– Si vous avez choisi d’activer le courrier électronique, vous devez saisir ici où vous avez extrait l’exécutable perl.

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.

– Ce paramètre est réglé sur «Non» par défaut, car tout en l’activant, cela produira un fichier de sauvegarde plus petit, cela entraînera également l’exécution de la procédure de sauvegarde pendant une durée considérablement plus longue.

sur la destination – Cela permettra au script de vérifier que la sauvegarde de la VM ne fera pas chuter l’espace libre de l’emplacement de sauvegarde en dessous de 10 Go. Cela permet de garantir que le plus grand nombre de machines virtuelles est sauvegardé au lieu d’une seule très grande machine virtuelle. Le calcul est effectué en utilisant la taille totale du disque brut de tous les disques durs associés à la machine virtuelle.

– Par défaut, le débogage est 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 / planification

Dans sa forme la plus simple, une invocation de Xen-pocalypse ressemblerait à:

./Xen-backup.sh settings.cfg weekly-fri

Où dans le cas ci-dessus, nous sommes dans le répertoire qui contient le script et le fichier de paramètres. La « balise » que le script recherchera est « hebdomadaire-ven ».

Comme indiqué ci-dessus, nous utiliserons Cron pour planifier l’exécution. Avant d’entrer dans la configuration, c’est que vous configurez le package SSMTP déjà installé sur votre serveur Xen. Bien qu’il s’agisse d’une étape facultative, cela vous donnera un collecteur de rétrolavage. Avoir un tel «collecteur à contre-courant» peut vous alerter des choses que le script ne peut pas faire.

Entrez davantage dans l’édition de cron en émettant:

crontab -e

Si vous avez suivi les instructions ci-dessus et que vous souhaitez ajouter une sauvegarde planifiée pour vendredi à 18h01 (18h01), saisissez ce qui suit:

01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg weekly-fri

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’aie 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 vos ennuis.

Le progrès

Vous pouvez utiliser cette ligne unique pour «surveiller» rapidement toutes les tâches en cours, pour voir si elles progressent réellement ou si elles sont réellement bloquées.

while [ -e /dev/null ]; do for VM in "$( xe task-list | grep uuid | awk '{print $5}' )" ; do  xe task-param-get  param-name=progress uuid=$VM ;sleep 1; done; done

Pour arrêter de regarder, utilisez Ctrl + C pour freiner la «boucle while».

Enregistrement

Toute «journalisation» est collectée par l’hôte Xen exécutant le script dans le mécanisme syslog. Ceci peut bien sûr être visualisé avec:

less +F /var/log/messages

Vous recherchez le mot clé «Xen-pocalypse».

Remarque: Citrix a défini une politique de rétention de deux (2) jours pour le journal système de ses serveurs. Vous voudrez peut-être garder cela à l’esprit pour les post-mortems.

Débogage

Comme indiqué dans le segment du fichier de paramètres, il existe une directive pour activer le débogage. L’activation du débogage amènera le script à afficher une journalisation détaillée sur la console et l’empêchera d’envoyer des e-mails et d’effectuer réellement les exportations, à moins que les indicateurs appropriés 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 précisément ce que vous souhaitez déboguer.

J’espère que vous n’avez pas eu besoin de débogage et que vous récoltez les fruits de mon travail 🙂

Thrust, mon homme, vous êtes sur le point de devenir le premier trompette …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Quelle est la différence entre un portefeuille Bitcoin et un échange?

Quelle est la différence entre un portefeuille Bitcoin et un échange?

Profitez de la puissance des dictionnaires et des thésaurus à la demande avec WordWeb

Profitez de la puissance des dictionnaires et des thésaurus à la demande avec WordWeb