Virtualisez vos serveurs linux avec OpenVZ !

C’est parti ! Pour ce premier tutoriel, j’ai choisi de parler de virtualisation, et plus particulièrement de la virtualisation de serveurs linux avec OpenVZ.

Après une introduction à la virtualisation, ce tutoriel vous guidera dans la mise en oeuvre et l’utilisation au quotidien de serveurs virtuels avec OpenVZ.

La virtualisation est un procédé permettant de faire fonctionner plusieurs systèmes d’exploitation sur un même matériel, comme s’ils étaient installés sur des matériels physiques distincts.

Pour y parvenir, on installe généralement sur une machine physique un système d’exploitation, dit système hôte, et des logiciels complémentaires conçus ou adaptés afin d’héberger des machines virtuelles. Chaque machine virtuelle héberge à son tour un système d’exploitation dit système invité, et donne à ce dernier l’illusion de fonctionner sur une machine physique.

Sur des serveurs, la virtualisation offre de nombreux avantages. A mes yeux, les principaux sont les suivants :

  • Beaucoup de serveurs sont sous exploités la plupart du temps. Ils sont généralement dimensionnés afin de répondre de façon satisfaisante aux pics de charge, mais se tournent les pouces une bonne partie de la journée. La virtualisation permet de mutualiser et donc de mieux exploiter les ressources physiques des serveurs en leur faisant rendre davantage de services tout en évitant de mélanger sur un même système d’exploitation plusieurs applications distinctes (ce qu’il faut vraiment éviter). Plus d’applications sur moins de serveurs, c’est plus économique en matériel, ça consomme moins d’énergie (moins d’électricité), ça produit moins de chaleur (donc moins de climatisation dans la salle technique et encore moins d’électricité consommée), c’est mieux pour vous et pour la planète.
  • Installer des serveurs virtuels est beaucoup plus facile et rapide que d’installer un serveur physique. Grâce à la virtualisation de serveurs, on peut créer, cloner, supprimer rapidement des serveurs virtuels. L’administrateur système qui voit débouler son responsable pour lui annoncer qu’il a besoin d’installer 3 nouvelles applications sur les serveurs pour un projet qui doit débuter avant-hier peut rester serein. Inutile de déballer et de brancher à l’arrache dans un coin de la salle technique le nouveau serveur reçu la semaine dernière (ou un PC de bureau en attendant mieux) pour y installer lesdites applications tout allumant un cierge pour qu’elles ne se perturbent pas les unes les autres. Il suffit de se connecter sur un serveur hôte et d’y créer 3 nouvelles machines virtuelles, une pour chaque application. C’est prêt en 10 minutes et les applications seront bien séparées.
  • Les serveurs virtuels sont indépendants des spécificités des serveurs physiques qui les exécutent. Un changement dans l’architecture du matériel du système hôte n’a pas d’impact pour les systèmes invités. Il est donc possible de déplacer un serveur virtuel d’un serveur physique à un autre sans autre complexité que la copie de fichiers d’un serveur physique à un autre. Cela facilite vraiment le travail de l’administrateur système et minimise la durée des interruptions de service dans deux situations fréquentes : le remplacement des serveurs physiques vieillissants, et les opérations de maintenance programmées, pour lesquelles un arrêt temporaire du serveur physique est nécessaire.

Bref, la virtualisation, ça fait gagner beaucoup de temps, c’est économique et écologique. Pour une présentation un peu plus détaillée de ce qu’est la virtualisation, je vous suggère cet article sur wikipédia.

J’utilise principalement OpenVZ comme procédé de virtualisation sur les serveurs que j’administre. Contrairement à d’autres logiciels de virtualisation comme KVM, VirtualBox (ou VMWare dans le monde propriétaire) OpenVZ n’est pas un logiciel de virtualisation complète, c’est à dire qu’il ne cherche pas à donner au système invité l’illusion qu’il se trouve dans un serveur physique dédié. OpenVZ permet de cloisonner le système d’exploitation du serveur hôte de manière a constituer des environnements virtuels qui ne se voient pas entre eux et à répartir les ressources physiques du serveur parmi ces environnements virtuels.

Pour virtualiser des serveurs linux, ce procédé me rend le même service qu’un logiciel de virtualisation complète, mais est plus performant pour les raisons suivantes :

  • Tous les environnements virtuels partagent le même noyau, là ou avec KVM par exemple, chaque machine virtuelle aurait son propre noyau. Cela économise la mémoire du serveur physique et permet d’y faire tourner davantage de serveurs virtuels (dans la limite de la puissance de calcul, bien entendu).
  • OpenVZ est plus performant car il y a moins de couches logicielles à traverser pour « atteindre le matériel » (je n’ai observé aucune différence notable entre une application dans un serveur virtuel et dans le même serveur physique directement).
  • Les fichiers du serveur virtuel sont directement dans le système de fichiers du serveur physique, là ou pour d’autres systèmes de virtualisation, il faut constituer un disque virtuel dans un unique fichier qui contient le système de fichiers du système invité. D’une part ça contribue à la performance d’OpenVZ, et d’autre part je trouve plutôt rassurant de savoir qu’en cas de pépin sur mon serveur physique, j’aurai moins de difficultés pour retrouver mes fichiers. Autant j’ai confiance dans les systèmes de fichiers linux, ext3 par exemple, pour récupérer le système de fichiers de mon serveur physique après un arrêt inopiné malheureux, autant je préfère éviter de devoir me retrouver à réparer mon disque virtuel de 200 Go après que le fsck sur mon serveur physique m’ait dit qu’il y avait quelques inodes « égarés » au beau milieu de mon disque virtuel ;-) .

Mais OpenVZ  n’a pas que des avantages :

  • On est contraint d’utiliser dans les systèmes invités le même noyau que dans le système hôte et par conséquent les systèmes invités ne peuvent être que des linux. On peut mélanger les distributions, mais toutes auront le même noyau.
  • Installer dans un serveur virtuel une application qui nécessite l’accès a des modules du noyau linux spécifiques peut se révéler délicat, car il faut que le système hôte l’autorise (ça se configure) et que les modules du noyau le permettent (ça dépend du module).
  • Si une application d’un serveur virtuel rencontre un problème lié au noyau linux, tous les serveurs virtuels plus le serveur hôte peuvent être impactés et on pourra être amené à redémarrer le serveur physique. C’est très rare mais ça m’est arrivé.

En quelques mots, si vous souhaitez virtualiser des serveurs linux qui hébergent des applications client/serveur, ce qui est le cas de la plupart des applications (serveur web, serveur d’application J2EE, SGBD, PGI, DNS, serveur de fichiers et j’en passe), essayez OpenVZ, vous ne serez certainement pas déçu.

Poursuivez la lecture de ce tutoriel dans les articles suivants :

Installer un serveur hôte OpenVZ sur Debian Etch ou Ubuntu 8.04

Créer son premier serveur virtuel sous OpenVZ

Gérer les ressources allouées aux serveurs virtuels OpenVZ

Les différentes formes de configuration du réseau avec OpenVZ : venet et veth

Sauvegarde/restauration, checkpointing et (live) migration

Quoi virtualiser ?

Laisser un commentaire


NOTE - Vous pouvez utiliser les éléments et attributs HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>