• STATISTIQUES
  • Il y a eu un total de 0 membres et 29738 visiteurs sur le site dans les dernières 24h pour un total de 29 738 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Asp-php
    Tutoriaux sur ASP, PHP, ASP.net, XML, SQL, Javascript, HTML, VML - Scripts et ressources pour webmasters - Forums d&#...
    Programmation
    [EN] This is legal
    Basic: 10, Realistic: 5, Programming: 1, Bonus: 11, SQL: 2, Encryption: 6, Application: 4, User Contributed: 3
    Challenges
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] InfoMirmo
    Apprentissage de l'informatique par l'intermédiaire de challenges de sécurité. Venez app...
    Hacking
    [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [EN] Rosecode
    Programming: 36, Math: 29, Probability: 5, Sequence: 7, Crypto: 4, Brainf**k: 13, TimeRace: 4, Hack: 9
    Challenges
    [FR] Kalkulators
    Ce projet a plusieurs buts, le premier étant l’étude de toutes formes cryptographiques, le cot&ea...
    Cryptographie

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Xen] Cloner vm a chaud.
16-01-2014, 18h12
Message : #1
Junky Hors ligne
Snorky Master
*



Messages : 228
Sujets : 35
Points: 203
Inscription : Mar 2013
[Xen] Cloner vm a chaud.
Bonjour,

Sujet plus administration système que sécurité

Je me suis trouvé récement devant une problématique. Cloner une machine dans Xen.

Le but de la manipulation consiste a cloner une VM à chaud. C'est à dire de ne pas couper le/les service(s).

Existant:

Vous avez un client possédant un gros site web. On peu imaginer une achitecture de la sorte:

Code :
+--------------+                      |----->  Serveur1
|              |                      |------> Serveur2
|    INTERNET  | => HAProxy =>        |------> Serveur3
|              |                      |------> Serveur4
+--------------+                      |----->  Serveur5

Dans cette situation, nous avons donc:
  1. Internet \o/
  2. Notre HAproxy, qui distribue la charge entre les différents serveurs
  3. Nos 5 serveurs web qui sont exactement identiques
  4. LVM

Scénario:

Nous sommes le vendredi 13, et deux terroriste ce sont écrasés sur la tour Montparnasse en ULM (Oh les cons... ). Votre client relais l'info sur son site, et les visites explosent (Normal y'a eu deux morts. :p). Les serveurs prennent de plus en plus de charge. Vous décidez de rajouter une machine dans votre pool Web. Il est bien entendu pas question de tomber un serveur existant afin de le cloner, Il faut qu'ils restent tous actifs.

Nous allons donc essayer de faire la manip sans éteindre de machine et surtout sans tout casser car machine cassé == client pas content Wink


0x01: Petite précision Xen

