[orca-list] LXC




-- 
Raphaël
Debian en tant qu'hyperviseur QEMU/KVM et LXC

Ce guide à pour objectif de vous expliquer comment installer un hyperviseur
complet sous Debian Jessie. C’est l’équivalent d’un serveur Hyper-V ou VMware
ESX.

Voici les fonctionnalités supportées

  * Interface d’administration Web des machines virtuelles permettant de les
    créer ou de les démarrer.
  * Possibilité de faire des snapshots à froid avec l’interface
    d’administration.
  * Possibilité de faire des snapshot à chaud pour les sauvegardes.
  * Support de la majorité des systèmes d’exploitations invités.
  * QEMU/KVM permet l’émulation d’une machine virtuelle complète et permet
    l’installation de presque n’importe quel système d’exploitation invité.
  * LXC permet de faire de la paravirtualisation. Ce mode est très économe en
    ressource, mais ne permet d’utiliser que certaines distributions GNU/Linux
    invité.

Matériel recommandé

Il faudra bien entendu un processeur supportant la virtualisation (Intel VT ou
AMD-V). Il est également possible de virtualiser avec certains processeurs ARM
ou PowerPC. Plus d’information :

    http://www.linux-kvm.org/page/Processor_support
   
La mémoire vive est également très importante, minimum 4 Go ou plus suivant le
nombre de machines que vous prévoyez de faire fonctionner. Enfin prévoyez un
disque dur externe pour les sauvegardes.

Installation de Debian

Effectuez une installation classique d’une Debian Jessie à l’aide d’une
Netinstall par exemple. N’oubliez pas de partitionner votre disque avec LVM
prenant le soin de laisser un peu de place dans votre pool LVM. Je suggère le
schéma de partitionnement suivant.

Partition schema

L’espace libre dans le pool lvm servira à d’éventuel snapshot de la partition
home dans le but de faire les sauvegardes. Cet espace devra pouvoir accueillir
les données modifiées tout le long de votre sauvegarde.

Configuration du réseau

Lorsque votre système est installé, la première chose à faire est de
configurer le réseau. En effet, si vous souhaitez accéder facilement à vos
machines virtuelles depuis votre réseau comme s’il s’agissait d’une machine
physique connectée sur votre switch, il faut configurer un bridge.

Vérifiez que vous ayez le paquet bridge-utils installé avec la commande
suivante.

apt-get install bridge-utils

Modifiez le fichier /etc/network/interfaces commentez les lignes concernants
votre carte réseau (dans notre cas eth0) et ajoutez les lignes suivantes.

auto br0
iface br0 inet static
      bridge_ports enp3s0
      bridge_fd 0
      address 192.168.1.1
      netmask 255.255.255.0
      network 192.168.1.0
      broadcast 192.168.1.255
      gateway 192.168.1.254
      dns-nameservers 192.168.1.254

Remplacez bien entendu eth0 par le nom de votre carte réseau. Relancez la
configuration réseau (ne lancer pas cette commande depuis un SSH car vous
risquez de vous couper l’herbe sous les pieds).

service networking restart

Activation de l’IP forwarding

Afin d’autoriser vos machines virtuelles à communiquer avec le reste de votre
réseau, vous devez autoriser votre serveur a transmettre les frames réseaux.
Modifier le fichier /etc/sysctl.conf

nano /etc/sysctl.conf

Et décommentez ou ajoutez la ligne suivante.

net.ipv4.ip_forward=1

Validez les changements.

sysctl -p

N’oubliez pas d’autoriser cette même règle dans votre pare-feu si vous en avez
installé un.

Installation des utilitaires pour la virtualisation

apt-get install kvm libvirt-bin sasl2-bin lxc libvirt-bin debootstrap cgroupfs-mount

Afin de pouvoir utiliser LXC avec libvirt-bin, il sera nécessaire d’ajouter un
argument au démarrage de votre ordinateur.

nano /etc/default/grub

Et modifier la ligne GRUB_CMDLINE_LINUX_DEFAULT pour qu’elle ressemble à cette
ci.

GRUB_CMDLINE_LINUX_DEFAULT="quiet cgroup_enable=memory swapaccount=1"

Actualisez le menu avec la commande

update-grub

Puis une fois n’est pas coutume, redémarrer votre système.

Installation du frontend webvirtmgr (avec des paquets tout prêt)

Pour ce tuto, j’ai préparé une version toute prête du paquet. On commence donc
par installer le dépôt :

wget http://open.iabsis.com/iabsis.list -O /etc/apt/sources.list.d/iabsis.list

Ajoutez le certificat

wget http://open.iabsis.com/open.iabsis.com.asc -O- | apt-key add -

Rafraichissez la liste des paquets

apt-get update

Et installer tous les paquets en une seule fois

