Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Panel
titleColor#FFF
titleBGColor#2A7886
titleContinguts

Table of Contents

 

 

La idea és disposar d'un clúster amb Docker Engine i poder instanciar-hi allà els nostres contenidors Docker. 

Docker Swarm: Ens permet crear un clúster Docker. El node màster rebrà i distribuirà els contenidors als nodes secundaris on s'executaran.

Consul: Ens proporcionarà el servei de discovery dels nous nodes que afegim al clúster swarm. 

Requeriments previs

  • Docker Engine: Ens permet crear els contenidors, gestionar-los i instanciar-los
  • Docker Machine: Ens permet crear i gestionar les maquines virtuals
  • Driver Docker Machine Opennebula: Ens permet utilitzar el docker-machine al cloud de l'OpenNebula

Instal·lar el requeriments:

Per a poder implementar el Docker Swarm Clúster amb l'OpenNebula hem d'instalar: Docker Engine, Docker Machine i el Driver de Docker Machine per l'Opennebula.

Teniu disponible el següent tutorial de com fer-ho: DOCKER-1 Docker Machine OpenNebula Driver

Consul

Disposarem d'una maquina virtual amb Docker Engine que ens proporcionarà el servei de discovery amb Consul

Farem servir el driver de Docker Machine per l'OpenNebula, i crearem una màquina virtual anomenada Consul, on després executem un contenidor amb el propi servei de Consul dins d'aquesta.

Code Block
themeRDark
languagebash
docker-machine create -d opennebula --opennebula-network-id [network_id] --opennebula-image-id [boot2docker_image_id] --opennebula-b2d-size [volatile_disk_size] consul
docker $(docker-machine config consul) run -d -p "8500:8500" -h "consul" progrium/consul -server -bootstrap 
CONSUL_IP=$(docker-machine ip consul)

Podem verificar que s'ha instal·lat correctament el servei de Consul, accedint a la IP de la màquina, que acabem de crear, pel port 8500.

Image Added

Docker Swarm

Disposarem de dos tipus de màquines virtuals amb Swarm:

  • Swarm Master: Aquesta màquina amb swarm serà l'encarregada de distribuir les instàncies dels contenidors als diferents nodes que tinguem al clúster.
  • Swarm Node: Aquesta o aquestes màquines seran les que executaran propiament els contenidors Docker.

Swarm-master

Creem la màquina virtual, amb el driver de Docker Machine, pel node màster dels clúster:

Code Block
themeRDark
languageperl
docker-machine create -d opennebula --opennebula-network-id [network_id] --opennebula-image-id  [boot2docker_image_id] --opennebula-b2d-size [volatile_disk_size] --swarm --swarm-master --swarm-discovery="consul://$CONSUL_IP:8500" --engine-opt cluster-store=consul://$CONSUL_IP:8500 --engine-opt cluster-advertise="eth0:2376" swarm-master

Swarm-node

Creem la màquina virtual amb el driver de Docker Machine, pels diferents nodes dels clúster:

Code Block
themeRDark
languageperl
docker-machine create -d opennebula --opennebula-network-id [network_id] --opennebula-image-id [boot2docker_image_id] --opennebula-b2d-size [volatile_disk_size] --swarm --swarm-discovery="consul://$CONSUL_IP:8500" --engine-opt cluster-store=consul://$CONSUL_IP:8500 --engine-opt cluster-advertise="eth0:2376" swarm-node-01

Podem crear tants nodes com vulguem. Només hem d'anar modificant el nom de la màquina virtual.  

Connexió amb el Swarm-master

Un cop hem creat les diferents màquines virtuals que composen el clúster, podem connectar-nos al node màster amb la següent comanda:
 

Code Block
themeRDark
languageperl
eval $(docker-machine env --swarm swarm-master)

 

Code Block
themeRDark
languagebash
docker info


  

Xarxa

 Un cop tenim creat el nostre clúster amb Swarm també tenim l'opció de podercrear xarxes privades dins del clúster.

Code Block
themeRDark
languageperl
docker network create --driver overlay --subnet=10.0.1.0/24 overlay_net
docker network ls

Per a més informació : http://opennebula.org/docker-swarm-with-opennebula/  

Exemple d'ús

Executar contenidors Docker al clúster creat:

  • Ara podem començar a fer servir Docker sobre el clúster que acabem de crear:

    Utilitzarem un contenidor amb nginx, per exemple:

    Code Block
    themeEmacs
    languagebash
    docker pull nginx
    docker run --name mynginx -d -p 80:80 nginx



  • Podem comprovar com el contenidor s'està executant en un node del clúster:
    Podem observar que el contenidor amb el nostre nginx esta corrent a la màquina swarm-node-01

    Code Block
    themeRDark
    languageperl
    docker ps



    Per accedir al servei del contenidor hem de posar la direcció IP del node del clúster al navegador.