Cet article reprend une partie du post Running an etcd-Backed Docker Swarm Cluster
et de Installing Docker Compose in CoreOS
Le code source complet de cet article se trouve mis en application sur mon fork coreos-vagrant
il fait suite à l’article Docker sur CoreOS par Vagrant
Prérequis
git clone https://github.com/heralight/coreos-vagrant.git cp config.rb.2.sample config.rb cp user-data.2.sample user-data vagrant up vagrant ssh core-01
Après un vagrant up, vérifions l’état du cluster etcd.
[email protected] ~ $ etcdctl cluster-health member 25d6ce33763c5524 is healthy: got healthy result from http://172.17.8.102:2379 member 6ae27f9fa2984b1d is healthy: got healthy result from http://172.17.8.101:2379 member ff32f4b39b9c47bd is healthy: got healthy result from http://172.17.8.103:2379 cluster is healthy [email protected] ~ $ etcdctl member list 25d6ce33763c5524: name=core-02 peerURLs=http://172.17.8.102:2380 clientURLs=http://172.17.8.102:2379 isLeader=false 6ae27f9fa2984b1d: name=core-01 peerURLs=http://172.17.8.101:2380 clientURLs=http://172.17.8.101:2379 isLeader=true ff32f4b39b9c47bd: name=core-03 peerURLs=http://172.17.8.103:2380 clientURLs=http://172.17.8.103:2379 isLeader=false
Installer Docker Compose
Rapide
Vous retrouverez ce script dans la partie module du projet.
Vous n’avez pas besoins de l’executer à la main si vous utilisez vagrant, dans le fichier config.rb, modifier $vagrant_module_docker_compose à vrai (par défaut).
Ainsi vos instances seront provisionner avec Docker Compose.
En détails
Sur chaque noeud, executer:
curl -L https://github.com/docker/compose/releases/download/1.7.1/docker-compose-`uname -s`-`uname -m` > ~/docker-compose sudo mkdir -p /opt/bin sudo mv ~/docker-compose /opt/bin/docker-compose sudo chown root:root /opt/bin/docker-compose sudo chmod +x /opt/bin/docker-compose
Vérifions l’installation:
[email protected] ~ $ whereis docker-compose docker-compose: /opt/bin/docker-compose
Installer Docker Swarm avec support etcd
Dans l’article précédent, nous avons configurer nos 3 instances avec etcd2 en ip statique.
Nous allons profiter de cette fonctionalité pour configurer Docker Swarm.
Rapide
Vous retrouverez ce script dans la partie module du projet.
Vous n’avez pas besoins de l’executer à la main si vous utilisez vagrant, dans le fichier config.rb, modifier $vagrant_module_docker_swarm à vrai (par défaut).
Ainsi vos instances seront provisionner avec Docker Swarm.
En détails
Ainsi chaque noeud doit s’inscrire à etcd, comme les 3 instances coreos sont synchronizées, nous pouvons executer:
docker run -d swarm join --addr=monip:2375 etcd://monip:2379/swarm
Après cela, vérifions sont bon fonctionnement sur n’importe quel noeud.
[email protected] ~ $ etcdctl ls /swarm/docker/swarm/nodes /swarm/docker/swarm/nodes/172.17.8.101:2375 /swarm/docker/swarm/nodes/172.17.8.102:2375 /swarm/docker/swarm/nodes/172.17.8.103:2375
nous avons besoins d’un manager Swarm, par défaut nous prendre core-01.
Comme nous faisons tourner un moteur docker sur toutes nos instances, swarm simulant un moteur docker, nous aurons un conflit.
Pour palier à ce problème, nous allons rediriger le port de Swarm vers 8333.
docker run -d -p 32375:2375 swarm manage etcd://172.17.8.101:2379/swarm
nous pouvons vérifier notre installation:
docker -H tcp://172.17.8.101:32375 info