URL: https://linuxfr.org/users/jyes/journaux/mauvaise-surprise-virtuelle%E2%80%A6 Title: Mauvaise surprise virtuelle... Authors: jyes Date: 2011年02月25日T17:56:37+01:00 License: CC By-SA Tags: lxc, virtualisation, vserver, linux, conteneur et debian Score: 90 ... ou comment une mauvaise surprise peut en cacher une bonne. Comme depuis que je lis [LinuxFr](http://linuxfr.org), je suis devenu un fervent disciple de [Tanguy Ortolo](https://linuxfr.org/users/Elessar), je ne confonds plus Web et Internet et j'ai mon serveur personnel à domicile qui héberge des services Web mais pas que... ce qui en fait un authentique serveur Internet. Comme depuis que je lis [TrollFr](http://www.nojhan.net/geekscottes/index.php?id=85), j'ai conscience que Debian est non seulement la distribution universelle, mais qu'elle est surtout le meilleur système d'exploitation [tous noyaux](https://linuxfr.org/users/chaica/journaux/debian-avec-le-noyau-de-freebsd-debian-gnukfreebsd) et [toutes libc](https://linuxfr.org/users/haypo/journaux/debian-migre-de-la-gnu-libc-à-eglibc) confondus, tant du point de vue de sa [sécurité](http://www.debian.org/security/2008/dsa-1571) que de son [installation](http://fr.narkive.com/2007/7/23/404664-debian-trop-complique-a-installer-pour-torvalds.html), de son utilisation quotidienne ou de son [site internet ^Wweb](http://www.debian.org/) (qui était mieux [avant](http://web.archive.org/web/20091019024302/http://www.debian.org/)). C'est donc tout naturellement que j'ai orienté le choix du système qui fait tourner mon serveur vers Debian. Comme j'ai arrêté de lire [AppleFr](http://applefr.org/), il y a quelques années, je suis toujours persuadé que l'hégémonie des processures X86 n'est vraiment pas méritées et que l'architecture PowerPC poutre des mamans ourses. Comme Apple c'est de la pure qualitay magique et révolutionnaire, leurs machines ne meurent jamais, et c'est ainsi qu'un vieux MacBook fait tourner la Debian qui fait touner mon serveur. Comme en arrêtant de lire AppleFr, je me suis mis aux magazines branchés et modernes qui orientent tous les bon dissaïdorz vers les solutions virtualisées, je pense que seules les machines virtuelles permettent d'allier souplesse et sécurité pour répondre aux problématiques de l'Internet d'aujourd'hui et de demain. Paré pour le Web 3.0, j'ai donc cherché une solution de virtualisation élégante pour cloisonner les services de ma machine. Comme je reste un vieux ^Wjeune réac' qui lit [Jean-Pierre Troll](http://jean-pierre-troll.blogspot.com/2009_04_01_archive.html) assiduement, j'ai gardé un certain recul sur la virtualisation et me suis en fait tourner vers une solution de cloisonnement non virtualisé, en l'occurence [[VServer]]. Là, j'ai pendant longtemps été le plus heureux des hommes. La vie était belle, le ciel bleu et mon serveur ronronnait. Jusqu'à la sortie de Debian Squeeze. Il n'y a pas à tergiverser, cette manie de sortir des nouvelles versions trop souvent à la Debian pose bien des soucis aux administrateurs consciencieux qui veulent des logiciels éprouvés. Obligés de se tenir à jour et de courir après la nouveauté, la mode et les plaisirs éphémères. Pressé par l'abandon imminent du support de Debian Lenny, le lendemain de la sortie de Squeeze, je mettais à jour mon serveur. Comme je suis un bon petit debianeux, j'avais d'abord lu des [notes de publication](http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.fr.html#deprecated) qui m'informaient que Squeeze serait la dernière version de Debian à supporter VServer et que cette solution était désormais considérée osbolète. tellement obsolète qu'il semblerait même que le noyau VServer pour architecture PowerPC de Squeeze ne marche même pas. En fait il marche, mais VServer semble inutilisable. Mais ça ce n'était pas dans les notes de publication, c'était la surprise. Comme je suis un administrateur consciencieux, j'ai une vague solution de sauvegarde pour les données mais pas pour le système et aucun serveur de test. C'est donc ma machine de prod' (relative toutefois, elle prod' pour trois utilisateurs les jours de forte charge) que j'ai mis à jour directement. Pas de panique, aucun soucis, à partir de ce moment là, mon serveur rendait autant de services Internet qu'un fer à repasser... mais je n'avais pas dis mon dernier mot. En trois jours d'interruption de servicen j'ai pu me former à LXC (ou Linux Containers) et découvrir à quel point cette solution est belle. C'est une solution de cloisonnement un peu comme VServer. Contrairement à de la vraie virtualisation, il n'y a qu'un seul noyau qui est en charge de gérer tous les processus, mais les conteneurs Linux, un peu à la manière des prisons BSD (« jails »), permet d'exécuter des programmes dans racines et des contextes différents. Comme programmes particuliers, en exécutant les Inits de racines différentes, cela revient à faire tourner plusieurs machines virtuelles complètes. Par rapport à VServer, c'est bien mieux, parce que ça cloisonne aussi le réseau. À l'inverse pour tranformer mon installation VServer en LXC, j'ai du reproduire le comportement non cloisonné de VServer avec LXC, ce qui se fait en créant une interface bridge, appelée ici `br0`. Voici ce qu'il m'a fallut ajouter au fichier `/etc/network/interfaces/` : auto br0 iface br0 inet dhcp bridge_ports eth0 ... et plus la peine d'une quelconque ligne mentionnant `eth0`, mon interface réseau d'origine. Ensuite, les conteneurs doivent être configurés en utilisant un partage réseau `veth`. Par exemple pour mon serveur virtuel `net` : # Container with network virtualized using the veth device driver lxc.rootfs = /var/lib/lxc/net lxc.utsname = net lxc.network.type = veth lxc.network.flags = up lxc.network.link = br0 lxc.network.name = eth0 lxc.network.ipv4 = 192.168.0.2/24 lxc.network.hwaddr = AC:DE:48:00:00:02 lxc.network.veth.pair = veth02 Ici seule IPv4 est configurée, mais IPv6 fonctionne de la même manière en ajoutant une ligne `lxc.network.ipv6`. Ce réglage fait qu'au démarrage du conteneur avec `lxc-start -n net`, l'interface `veth02` est créée sur l'hôte et écoute sur le pont `br0` qui partage l'interface `eth0` entre les différents conteneurs. Depuis l'intérieur du conteneur `net`, l'interface apparente est `eth0` comme précisé par `lxc.network.name`. Ainsi, la configuration de mon VServer d'origine peut être réutilisée telle quelle. Dernier truc. Je n'aime pas avoir un serveur SSH qui tourne sur mes machines virtuelles et préfère limiter les programmes qui s'exécutent dessus au strict nécessaire. Avec VServer, les pseudo machines virtuelles pouvaient s'administrer en entrant dedans avec la commande `vserver enter net` depuis l'hôte. Ceci n'existe pas avec LXC. C'est dommage, car je voudrais ne pas pouvoir s'identifier en tant que `root` dans mes conteneurs. J'ai donc mis `!` dans l'espace pour le mot de passe `root` du fichier `/etc/shadow`. Créer un nouvel utilisateur avec des droits `sudo` et m'y connecter en SSH allourdirait considérablement l'administration des conteneurs par rapport à ce que permettait VServer. Une solution pour remédier ce problème est de créer des consoles ou s'exécute directement un interpréteur de commande en `root`. Par exemple la ligne suivante : c1:12345:respawn:/sbin/getty -n -l /bin/bash 38400 tty1 linux dans le fichier `/var/lib/lxc/net/rootfs/etc/inittab` me permet de me connecter au conteneur `net` direcement avec la commande `lxc-console -n net` depuis l'hôte. Cool, non ? Finalement, LXC est beaucoup plus simple que VServer, ne nécessite pas de patch noyau et réutilise toute l'infrastructure existante. Notamment, en utilisant les CGroups pour distinguer les contextes des différents conteneurs, ce qui permet de régler aisément des quotas pour chaque conteneur via les CGroups. La gestion du réseau est plus cmplète que VServer (quoique de ce côté il y avait déjà OpenVZ qui résolvait ce problème mais qui n'a jamais fonctionné correctement sur PowerPC). Au final, malgré quelques sueurs froides et une coupure de service contrariante, je ne regrette pas d'avoir migré de VServer à LXC et le conseille à tous ! Je ne sais pas si ce retour d'expérience servira à quelqu'un, mais un journal coûte moins cher qu'un psy et ça m'a fait du bien d'en parler...

AltStyle によって変換されたページ (->オリジナル) /