You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

 

 

 

La idea és disposar d'un cluster de docker-engine i poder instanciar-hi allà els nostres contenidors docker. 

Docker Swarm: Ens permet crear un cluster docker. El node master rebrà i distribuirà els contenidors als nodes secundaris on s'executaran.

Consul: Ens roporcionarà el servei de discover 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 cluster amb l'OpenNebula hem d'instalar el Docker Engine, Docker Machine i el Driver Docker Machine Opennebula.

Aquí està el manual de com fer-ho: Docker Machine OpenNebula Driver

Consul

Disposarem d'una maquina virtual que ens proporcionarà el servei de discover amb consul

Creem una màquina virtual a l'OpenNebula anomenada consul i deprés executem un contenidor docker de consul dins d'ella.

docker-machine create -d opennebula --opennebula-network-id [network_id] --opennebula-image-id [boot2docker_image_id] --opennebula-b2d-size 10240 consul
docker $(docker-machine config consul) run -d -p "8500:8500" -h "consul" progrium/consul -server -bootstrap 

Docker Swarm

Diposarem 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 els contenidors docker.

Swarm-master

Creem la màquina virtual del swarm-master:

CONSUL_IP=$(docker-machine ip consul)
docker-machine create -d opennebula --opennebula-network-id [network_id] --opennebula-image-id  [boot2docker_image_id] --opennebula-b2d-size 10240 --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 del swarm-node:

docker-machine create -d opennebula --opennebula-network-id [network_id] --opennebula-image-id [boot2docker_image_id] --opennebula-b2d-size 10240 --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 els nodes que vulguem. Només hem de canviar el nom de la màquina virtual 

Connexió amb el Swarm

Un cop hem creat les diferents màquines virtuals que volem, ens connectem al node master del swarm.
 

eval $(docker-machine env --swarm swarm-master)
docker info

Xarxa

 Un cop el nostre cluster d'swarm  està corrent hem de crear la xarxa interna del cluster.


docker network create --driver overlay --subnet=10.0.1.0/24 overlay_net

Comprovem que la xarxa està creada correctament.

 

docker network ls



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

Exemple d'ús

Actualment disposeu de dues imatges, ja precreades amb el Docker Engine instal·lat que podeu fer servir:

Crear un contenidor amb nginx en una màquina Docker amb el driver de Docker Machine al OpenNebula:

  • Crear una màquina al OpenNebula amb el Docker Engine i un disc volatil de 10 GB amb la comanda:

    docker-machine  create --driver opennebula --opennebula-network-id $NETWORK_ID --opennebula-image-name boot2docker --opennebula-image-owner oneadmin --opennebula-b2d-size 10240 mydockerengine

    On $NETWORK_ID, serà l'ID de la xarxa on crearem la màquina amb Docker Engine. 

  • Podem comprovar que tot a funcionat bé amb la comanda:

    docker-machine ls


  • Les següents comandes ens mostra les variables d'entorn necessaries per accedir a la shell:

    docker-machine env mydockerengine
    eval $(docker-machine env mydockerengine)
  • Ara podem começar a fer servir docker sobre la màquina Docker Engine que acabem de crear:

    docker pull nginx
    docker run --name mynginx -d -p 80:80 nginx
  • Finalment, comprovem que podem accedir al servidor web que acabem de crear:





 

 

 

 

 

 

 

 

  • No labels