P24 Annexe

De Wiki d'activités IMA
Révision datée du 16 février 2016 à 16:54 par Jdenecha (discussion | contributions) (Création du bridge général)


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


Mise en place des scripts

Tests