Installation d’un conteneur LXC sur Dedibox
Je viens de migrer mon blog sur un nouveau serveur Dedibox Classic +.
Celui offrant plus de puissance que mon ancienne Kimsufi mKS 2G, j’ai décidé d’expérimenter l’utilisation de conteneur LXC pour isoler un certain nombre de services. Le choix de LXC comme méthode de virtualisation réside principalement dans une volonté d’expérimentation : j’ai en effet l’habitude de travailler avec KVM au travail.
La première chose à faire est de commander une IP de Failover chez Online. Avec mon serveur j’ai accès à 5 IP de failover soit 5 conteneurs LXC potentiels en plus de ma machine hôte.
Une fois l’IP de failover achetée et assignée à votre machine hôte, il faut aller demander la déclaration d’une nouvelle adresse MAC pour votre serveur.
Ceci est à faire dans l’onglet ‘Etat’ de la console d’administration de votre dédibox. J’ai personnellement choisi une MAC de type KVM.
ATTENTION : si vous ne déclarez pas votre adresse MAC, votre port de switch sera automatiquement coupé chez Online lors du boot de votre conteneur.
Installation de LXC
Sous Ubuntu 12.10, la mise en place d’un conteneur LXC est relativement triviale :
# apt-get install lxc bridge-utils
Configuration du bridge sur votre machine hôte
Pour configurer le bridge de votre machine hôte :
# cat /etc/network/interfaces # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet manual auto br0 iface br0 inet static bridge_ports eth0 bridge_stp off bridge_maxwait 0 bridge_fd 0 address IP netmask 255.255.255.0 network RESEAU broadcast IP_DE_BROADCAST gateway IP_GW
Il faut ensuite appliquer la nouvelle configuration de votre réseau :
# service networking restart
Si pour une raison ou une autre quelquechose se passe mal et vous perdez la main sur votre serveur,
vous avez toujours la possibilité d’utiliser le KVM mis à votre disposition par Online
Si tout se passe bien vous devrier avoir quelquechose comme ca :
# ifconfig br0 Link encap:Ethernet HWaddr bc:30:5b:cf:38:8f inet adr:88.190.18.38 Bcast:88.190.18.255 Masque:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:2402562 erreurs:0 :73 overruns:0 frame:0 TX packets:720626 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 Octets reçus:115870995 (115.8 MB) Octets transmis:6334732297 (6.3 GB) eth0 Link encap:Ethernet HWaddr bc:30:5b:cf:38:8f UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:65300606 erreurs:0 :147 overruns:0 frame:0 TX packets:96867267 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:36490517096 (36.4 GB) Octets transmis:131124295065 (131.1 GB) lo Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:16436 Metric:1 Packets reçus:242326 erreurs:0 :0 overruns:0 frame:0 TX packets:242326 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 Octets reçus:68993249 (68.9 MB) Octets transmis:68993249 (68.9 MB)
C’est normal que votre interface eth0 n’ai pas d’IP puisque c’est votre bridge qui la possède.
Configuration de LXC
Vous devez maintenant configurer LXC au niveau réseau :
# vim /etc/lxc/lxc.conf lxc.network.type=veth lxc.network.link=br0 lxc.network.hwaddr=MAC_ADRESSE lxc.network.ipv4=FAILOVER_IP/32 lxc.network.flags=up
Attention à bien utiliser l’adresse MAC que online vous à affecté et de spécifier un netmask en /32 pour votre IPv4.
Vous pouvez maintenant créer un nouveau conteneur :
# lxc-create -n conteneur_name -t ubuntu fssize=10G # lxc-start --name conteneur_name
Cela va créer votre conteneur et le lancer. Votre terminal va afficher une console. Pour lancer votre conteneur en daemon, il faut utiliser ‘-d’, mais nous avons besoin dans un premier temps de configurer le réseau du conteneur.
Pour vous logger, il faut utiliser le user ubuntu avec le mdp ubuntu par défaut.
Configuration du réseau du conteneur
Au startup votre conteneur à bien son IP assignée par LXC mais n’a aucune route pour sortir.
Il faut donc lui en indiquer une. J’ai choisi de rester en DHCP pour son IP et de faire cette configuration :
# cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp up route add 88.190.18.1/32 dev eth0 up route add default gw 88.190.18.1
Avec 88.190.18.1 qui est la GW de ma machine hôte.
Au niveau de votre machine hôte vous devrier voir votre bridge avec une configuration comme celle-ci :
bridge name bridge id STP enabled interfaces br0 8000.bc305bcf388f no eth0 vethFKSYFV
Avec cette configuration vous devriez avoir un conteneur valide qui à un accès direct à internet.