apt-get install supervisor webvirtmgr webvirtmgr-supervisor

Il vous sera demandé à l’installation un identifiant ainsi qu’un mot de passe.
Ouvrez ensuite votre navigateur à l’adresse suivante :

    http://ip_de_votre_serveur:8000
   
Configuration de votre serveur

Il est maintenant nécessaire de faire quelques petites configurations depuis
l’interface d’administration de webvirtmgr.

Ajoutez votre propre serveur KEMU/QVM dans la liste :

  * Cliquez sur le buton Add connection
  * Cliquez sur l’onglet Local Socket
  * Tapez le nom de votre choix (ex: le nom de votre serveur)
  * Dans la liste Hypervisor type, choisissez QEMU.

Ajoutez aussi votre propre serveur LXC dans la liste :

  * Cliquez sur le buton Add connection
  * Cliquez sur l’onglet Local Socket
  * Tapez le nom de votre choix (ex: le nom de votre serveur)
  * Dans la liste Hypervisor type, choisissez LXC.

Désormais votre serveur devrais s’afficher comme connected dans la page 
Connections.

Configurer l’interface réseau :

  * Cliquez sur votre serveur pour ouvrir les détails.
  * Cliquez sur Networks
  * Supprimez les réseaux existants
  * Cliquez sur New network
  * Dans le champ Name tapez default
  * Dans le champ Type forwarding choisissez BRIDGE
  * Dans le champ Bridge Name tapez br0
  * Ne pas cocher Open vSwitch

Configurer votre stockage :

  * Cliquez sur Storages
  * Supprimez éventuellement les stockages prédéfinis
  * Cliquez sur New Storage
  * Choisissez l’onglet DIR.
  * Dans le champ Name tapez default
  * Dans le champ Path tapez /home/qemu

Le dossier doit exister sur le serveur, vous pouvez bien entendu changer ce
chemin, mais gardez à l’idée que ce dossier dans être dans un volume du pool
lvm. Pour créer un dossier en mode commande :

mkdir /home/qemu

Vous pouvez aussi créer un pool séparé pour vos fichiers iso

mkdir /home/iso

Puis ajouter un stockage comme précédemment mais en cliquant sur l’onget ISO.

    Note concernant LVM : il est également possible d’ajouter directement le
    pool lvm créé pour avoir ainsi un volume par machine. Néanmoins je trouve
    que cette solution est plus contraignante pour des raisons techniques et
    surtout car le support thin provisionning n’est pas disponible dans ce
    mode.
   
Création de votre première machine virtuelle avec QEMU/KVM

La création de machine QEMU/KVM est très simple. Copiez bien entendu un ou
plusieurs iso dans votre stockage /home/iso.

  * Cliquez sur le bouton New Instance
  * Choisissez un des profils et cliquez sur Create. Vous pouvez également
    créer vos profils personnalisés en cliquant sur New Flavor.
  * Donnez un nom à votre machine virtuelle. Je conseille à ce stage de mettre
    le même nom que le nom netbios que vous donnerez à votre machine.
  * Cliquez sur Create.

Votre machine virtuelle est maintenant créée, vous devez maintenant installer
un système d’exploitation dessus.

  * Cliquez sur votre machine virtuelle si vous n’y êtes pas encore.
  * Cliquez sur l’onglet Settings
  * Cliquez (optionnel) sur le bouton Enable devant l’option Autostart.
  * Cliquez ensuite sur l’onglet Media
  * Sélectionnez l’iso dans l’option CDROM 1
  * Cliquez sur Connect

Cette action montera virtuellement l’iso comme si vous aviez placé le CD dans
le lecteur de la machine. Nous allons maintenant démarrer la machine.

  * Cliquez maintenant sur l’onglet Power et sur le bouton Start

On souhaite maintenant afficher ce qui se passe sur machine.

  * Cliquez sur l’onglet Access
  * Cliquez sur le bouton Console

Ceci vous ouvrira un viewer VNC dans un popup. Vous pouvez maintenant
interragir avec la machine comme si vous étiez dessus avec un clavier et une
souris.

Installation d’un système Microsoft Windows

L’installation d’un Windows devrait fonctionner sans soucis particulier mis à
part pour la détection du disque dur. Pour ce faire, il faudra certainement
télécharger les pilotes VirtIO pour Windows.

  * Créez votre machine virtuelle avec la procédure ci-dessus. Décochez
    l’option VirtIO.
  * Lancer l’installation de votre Windows et suivez les étapes d’installation
    classiques.
  * De retour dans l’interface de webvirtmgr, retournez dans l’onglet Media et
    cliquez sur Disconnect.
  * Depuis votre console placez vous dans le dossier en tapant cd /home/iso
  * Télécharger l’ISO officiel contenant les drivers VirtIO avec wget 
    https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
  * Sélectionnez le fichier ISO virtio-win.iso et cliquez sur Connect.
  * Depuis votre installation de Windows,

