P24 Annexe
Sommaire
Cette page est un guide pas à pas pour reconstruire l'architecture de notre projet sur une machine Debian (Jessie 8) avec un noyau Linux 3.16.0-4-amd64.
Installation des outils de base
Sur une machine Debian Jessie, il est nécessaire d'installer les outils suivants :
apt-get update -y; apt-get upgrade -y apt-get install -y xen-hypervisor-4.4-amd64 xen-tools sqlite3 nginx ssh xen-utils-common bridge-utils
Les outils suivants sont également conseillés :
apt-get install -y vim python curl lynx nmap
Installation de l'hyperviseur Xen
Création du bridge général
Nous créons une interface tap dédiée à la connexion des interfaces du bridge. L'interface eth0 est dédiée au support. Pour que la configuration soit identique si la machine redémarre, nous éditons le fichier /etc/network/interfaces comme suit :
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 172.26.64.13 netmask 255.255.240.0 gateway 172.26.79.254 auto tap0 iface tap0 inet manual #MASQUERADE pre-up iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j MASQUERADE pre-up ip tuntap add mode tap dev tap0 pre-up ip addr add 172.26.79.230/20 dev tap0 up ip link set dev tap0 up #post-up ip route add 172.26.79.230/32 dev tap0 down ip link set tap0 down post-down ip link del dev tap0 #Bridge réunissant les conteneurs auto Summoners iface Summoners inet static bridge-ports tap0 address 10.0.0.1 netmask 255.0.0.0
La mascarade doit s'effectuer manuellement plutôt que l'option iptables-restore. En effet nous risquons d'écraser les nouvelles règles de routages de machines virtuelles Xen.
Création des machines virtuelles Xen
Une fois les outils Xen installé, on créée autant de vm que nécessaire
xen-create-image --hostname=teemo --ip=10.2.0.1 --netmask=255.255.255.240 --gateway=10.0.0.1 \ --dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd
Architecture réseau Xen
Installation de Docker
Mise a jour et téléchargement d'outils pratiques
apt-get update -y; aptget upgrade -y apt-get install -y vim curl
Ajout des dépôts backports de jessie
echo -e "\n\n#\n# Jessie backports\n#\n deb http://ftp.fr.debian.org/debian jessie-backports main" >> /etc/apt/sources.list echo -e "deb-src http://ftp.fr.debian.org/debian jessie-backports main" >> /etc/apt/sources.list apt-get update -y; aptget upgrade -y
Installation proprement dite de Docker
apt-get install -y docker-engine
Ajout du proxy dans l’environnement Docker
mkdir /etc/systemd/system/docker.service.d echo -e "[Service]\nEnvironment=HTTP_PROXY=http://proxy.polytech-lille.fr:3128/" > /etc/systemd/system/docker.service.d/http-proxy.conf systemctl daemon-reload systemctl restart docker
Architecture réseau Docker
Création d'un bridge personnalisé pour Docker
Pour changer le réseau par défaut de Docker, on doit dans un premier temps détruire toute la configuration existante.
service docker stop ip link set docker0 down brctl delbr docker0 iptables -t nat -F POSTROUTING
On peut ensuite créer un nouveau bridge qui correspond à nos attentes.
brctl addbr dockerBridge ip addr add 10.0.0.1/8 dev dockerBridge ip link set dev dockerBridge up systemctl daemon-reload service docker restart
On peut alors vérifier que notre configuration a bien été prise en compte avec les commandes suivantes :
ifconfig iptables -t nat -L -n
Configuration Docker
Quelques informations pour la configuration réseau
vim /lib/systemd/system/docker.service
Il faut indiquer à Docker qu'il faut regarder le fichier de configuration /etc/default/docker. En effet, docker ne gère pas les distributions linux basée sur systemd, comme la Debian 8 que nous utilisons. Cette erreur, particulièrement difficile à détecter, ne survient pas sous Ubuntu ou d'autres distributions utilisant upstart ou SysVInit. Pour contourner le problème, il faut effectuer les modifications suivantes :
EnvironmentFile=-/etc/default/docker ExecStart=/usr/bin/docker -d $DOCKER_OPTS -H fd://
On modifie ensuite le fichier de configuration référencé, pour y ajouter la ligne suivante :
echo 'DOCKER_OPTS="-b=dockerBridge"' >> /etc/default/docker