Installation du systeme de virtualisation LXC (Linux Containers) sur Debian Wheezy
L’occasion de la sortie de Debian Wheezy me pousse à regarder ce que LXC a dans le ventre puisque OpenVZ n’est plus supporté dans Debian stable ! Je propose dans cette article l’installation et la configuration de LXC sur un système Debian stable (Wheezy).
Installation de LXC
Nous considérons que le système Debian Wheezy est déjà installé.
Installation du paquet requis
# aptitude install lxc
Installation des paquets optionnels
# aptitude install bridge-utils libvirt-bin debootstrap
Configuration
cgroup (control groups) est une fonctionnalité du noyau Linux pour limiter, compter et isoler l’utilisation des ressources (processeur, mémoire, utilisation disque..). Il est utilisé par LXC, il faut donc le monter sur le système de fichier de l’hôte afin que les ressources des conteneurs soient encapsulées et gérées.
Ajouter la ligne suivante dans /etc/fstab
# cgroup /sys/fs/cgroup cgroup defaults 0 0
Nous pouvons tester le montage :
# mount /sys/fs/cgroup
ou
# mount -a
LXC est maintenant installé et opérationnelle. La configuration peut être tester
# lxc-checkconfig
Kernel config /proc/config.gz not found, looking in other places... Found kernel config file /boot/config-3.2.0-4-amd64 --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled Network namespace: enabled Multiple /dev/pts instances: enabled --- Control groups --- Cgroup: enabled Cgroup clone_children flag: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: enabled Cgroup cpuset: enabled --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled File capabilities: enabled Note : Before booting a new kernel, you can check its configuration usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig
Tout est au vert…on continue…
Ensuite, voyons les commandes usuelles :
Création du conteneur avec le système Debian (plusieurs versions seront proposées):
# lxc-create -n leconteneur -t debian
Lancement du conteneur en arrière plan
# lxc-start -n leconteneur -d
Avec -d –daemon lancer le conteneur comme un démon
Lancement de la console pour se connecter au conteneur.
# lxc-console -n le conteneur
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
Pour stopper le conteneur
# lxc-halt -n le conteneur
Pour lister les conteneurs
# lxc-list
RUNNING mx myfirstcontainer proxy leconteneur
FROZEN
STOPPED
Un problème connu de gestion de la console, ne permet pas de se connecter en console. Il faut donc ajuster un peu les configuration en créant des fichiers spéciaux pour les sorties standards directement dans le conteneur.
$ sudo chroot /var/lib/lxc/myfirstcontainer/rootfs mknod -m 666 /dev/tty1 c 4 1 mknod -m 666 /dev/tty2 c 4 2 mknod -m 666 /dev/tty3 c 4 3 mknod -m 666 /dev/tty4 c 4 4 mknod -m 666 /dev/tty5 c 4 5 mknod -m 666 /dev/tty6 c 4 6
Gestion du réseau
J’ai choisie de gérer le réseau via un bridge mais il est possible de passer par libvirt pour plus de souplesse et de possibilités.
Sur le hôte, création du bridge :
iface eth1 inet manual
# le bridge br0 iface br0 inet static bridge_ports eth1 bridge_fd 0 #bridge_maxwait 0 address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255
Ensuite dans le fichier de configuration du conteneur :
vi /var/lib/lxc/containername/config
lxc.network.type = veth lxc.network.flags = up lxc.network.link = br0 lxc.network.name = eth0 lxc.network.ipv4 = 192.168.1.20/24 lxc.network.veth.pair = vethvm2 lxc.network.hwaddr = 00:FF:AA:00:00:02
Je donne quelques règles Iptables pour faire le NAT et DNAT…
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to ip-hote iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 192.168.1.20:80 iptables -t nat -A PREROUTING -p tcp --dport 443 -i eth0 -j DNAT --to 192.168.1.20:443
Conclusion
Et voila un système de virtualisation fonctionnelle et performant. Je recommande de créer les systèmes de fichiers des conteneurs sur une partition LVM afin de gérer au mieux les espaces disques alloués pour chaque conteneur. Quant aux limitations et à la répartition de ressources entre les conteneurs. Je vous laisse explorer cgroup et me revenir avec des explications
Cet article Installation du systeme de virtualisation LXC (Linux Containers) sur Debian Wheezy est apparu en premier sur PointRoot.org.