PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

pointroot.org : Installation du systeme de virtualisation LXC (Linux Containers) sur Debian Wheezy

dimanche 12 mai 2013 à 21:09

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

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.

Gravatar de pointroot.org
Original post of pointroot.org.Votez pour ce billet sur Planet Libre.