OpenVZ : virtualisation légère, performante et amusante
OpenVZ est un système de virtualisation particulier. Il permet de faire tourner de multiples machines virtuelles partageant un seul kernel patché spécialement pour l’occasion. Cette techniques est donc limités à des machines (hôte ou invité) tournant sous linux. En contrepartie les performances sont particulièrement élevés. Il est également très aisé de modifier les particularités physiques des machines virtuelles sans les redémarrer. Cette technique est souvent employée chez les hébergeurs pour les offres « VPS ».
En pratique, c’est utile à des fins de sécurité. On essaie de mettre un seul serveur par VPS (serveur web sur un VPS, MySQL sur un autre, mail encore sur un autre …). Si l’un des serveurs possède une faille de sécurité, les autres serveurs ne pourront alors pas être impactés. Il y a également la facilité à backuper une machine virtuelle et donc au besoin de la dupliquer ou la déplacer. Cependant, on ne peut pas faire de migration à chaud comme certains de ses concurrents.
La création d’une machine ne prend guère plus d’une minute sur une machine correcte, ce qui permet de s’en servir comme d’un moyen de tester des logiciels sans encombrer votre distro. Qui plus est, le lancement d’une machine est quasi instantané, ce qui peut parfois sauver des manchots…
Installation de la bête
Le kernel
Cette partie dépend pas mal de la distro. J’aborderai ici la méthode pour Gentoo, à vous de l’adapter à votre distro.
On commence par installer les source du kernel patché qu’il faudra compiler :
Il faut ensuite adapter la config du kernel :
Rendez-vous dans ///usr/src/linux//
Ensuite, lancez:
Vérifiez que tout en haut il s’affiche bien le nom du kernel openvz : .config – Linux Kernel v2.6.27-openvz-briullov.1-r2 Configuration
Dans OpenVZ cochez tout (personnellement je préfère mettre en module le plus possible car je ne l’utilise pas tout le temps).
Puis allez dans Filesystems là vous aurez VPS Filesystems et Virtuozzo Disk Quota support, à ajouter également.
Maintenant enregistrez la config puis compilez votre tout nouveau kernel patché avant de faire une pause IRC :
make modules
make modules install
Mettez votre kernel au chaud et préparez le reboot :
Ajoutez ces lignes en adaptant à votre cas dans /boot/grub/menu.lst :
root (hd0,0)
kernel /boot/kernel_vz root=/dev/sde1
Si vous avez suivit ces instructions sans virer ce qu’il y avait avant, vous ne devriez pas foirer votre machine : l’ancien kernel est toujours présent et le grub possède juste des lignes en plus. Donc maintenant faut tester avec un reboot en choisissant la nouvelle entrée du grub.
Si vous parvenez à reboot alors vous venez de faire le plus dur !
Un petit uname -r peut confirmer que vous tournez sur le noyau modifié.
Passons dès maintenant à la suite.
Les outils
OpenVZ se pilote avec la commande vzctl donc installons la :
Maintenant vous avez le kernel, les outils, il ne manque plus que les templates qui sont en faites les distros que vous pourrez monter en quelques secondes.
Vous pouvez les créer vous même mais généralement vous trouverez chaussure à votre pied sur le site officiel qui propose déjà une petite collection de templates pré-créés.
http://download.openvz.org/template/precreated/
Vous devrez les télécharger dans le dossier /vz/template/cache.
Prise en main du monstre
Ça y est : c’est tout bien installé et ça ne demande plus qu’à tourner.
Le script de démarrage fonctionne à merveille puisqu’il charge bien les modules (et les décharge en cas d’arrêt).
Pour faire en sorte de le lancer au démarrage de la machine :
Création d’une machine
OpenVZ a pour objectif de faire tourner de nombreuses machines virtuelles simultanément. Elles sont numérotées (en commençant à 101). Ce numéro se nomme CTID. Imaginons que vous ayez un template debian-5.0-x86:
Pendant quelques secondes ça mouline et vous pond une ptite Lenny des familles.
Configurons la pour qu’elle puisse rejoindre notre réseau :
Là je lui attribut un petit nom, une IP, un DNS, un quota de disque dur ainsi qu’un quota d’utilisation du processeur.
Bon c’est bien joli mais maintenant faut la faire tourner histoire de voir ce qu’on peut en tirer :
Et bha voilà elle est là … « Up & Running ».
Entrer et interagir avec une machine
Pour aller utiliser une machine rien de plus simple :
Sachez également que les templates pré-créés sur le site officiel possèdent toute un serveur SSH qui tourne afin de vous faciliter la tâche.
Il est possible d’exécuter des commandes dans une machine sans y rentrer :
Configurer un peu plus la bestiole
Il est possible de modifier la machine invitée pendant qu’elle tourne afin de lui ajouter de la ram, augmenter son quota d’espace disque ou bien restreindre son utilisation max de cpu. Pour cela vous devrez faire appel encore une fois à vzctl.
Modifier le bridage CPU
Il est donc possible de brider le pourcentage de processeur qu’une machine virtuelle peut utiliser afin d’éviter qu’une machine se goinfre et lèse le reste. Pour cela :
En sachant que chaque processeur représente 100%, si vous possédez une machine quadcore, vous pouvez jouer de 0 à 400%.
Vous constaterez que la modification est prise en compte immédiatement.
Modifier le quota de disque dur
Attribuons plus d’espace à une machine :
Modifier la quantité de RAM
C’est la commande la plus complexe :
vzctl set $CTID$ --privvmpages $((512 * 1024)) --save
Là on passe à 512 Mo de ram avec possibilité de monter en pic à 1024.
vzctl set $CTID$ --privvmpages $((256 * 512)) --save
Là on passe à 256 avec possibilité de monter en pic à 512.
Vous voyez le principe …
Les paramètres réseaux
Le nom des paramètres est assez explicite.
Créer ou modifier le mot de passe d’un utilisateur
Il est possible de modifier le mot de passe d’un utilisateur (pratique en cas de boulette pour rester propre). Si l’utilisateur n’existe pas, il sera créé dans la foulée.
Tout le reste
Lancer une machine au boot
Il faut avoir lancé OpenVZ au boot. Il faut ensuite :
Configurer un peu tout
Il est possible et plus pratique de modifier la configuration directement dans le fichier de conf de la machine dans le fichier /etc/vz/conf/$CTID$.conf
Manipulons le bouzin
Voici à peu près tout ce que l’on peut faire.
- Créer une machine avec create
- Démarrer une machine avec start
- Stopper une machine avec stop
- Rentrer dans une machine avec enter
- Supprimmer une machine avec destroy
Pour plus de commandes :
Oui mais après ?
Ça y est vous savez créer vos machines en moins de trois minutes et gérer leur ressources comme un héros des temps modernes. Mais que faire de ce petit monde ?
Comme expliqué plus haut la virtualisation à pour but de fiabiliser une infrastructure. On peut déplacer une machine virtuelle l’une machine physique à une autre, on isole les différents serveurs publiques afin de limiter l’impact des failles de sécurité …
Il vous faut donc expérimenter ces différentes tâches afin de pouvoir parer l’imprévu. Replancher la gestion de son petit script iptables pour adapter son réseau à ce nouveau fonctionnement.
Le chemin est tout tracé…
Pour faire des backups et des restaurations aisées, il y’a vzdump qui fonctionne très bien et qui est rempli de pleins de surprises: http://wiki.openvz.org/Backup_of_a_running_container_with_vzdump
De même pour avoir une petite collection de template déjà prettes : http://wiki.openvz.org/Download/template/precreated
Les migrations à chaud :
http://wiki.openvz.org/Checkpointing_and_live_migration
(freeze de qq secondes, et ça repart comme si de rien n’était)
Vzdump fait tous cela… c’est un script …
Avec vserver, avec mes scripts home_made, je migre un vserver avec environ 10 secondes de coupures.
10 secondes… c’est encore assez énorme, je trouve.
10 secondes ça peut passer pour un lag 🙂
Mais un gros :p
vzctl exec $CTID$ rm -rf /
Bouh le méchant lol 😉
Thks pour ce petit article qui permet de se faire une idée en qq secondes.
i46pcr
nqhxcl