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

Compare with Current View Page History

« Previous Version 24 Next »

Continguts

 

 

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 cluster amb l'OpenNebula hem d'instalar el Docker Engine, Docker Machine i el Driver Docker Machine 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

Creem una màquina virtual amb el driver de Docker Machine a l'OpenNebula anomenada consul i després executem un contenidor amb el servei de consul dins d'ella.

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)

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

Swarm-master

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

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:

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 els nodes que vulguem. Només hem de modificar el nom de la màquina.  

Connexió amb el Swarm-master

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

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


Xarxa

 Un cop el nostre clúster d'swarm  està corrent podem crear xarxes internes dins del clúster.

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

Ara ja podem instanciar contenidors docker al nostre clúster swarm.
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 nginx, per exemple

    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:



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