7 Septembre 2016

Documents intéressants

Installation de Docker Machine

Afin de pouvoir simuler un cluster de plus de 5 machine il est plus simple d’utiliser docker machine. Ce logiciel permet de rapidement lancer des machines virtuelles avec Docker préinstallé et propose différentes option pour faire fonctionner swarm directement.

Par exemple :

docker-machine create -d virtualbox keystore

Cette commande crée une machine virtuelle dans virtualbox et y installe un systeme simple contenant Docker et s’apellant keystore

Il faut ensuite installer Consul qui va se charger de stocker les IP des différentes machines du cluster :

    docker run -d \
        -p "8500:8500" \  
        -h "consul" \  
        progrium/consul -server -bootstrap

De la même manière il est possible de créer un cluster très rapidement comme suit :

Pour démarer un master :

    docker-machine create \
        -d virtualbox \  
        --swarm --swarm-master \  
        --swarm-discovery="consul://$(docker-machine ip keystore):8500" \  
        --engine-opt="cluster-store=consul://$(docker-machine ip keystore):8500" \  
        --engine-opt="cluster-advertise=eth1:2376" \  
        node-1

Pour connecter un client :

    docker-machine create -d virtualbox \  
        --swarm \  
        --swarm-discovery="consul://$(docker-machine ip keystore):8500" \  
        --engine-opt="cluster-store=consul://$(docker-machine ip keystore):8500" \  
        --engine-opt="cluster-advertise=eth1:2376" \  
        node-2

On peut voir qu’il est possible de récupérer les IP de machines créées auparavant avec ‘docker-machine ip keystore’

Exemple de cluster fonctionnel :

Capture d’écran cluster

Capture d’écran cluster

Le cluster peut ensuite être manipulé très simplement de la façon suivante :

eval $(docker-machine env keystore)

cette commande va modifier les variables d’environement de Docker afin que la machine se connecte aux machines virtuelles docker. Les machines virtuelles exposent le port du daemon Docker et le client peut donc s’y connecter.

Si on veut se connecter au master du swarm docker il faut lancer eval $(docker-machine env –swarm node-1)

Création d’un cluster swarm + hdfs

Pour ce genre d’architecture complexe le plus simple est d’utiliser docker-compose. Ce programme permet, à partir d’un fichier YAML de démarer les containers indiqué avec les option indiquées.

Pour notre cas je me suis inspiré de celui ci il suffit ensuite après avoir chargé les variables d’environement du swarm de lancer : docker-compose up

Pour rajouter des worker la commande est la suivante : docker-compose scale spark-worker=x avec x le nombre total de worker souhaités.

Résultat :

Capture d’écran spark + hdfs

Capture d’écran spark + hdfs

On voit que les workers on été dispatché sur les différentes machines. Namenode est le noeud principal hdfs et datanode 1 et 2 correspondent au stockage. Les deux premiers containers de la liste sont des interfaces web pour spark et hdfs.