Je ne sais pas si tout le monde connais Xen (je l'utilise moi même et ne connais pas toutes les subtilités parfaitement sur le bout des doigts). Xen est un hyperviseur de machine virtuelle. Plus précisément, il fait de la paravirtualisation, c'est a dire qu'il faut que le systeme virtualisé soit "modifié" afin de pourvoir tourner correctement dans Xen. La VM a "conscience" de l'existance de l'hyperviseur.

Xen permet de créer donc des VM avec une commande trés facile a comprendre qui est xen-create-image...
Code :
xen-create-image --hostname Manouvellevm --ip X.X.X.X --size 50G --memory 500M

La commande va (je ne rentre pas dans les détails) créer deux lv. Un HOSNAME-disk et un HOSTNAME-swap. Je pense que vous avez assez de connaissances pour comprendre le rôle des deux donc je ne vais pas m'éterniser la dessus.


0x02: C'est tipar

Info:
dom0 = machine physique
domU = machine Virtuelle


On va donc devoir:
  1. Créer les nouveaux LV (celui qui recevra le clone). Il faut créer clone-disk et clone-swap.
  2. Créer un snapshot sur la VM à cloner. Cette procédure permet d'isoler totalement la VM a cloner. On stop l'écriture sur la VM via le snapshot, ce qui évite d'avoir des surprises lors du clonage.
  3. Clonage de la vm via dd
  4. Créer les fichiers de confs sur le dom0 pour la nouvelle VM (/etc/xen).
  5. Paramètrage de la machine. Plusieurs fichiers sur le clone sont à modifier. (hosts, interfaces, hostname)
  6. Boot de la machine, ce qui implique une prière + offrande à Saint RMS
  7. Finalisation des configurations du clone. (puppet,salt,nagios,ssh).
  8. Mail de remerciment pour le soutien de Saint RMS.

0x03: Création des LV pour le clone

Il est vivement conseillé de réaliser les commandes dans un Screen

Se connecter sur le dom0 qui devra acceuillir le clone, se logger en root via un sudo -s et créer les deux lv.
Code :
lvcreate -n NAME-[disk|swap] -L SIZE VG

NAME: le nom du lv + disk ou swap
SIZE: le nouveau lv doit IMPÉRATIVEMENT avoir la même taille que que le lv que nous clonons. Aussi bien pour le swap, que pour le disk. On peu trouver cette information en réalisant un lvdisplay
VG: Le nom du VG dans lequel nous créons notre LV. Faire un vgdiplay pour plus d'informations.


0x04: Création du snapshot

Il faut maintenant créer le snaptshot afin d'isoler la VM a cloner, et de temporiser les écritures.
Code :
lvcreate -s -n NAME /PATH/TO/LV -L SIZE

L'option -s indique que l'on désire créer un snapshot

NAME: Le nom du snapshot
/PATH/../..: Chemin absolu du LV sur lequel nous désirons créer le snapshot
SIZE: La taille du snapshot. Pas la peine de mettre 30G hein Wink Une "temporisation" de 1G est largement suffisante puisque qu'a la fin de la procédure, nous "mergerons" (Un nouveau mot :p ) le snapshot au lv d'origine.

0x05: "Clonage" de la vm

A ce stade, nous avons donc notre LV d'origine "isolé" et notre espace pour le clone de créé. Il nous suffit donc de tout copier avec la commande dd.

Code :
dd if=/PATH/TO/LV-ORI of=/PATH/TO/NEW-LV

Ne pas oublier de le faire aussi pour le swap. Suivant la taille, la copie peu prendre + ou - de temps.

0x06: Modification des fichiers sur le dom0

Il faut créer un NAME.cfg dans le /etc/xen. Copier le MACHINE-ORI.cfg en HOSTNAME.cfg (remplacer MACHINE-ORI et HOSTNAME par les noms qui vont bien.).

Editer le HOSTNAME.cfg et modifier les paths des disks par les nouveaux. Ils se trouvent généralement dans:

Code :
/dev/VG/

Créer aussi une nouvelle adresse MAC avec cette ligne de commande. Les addresses MAC de xen commencent par 00:16:3E.

Code :
perl -e printf "00:16:3E:%02X:%02X:%02X\n", rand 0xFF, rand 0xFF, rand 0xFF

Sauvegarder le le fichier et créer le lien symbolique dans le auto/.

0x07: Modification configuration pour le domU fraichement créé

Monter le clone a gd coup de mount.

Code :
mount /PATH/TO/HOSTNAME-disk /mnt/DIR

Editer et modifier les fichiers suivants afin d'eviter les doublons sur le réseau.

/mnt/DIR/etc/hostname => On change le nom de la machine,
/mnt/DIR/etc/network/interface => On change l'ip de la machine.
/mnt/DIR/etc/hosts => saisir les infos de l'IP et domaine.

Démonter le HOSTNAME-disk

Code :
umount /mnt/DIR

0x08: Enregistrement DNS

Si vous disposez d'un gros réseau, vous avez surment un powerDNS ou un bind. Il faudra donc enregistrer votre nouveau domU.

0x09: Boot du clone, + grosse prière

Démarrer la vm fraichement créé.
Code :
xl create -c /ect/xen/auto/HOSTNAME.cfg

0x0A: Merge du snapshot

Si tout c'est bien passé, nous pouvons merger le snapshot.

Code :
dmsetup remove /PATH/TO/SNAP
lvconvert --merge /PATH/TO/SNAP

0x0B: Conclusion

Voilà comment j'ai procédé, j'avais ensuite pas mal de configurations à faire pour remettre le monitoring en place. Regénérer des clés SSH et des certificats puppet les backup ect... Le temps de mise en place du clone (sans les configs propre au parc) m'a pris 25-30 min. Donc c'est un laps de temps qui je pense n'est pas trop dégueu.

Bon bien entendu tout ce qui a été ecrit sur la machine d'origine apres le snapshot ne sera pas présent sur la nouvelle machine. J'ai fait des test a coup de dd pendant la copy. Ca n'a absolument rien perturbé (normal vous allez dire mais des fois... Smile ) et les copies se sont réalisés sans incident.

V'la une bout d'xp partagé avec vous. Smile

N'hésitez a poser des questions et/ou corriger certaines manip qui vous semblerez pas top du tout.

Junky,
Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier

+1 (8) -1 (0) Répondre
16-01-2014, 18h32
Message : #2
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [Xen] Cloner vm a chaud.
ça c'est du tuto !

(16-01-2014, 18h12)Junky a écrit : Sujet plus administration système que sécurité

nan tu déconnes ? Big Grin
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (1) -1 (0) Répondre
17-01-2014, 15h59
Message : #3
Junky Hors ligne
Snorky Master
*



Messages : 228
Sujets : 35
Points: 203
Inscription : Mar 2013
RE: [Xen] Cloner vm a chaud.
Pour le swap je passe par dd car en générale nos partition swap dans xen.conf fond que: 128Mo

Mais il est tt a fait possible de passer par:

Code :
mkswap

Junky,
Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier

+1 (0) -1 (0) Répondre
18-01-2014, 13h17
Message : #4
thxer Hors ligne
:(){ :|:& };:
*



Messages : 382
Sujets : 60
Points: 162
Inscription : Feb 2013
RE: [Xen] Cloner vm a chaud.
Super pratique ! Merci
Thxer.com
Twitter Thxer_

Code BASH :
echo "JkZ Palx" | sed 'y/lPZaJxk/MG3@tEH/'




+1 (0) -1 (0) Répondre
18-01-2014, 14h51
Message : #5
0pc0deFR
Non-enregistré



 
RE: [Xen] Cloner vm a chaud.
Sympa comme partage. Merci.
positive (0) negative (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Clonage P2V à chaud Linux -> .vdi thxer 0 92 22-12-2014, 10h54
Dernier message: thxer
  [SYS] Modification des ressources à chaud de VM Xen Junky 5 294 14-11-2014, 10h34
Dernier message: memphis
  [LVM] resize DD d'une VM a chaud Junky 3 207 27-05-2014, 18h42
Dernier message: gruik

Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut