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
Nos pouvons tester le montage :
mount /sys/fs/cgroup
ou
mount -a
LXC est maintenant installé et operationnelle. 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 Débian (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 to exit the console, 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.
Original post of pointroot.org.Votez pour ce billet sur Planet Libre.