P24 Annexe : Différence entre versions

De Wiki d'activités IMA
(Création du bridge général)
Ligne 5 : Ligne 5 :
  
  
=Installation des outils de base=
+
=Sur la machine hôte=
 +
==Mise à jour et outils pratiques==
 
Sur une machine Debian Jessie, il est nécessaire d'installer les outils suivants :
 
Sur une machine Debian Jessie, il est nécessaire d'installer les outils suivants :
 
  apt-get update -y; apt-get upgrade -y
 
  apt-get update -y; apt-get upgrade -y
Ligne 11 : Ligne 12 :
 
Les outils suivants sont également conseillés :
 
Les outils suivants sont également conseillés :
 
  apt-get install -y vim python curl lynx nmap
 
  apt-get install -y vim python curl lynx nmap
=Installation de l'hyperviseur Xen=
 
  
 
+
==Création du bridge général==
=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 :
 
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
 
  # The loopback network interface
Ligne 31 : Ligne 30 :
 
  #MASQUERADE
 
  #MASQUERADE
 
   pre-up iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j 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 tuntap add mode tap dev $IFACE
   pre-up ip addr add '''172.26.79.230/20''' dev tap0
+
   pre-up ip addr add '''172.26.79.230/20''' dev $IFACE
   up ip link set dev tap0 up
+
   up ip link set dev $IFACE up
  #post-up ip route add '''172.26.79.230/32''' dev tap0
+
  #post-up ip route add '''172.26.79.230/32''' dev $IFACE
   down ip link set tap0 down
+
   down ip link set $IFACE down
   post-down ip link del dev tap0
+
   post-down ip link del dev $IFACE
 
   
 
   
 
  #Bridge réunissant les conteneurs  
 
  #Bridge réunissant les conteneurs  
Ligne 47 : Ligne 46 :
 
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.
 
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=
+
==Création des machines virtuelles Xen==
 
