Panel | ||||||
---|---|---|---|---|---|---|
| ||||||
|
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 el : 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
Creem una màquina virtual amb Farem servir el driver de Docker Machine a per l'OpenNebula, i crearem una màquina virtual anomenada Consul i , on després executem un contenidor amb el propi servei de Consul dins d'ellaaquesta.
Code Block | ||||
---|---|---|---|---|
| ||||
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 swarmSwarm:
- Swarm -masterMaster: Aquesta màquina amb swarm serà l'encarregada de distribuir les instàncies dels contenidors als diferents nodes que tinguem al clúster.
- Swarm -nodeNode: Aquesta o aquestes màquines seran les que executaran propiament els contenidors dockerDocker.
Swarm-master
Creem la màquina virtual, amb el driver de Docker Machine, pel node màster dels clúster:
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 tants nodes que com vulguem. Només hem de modificar 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 componen composen el clúster, podem connectar-nos al node màster amb la següent comanda:
Code Block | ||||
---|---|---|---|---|
| ||||
eval $(docker-machine env --swarm swarm-master) docker info |
Xarxa
Un cop tenim creat el nostre clúster amb Swarm també podemtenim l'opció de podercrear xarxes internes privades dins del clúster.
Code Block | ||||
---|---|---|---|---|
| ||||
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 theme Emacs language bash 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
Per accedir al servei del contenidor hem de posar la direcció IP del node del clúster al navegador.