Installation du systeme de virtualisation LXC (Linux Containers) sur Debian Wheezy

lxc

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.

Vus : 2867
Publié par pointroot.org : 17