Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
docker_swarm_stacks [2021/12/04 13:30] enrique_mieza_sanchez [Primer docker stack] |
docker_swarm_stacks [2023/11/14 18:34] (actual) enric_mieza_sanchez [Sticky sessions] |
||
---|---|---|---|
Línia 5: | Línia 5: | ||
Els //stacks// son arxius de configuració de serveis per a Docker Swarm, amb la mateixa sintaxi que el '' | Els //stacks// son arxius de configuració de serveis per a Docker Swarm, amb la mateixa sintaxi que el '' | ||
- | {{tag> #Ceti #CetiMp03 #Ciber #CiberMp03 docker swarm stack contenidors traefik load_balancer DevOps}} | + | {{ docker-swarm-3.png }} |
+ | |||
+ | {{tag> | ||
\\ | \\ | ||
Línia 12: | Línia 14: | ||
Anem a posar en marxa una xarxa amb dos serveis: | Anem a posar en marxa una xarxa amb dos serveis: | ||
- | * whoami: container que mostra la IP i algunes dades internes per a fer proves. | + | |
- | * traefik: conegut load balancer per gestionar el balanceig de càrrega. | + | |
- | Per posar en marxa el //stack//: | ||
- | docker stack deploy --compose-file whoami.stack.yml hello | ||
- | docker stack deploy -c whoami.stack.yml hello | ||
- | docker stack scale hello_whoami=3 | ||
- | docker stack ls | ||
- | Podràs visualitzar 2 frontends | + | <WRAP tip> |
+ | [[https:// | ||
+ | |||
+ | {{ traefik-architecture.png? | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP info> | ||
+ | Podràs visualitzar 2 webs (l' | ||
* 10.100.199.200: | * 10.100.199.200: | ||
- | * 10.100.199.200 : port 80 on podràs veure el frontend de traefik, però de moment ens mostra un '' | + | * 10.100.199.200 : port 80 on podràs veure el //frontend// de traefik, però de moment ens mostra un '' |
- | * Si volem veure la web, caldrà que configureu l' | + | |
+ | * OJU perquè el ''/ | ||
+ | * Ara sí que podem visualitzar la web de '' | ||
+ | </ | ||
<file yaml whoami.stack.yml> | <file yaml whoami.stack.yml> | ||
Línia 66: | Línia 74: | ||
net: | net: | ||
</ | </ | ||
+ | |||
+ | Per posar en marxa el //stack// ho podem fer d' | ||
+ | docker stack deploy --compose-file whoami.stack.yml who | ||
+ | docker stack deploy -c whoami.stack.yml who | ||
+ | |||
+ | I ara, escalem el servei '' | ||
+ | docker service scale who_whoami=5 | ||
+ | docker stack ls | ||
+ | |||
+ | ==== Sticky sessions ==== | ||
+ | <WRAP todo> | ||
+ | Mira el //backend// d' | ||
+ | |||
+ | Posa en marxa el servei whoami a través del //stack// i visualitza la web del whoami. | ||
+ | * Quan refresques t' | ||
+ | |||
+ | Ara descomenta la línia amb '' | ||
+ | * Quan refresques t' | ||
+ | * Canvia la IP si accedeixes a la web via '' | ||
+ | * **ULL SPOILER ;) amb el '' | ||
+ | * Assegura' | ||
+ | * Què creus que significa el paràmetre //sticky// i perquè creus que funciona al //browser// però no amb '' | ||
+ | |||
+ | </ | ||
\\ | \\ | ||
+ | |||
+ | ===== Wordpress en swarm ===== | ||
+ | Anem a fer una implementació de Wordpress amb Docker Swarm seguint l' | ||
+ | |||
+ | {{ wordpress_swarm.png? | ||
+ | |||
+ | <WRAP todo> | ||
+ | Elabora un //stack// per allotjar una configuració de Wordpress. | ||
+ | |||
+ | Tingues en compte que **la BD cal que estigui fixa al mateix node**, ja que **els volums NO es comparteixen entre màquines**. Busca quina restricció ens ho permet realitzar. | ||
+ | |||
+ | Com a //load balancer// pots optar entre fer servir el propi de Docker Swarm (no cal crear cap servei específic, el mateix sistema ho facilita) o bé pots afegir un //load balancer// propi com //traefik// (en aquest cas sí que cal crear un servei, tens un exemple en l' | ||
+ | |||
+ | * Escala a, al menys, 3 instàncies del contenidor wp. | ||
+ | * Instal·la el Wordpress i entra al panell d' | ||
+ | * Entra Penja un post amb una imatge. | ||
+ | * Comprova què passa si visualitzem el post des de diferents finestres privades. Què creus que està passant? | ||
+ | * Explica perquè es dona aquest error i proposa alguna solució raonant-la. | ||
+ | |||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Docker secrets ===== | ||
+ | Docker Swarm ens permet no deixar la contrasenya en els arxius de configuració, | ||
+ | |||
+ | Aquest és un exemple: | ||
+ | $ echo " | ||
+ | |||
+ | Els contenidors poden veure les contrasenyes accedint a, per exemple: ''/ | ||
+ | |||
+ | Les podem utilitzar al fitxer de //stack// així: | ||
+ | services: | ||
+ | ... | ||
+ | db: | ||
+ | ... | ||
+ | environment: | ||
+ | ... | ||
+ | MYSQL_USER: wordpress | ||
+ | MYSQL_PASSWORD_FILE: | ||
+ | secrets: | ||
+ | - mysql_password | ||
+ | ... | ||
+ | secrets: | ||
+ | - mysql_password | ||
+ | - external: true | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Gluster Filesystem ===== | ||
+ | Per tal de facilitar la interoperativitat dels nodes en un Swarm es pot utilitzar un sistema d' | ||
+ | |||
+ | Tens aquí algunes referències per instal·lar-lo: | ||
+ | * https:// | ||
+ | * [[https:// | ||
+ | |||
+ | \\ | ||
+ | |||
+ | |||