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 20:28] enrique_mieza_sanchez [Docker secrets] |
docker_swarm_stacks [2026/10/02 20:51] (actual) enric_mieza_sanchez [Primer docker stack amb traefik] |
||
|---|---|---|---|
| Línia 7: | Línia 7: | ||
| {{ docker-swarm-3.png }} | {{ docker-swarm-3.png }} | ||
| - | {{tag> #Ceti #CetiMp03 #Ciber #CiberMp03 docker swarm stack contenidors traefik load_balancer DevOps}} | + | {{tag> |
| \\ | \\ | ||
| Línia 14: | 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. | + | |
| - | 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 '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | <tabbox Traefik v3> | ||
| + | <file yaml whoami.stack.yml> | ||
| + | version: ' | ||
| + | |||
| + | services: | ||
| + | traefik: | ||
| + | image: traefik: | ||
| + | command: | ||
| + | - --api.insecure=true | ||
| + | - --providers.docker=true | ||
| + | - --providers.swarm=true | ||
| + | - --providers.docker.exposedbydefault=false | ||
| + | - --providers.swarm.exposedbydefault=false | ||
| + | - --entrypoints.web.address=: | ||
| + | ports: | ||
| + | - " | ||
| + | - " | ||
| + | volumes: | ||
| + | - / | ||
| + | deploy: | ||
| + | placement: | ||
| + | constraints: | ||
| + | - node.role == manager | ||
| + | |||
| + | whoami: | ||
| + | image: traefik/ | ||
| + | deploy: | ||
| + | replicas: 4 | ||
| + | labels: | ||
| + | - traefik.enable=true | ||
| + | - traefik.http.routers.whoami.rule=Host(`whoami.docker.local`) | ||
| + | - traefik.http.routers.whoami.entrypoints=web | ||
| + | - traefik.http.services.whoami.loadbalancer.server.port=80 | ||
| + | #- traefik.http.services.whoami.loadbalancer.sticky=true | ||
| + | #- traefik.http.services.whoami.loadbalancer.sticky.cookie.name=whoami_cookie | ||
| + | #- traefik.http.services.whoami.loadbalancer.sticky.cookie.secure=false | ||
| + | |||
| + | </ | ||
| + | |||
| + | <tabbox Traefik v1> | ||
| + | |||
| + | <WRAP important> | ||
| + | ULL si treballes amb aquesta versió obsoleta de Traefik v1, ja que és incompatible amb les APIs de Docker actuals. És preferible utilitzar la v3 de la qual teniu un exemple aquí mateix. | ||
| + | |||
| + | Si vols poder-la emprar igualment, pots fer-ho fent un //tunning// del motor de Docker Swarm per activar la compatibilitat amb APIs antigues. Caldria **crear aquest arxiu i reiniciar els serveis de Docker a tots els nodes del Swarm**: | ||
| + | |||
| + | <file javascript / | ||
| + | { | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Després pots reiniciar els serveis amb: | ||
| + | $ sudo systemctl restart docker.service docker.socket | ||
| + | </ | ||
| <file yaml whoami.stack.yml> | <file yaml whoami.stack.yml> | ||
| Línia 63: | Línia 132: | ||
| </ | </ | ||
| - | Per posar en marxa el // | + | </ |
| - | docker stack deploy --compose-file whoami.stack.yml | + | |
| - | docker stack deploy -c whoami.stack.yml | + | Per posar en marxa el // |
| - | docker | + | docker stack deploy --compose-file whoami.stack.yml |
| + | docker stack deploy -c whoami.stack.yml | ||
| + | |||
| + | I ara, escalem el servei '' | ||
| + | docker | ||
| docker stack ls | docker stack ls | ||
| Línia 76: | Línia 149: | ||
| * Quan refresques t' | * Quan refresques t' | ||
| - | Ara descomenta | + | Ara descomenta |
| * Quan refresques t' | * Quan refresques t' | ||
| * Canvia la IP si accedeixes a la web via '' | * 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 '' | * Què creus que significa el paràmetre //sticky// i perquè creus que funciona al //browser// però no amb '' | ||
| Línia 85: | Línia 160: | ||
| \\ | \\ | ||
| - | ===== Wordpress | + | ===== Wordpress |
| + | Anem a fer una implementació de Wordpress amb Docker Swarm seguint l' | ||
| + | |||
| + | {{ wordpress_swarm.png? | ||
| <WRAP todo> | <WRAP todo> | ||
| - | Elabora un //stack// per allotjar una configuració de Wordpress. Tingues en compte que la BD cal que estigui fixa sempre | + | 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 | ||
| + | |||
| + | 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. | ||
| </ | </ | ||
| Línia 116: | Línia 205: | ||
| - mysql_password | - mysql_password | ||
| - external: true | - 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:// | ||
| + | |||
| + | \\ | ||
| + | |||