Table des matières

I. Mise en place

Il s'agit d'un TP noté. Il faudra rendre un rapport rédigé et imagé au plus tard au 04/05/2018.

Avec l'aide de docker-machine et des instructions ci-dessous créer 3 instances de type m1.xsmall vous devez utiliser l'image “SRIV-SVC”. Le hostname doit comprendre votre prénom et le type de noeud swarm (workerN ou manager).

export OS_USERNAME=$(read USER; echo $USER)
export OS_DOMAIN_NAME=univ-lyon1.fr
export OS_SSH_USER=ubuntu
export OS_PASSWORD=$(read -s PASSWORD; echo $PASSWORD)

Maintenant, vous pouvez initialiser votre cluster swarm avec docker swarm init. Puis intégrez vos workers à votre cluster.

Faites un build de cette image sur les 3 machines ou vous pouvez utiliser un repository c'est à votre convenance.

Petite astuce, pour faire les captures de l’hôte docker depuis votre machine vous pouvez utiliser cette méthode:

mkfifo /tmp/wirepipe
nohup wireshark-qt -k -i /tmp/wirepipe
docker-machine ssh XXXX sudo tcpdump -i ens3 -w - not port 22 > /tmp/wirepipe

2. Écoute des échanges

Vous allez créer un service avec 2 replicats à partir de l'image précédemment construite. On a lancé 2 replicats alors que notre cluster est composé de 3 machines, il y a donc une machine sans container. Connectez vous sur cette machine faites une capture réseau du trafic. Lancer Firefox et faites des requêtes HTTP vers cet hôte.

3. Docker gateway

Dés que vous avez initialisé votre swarm, vous avez vu apparaître cette nouvelle carte réseau docker_gwbridge. On va maintenant vérifier son fonctionnement. Vous allez maintenant sur un hôte avec un container actif. Faites un docker exec ping 134.214.100.6. Si vous êtes dans le container, vous pouvez le kill facilement, si vous êtes sur l’hôte, garder en tête que vous avez un ping qui tourne.

4. Étudier les namespaces

Docker ne respecte pas la convention pour les espaces de nom réseau. Il va falloir créer un lien afin qu'on puisse utiliser ip netns. Sur un hôte exécutez ces commandes:

sudo ln -s /var/run/docker/netns /var/run/netns
sudo ip netns

5. On connecte tous les éléments

Afin de faciliter la réalisation du schéma, nous allons utiliser la commande brctl show

Pour la réponse précédente vous avez peut être vu le mot ipvs, il s'agit du load balancer implémenté dans le noyau Linux

Pour le plaisir on peut maintenant regarder les connexions actives avec la commande ip netns exec ingress_sbox ipvsadm -ln et on comprend comment le load balancing se fait sur un simple GET répétitif

6. Schéma d'architecture

Pour finaliser votre rapport vous devez produire un schéma d'architecture. Vous pouvez utiliser Microsoft Visio ou bien draw.io.

Sur ce schéma, il doit apparaître :