Une fois les outils Xen installé, on créée autant de vm que nécessaire
 
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''' \
+
  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
 
  --dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd
  
 +
=Sur la machine Xen=
 +
On se connecte à la machine Xen via la commande '''xl console ''teemo'' '''
  
 +
==Architecture réseau==
 +
Dans une premier temps il est nécessaire d'établir les bons paramètres réseaux. La création d'un bridge personnalisé nous servira par la suite pour y mettre tous les conteneurs. On le créée comme précédemment dans '''/etc/network/interfaces'''.
 +
# The loopback network interface
 +
auto lo
 +
iface lo inet loopback
 +
 +
auto eth0
 +
iface eth0 inet static
 +
  pre-up ip link set $IFACE up
 +
  post-down ip link set $IFACE down
 +
 +
# The primary network interface
 +
auto br0
 +
iface br0 inet static
 +
  bridge_ports eth0
 +
  address 10.'''2'''.0.1
 +
  netmask 255.0.0.0
 +
  gateway 10.0.0.1
  
 +
reboot
  
=Architecture réseau Xen=
+
==Mise a jour et outils pratiques==
 
+
Une fois reconnecté, nous devrions avoir une connexion internet valide.
 
 
=Installation de Docker=
 
Mise a jour et téléchargement d'outils pratiques
 
 
  apt-get update -y; aptget upgrade -y
 
  apt-get update -y; aptget upgrade -y
  apt-get install -y vim curl
+
  apt-get install -y vim curl nmap
  
Ajout des dépôts ''backports'' de jessie
+
==Installation de Docker==
 +
Ajout des dépôts ''backports'' de jessie ou se trouve les paquets nécessaires
 
  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 "\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
 
  echo -e "deb-src    http://ftp.fr.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
Ligne 69 : Ligne 87 :
  
 
Installation proprement dite de Docker
 
Installation proprement dite de Docker
  apt-get install -y docker-engine
+
  apt-get install -y '''docker-engine'''
  
 
Ajout du proxy dans l’environnement Docker
 
Ajout du proxy dans l’environnement Docker
Ligne 77 : Ligne 95 :
 
  systemctl restart docker
 
  systemctl restart docker
  
=Architecture réseau Docker=
 
 
====Création d'un bridge personnalisé pour 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.
 
Pour changer le réseau par défaut de Docker, on doit dans un premier temps détruire toute la configuration existante.
Ligne 85 : Ligne 102 :
 
  iptables -t nat -F POSTROUTING
 
  iptables -t nat -F POSTROUTING
  
On peut ensuite créer un nouveau bridge qui correspond à nos attentes.
+
On doit ensuite indiquer au démon de Docker d'utiliser notre bridge '''br0''' précédemment créée. On édite pour cela '''/lib/systemd/system/docker.service'''. On y indique aussi que l'on souhaite que les conteneurs prennent leurs adresses dans la plage donnée par l'option ''fixed-cidr''. Par défaut, la passerelle par défaut est construite en fonction de l'adresse de l'hôte du conteneur (ici ''10.1.0.1'' au lieu de ''10.0.0.1''). Nous devons également la préciser ici. Voici la ligne a remplacer dans le fichier :
  brctl addbr dockerBridge
+
  ExecStart=/usr/bin/docker daemon -H fd:// -b='''br0''' --fixed-cidr='''10.1.0.1/16''' --default-gateway='''10.0.0.1'''
  ip addr add 10.0.0.1/8 dev dockerBridge
+
On recharge le démon pour prendre en compte la configuration.
ip link set dev dockerBridge up
 
 
  systemctl daemon-reload
 
  systemctl daemon-reload
 
  service docker restart
 
  service docker restart
Ligne 95 : Ligne 111 :
 
  ifconfig
 
  ifconfig
 
  iptables -t nat -L -n
 
  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 [http://connect.ed-diamond.com/GNU-Linux-Magazine/GLMF-153/Systemd-vainqueur-de-Upstart-et-des-scripts-System-V ''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=
 
=Mise en place des scripts=
  
 
=Tests=
 
=Tests=

Version du 16 février 2016 à 17:21


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.


Sur la machine hôte

Mise à jour et outils pratiques

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

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 $IFACE
 pre-up ip addr add 172.26.79.230/20 dev $IFACE
 up ip link set dev $IFACE up
#post-up ip route add 172.26.79.230/32 dev $IFACE
 down ip link set $IFACE down
 post-down ip link del dev $IFACE

#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

Sur la machine Xen

On se connecte à la machine Xen via la commande xl console teemo

Architecture réseau

Dans une premier temps il est nécessaire d'établir les bons paramètres réseaux. La création d'un bridge personnalisé nous servira par la suite pour y mettre tous les conteneurs. On le créée comme précédemment dans /etc/network/interfaces.

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
 pre-up ip link set $IFACE up
 post-down ip link set $IFACE down

# The primary network interface
auto br0
iface br0 inet static
 bridge_ports eth0
 address 10.2.0.1
 netmask 255.0.0.0
 gateway 10.0.0.1
reboot

Mise a jour et outils pratiques

Une fois reconnecté, nous devrions avoir une connexion internet valide.

apt-get update -y; aptget upgrade -y
apt-get install -y vim curl nmap

Installation de Docker

Ajout des dépôts backports de jessie ou se trouve les paquets nécessaires

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

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 doit ensuite indiquer au démon de Docker d'utiliser notre bridge br0 précédemment créée. On édite pour cela /lib/systemd/system/docker.service. On y indique aussi que l'on souhaite que les conteneurs prennent leurs adresses dans la plage donnée par l'option fixed-cidr. Par défaut, la passerelle par défaut est construite en fonction de l'adresse de l'hôte du conteneur (ici 10.1.0.1 au lieu de 10.0.0.1). Nous devons également la préciser ici. Voici la ligne a remplacer dans le fichier :

ExecStart=/usr/bin/docker daemon -H fd://  -b=br0 --fixed-cidr=10.1.0.1/16 --default-gateway=10.0.0.1

On recharge le démon pour prendre en compte la configuration.

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

Mise en place des scripts

Tests