Création de votre première machine virtuelle avec LXC

Voir https://wiki.debian.org/LXC
pour un lxc sans privileges

La création d’une machine LXC consiste en gros à récupérer le contenu minimal
d’un système GNU/Linux. Cette étape est faite facile grace à la commande
suivante :

lxc-create --template download --name un_nom_au_choix

Choisissez un nom au choix représentant par exemple le rôle de votre machine.
Le système vous affiche ensuite une liste des systèmes disponibles
téléchargeables.

Setting up the GPG keyring
Downloading the image index

---
DIST    RELEASE ARCH    VARIANT BUILD
---
centos  6       amd64   default 20160218_02:16
centos  6       i386    default 20160218_02:16
centos  7       amd64   default 20160218_02:16
debian  jessie  amd64   default 20160217_22:42
debian  jessie  armel   default 20160111_22:42
debian  jessie  armhf   default 20160111_22:42
...
---

Distribution:

  * Tapez la distribution de votre choix, par exemple debian.
  * Tapez la version de la distribution, par exemple jessie.
  * Enfin choisissez l’architecture, par exemple amd64.

Ensuite il faudra patienter quelques minutes, en fonction de la vitesse de
votre connexion Internet. LXC va récupérer automatiquement le contenu de votre
système.

    Note : le contenu de cette machine est stocké dans le dossier /var/lib/lxc
    /, vérifiez donc que cette partition possède suffisamment d’espace.
   
Je préfère cependant stocker mes machines virtuelles ailleurs, dans ce cas,
n’hésitez pas à changer ce chemin en créant de préférence un lien symbolique.

mv /var/lib/lxc /home
ln -s /home/lxc /var/lib/lxc

Pour la suite du tuto, définisser le nom de l’hôte dans une variable afin de
pouvoir copier et coller les commandes sans devoir les modifier:

lxchostname=<nom de votre machine>

Afin de gérer notre machine avec libvirtd, nous devons maintenant créer un
fichier XML modèle.

cat > ~/template-lxc.xml << EOF
<domain type='lxc'>
  <name>HOSTNAME</name>
  <memory>128000</memory>
  <os>
        <type>exe</type>
        <init>/sbin/init</init>
  </os>
  <vcpu>1</vcpu>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
        <emulator>/usr/lib/libvirt/libvirt_lxc</emulator>
        <filesystem type='mount'>
          <source dir='/var/lib/lxc/HOSTNAME/rootfs'/>
          <target dir='/'/>
        </filesystem>
        <interface type='network'>
          <source bridge='br0'/>
          <mac address='00:16:3e:1a:b3:4a'/>
          <model type='virtio'/>   # try this if you experience problems with VLANs
        </interface>
        <console type='pty'/>
  </devices>
</domain>
EOF

Maintenant, créer un copie de ce fichier adaptée pour notre nouveau serveur.
Assurez-vous de changer un_nom_au_choix par le vrai nom de votre machine
virtuelle.

sed "s/HOSTNAME/${lxchostname}/g" ~/template-lxc.xml > ~/temp.xml

Importez maintenant votre machine dans votre hyperviseur et supprimer le
fichier temporaire.

virsh -c lxc:// define ~/temp.xml
rm ~/temp.xml

Afin de corriger un petit bug bloquant le bon fonctionnement de la commande
virsh -c lxc:// console ${lxchostname}, il faut supprimer des fichiers
superflux dans le dossier systemd :

rm /var/lib/lxc/${lxchostname}/rootfs/etc/systemd/system/getty.target.wants/getty*

Il va falloir maintenant activer le compte root, créer un compte utilisateur
et installer SSH.

mount --bind /dev /var/lib/lxc/${lxchostname}/rootfs/dev
mount --bind /proc /var/lib/lxc/${lxchostname}/rootfs/proc
cp /etc/resolv.conf /var/lib/lxc/${lxchostname}/rootfs/etc/resolv.conf
chroot /var/lib/lxc/${lxchostname}/rootfs/

Toutes les commandes que vous tapez s’effectueront désormais dans le contexte
de la machine virtuelle

apt-get install ssh  #(ou yum install sous Centos, ou autre)
passwd root (pour définir le mot de passe root)
adduser *compte_de_votre_choix* (pour ajouter un compte utilisateur utile pour se connecter avec ssh)
exit (pour resortir)

N’oubliez pas de démonter les bind

umount /var/lib/lxc/${lxchostname}/rootfs/dev
umount /var/lib/lxc/${lxchostname}/rootfs/proc

Rendez-vous dans l’interface de Webvirtmgr pour démarrer ou modifier votre
machine.

Félicitation, votre machine est désormais prête pour faire tourner des
machines virtuelles.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]