bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


Barra lateral

ASIX Administració de Sistemes Informàtics i Xarxes
Tots els mòduls del cicle
MP01 Implantació de sistemes operatius
Totes les UFs del modul
MP02 Gestió de bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Fonaments de maquinari
Totes les UFs del modul
MP06 Administració de sistemes operatius
Totes les UFs del modul
MP07 Planificació i administració de xarxes
Totes les UFs del modul
MP08 Serveis de xarxa i Internet
Totes les UFs del modul
MP09 Implantació d'aplicacions web
Totes les UFs del modul
MP10 Administració de sistemes gestors de bases de dades
Totes les UFs del modul
MP11 Seguretat i alta disponibilitat
Totes les UFs del modul
MP12 Formació i orientació laboral
Totes les UFs del modul
MP13 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP14 Projecte
Totes les UFs del modul
DAM Desenvolupament d’aplicacions multiplataforma
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Accés a dades
Totes les UFs del modul
MP07 Desenvolupament d’interfícies
Totes les UFs del modul
MP08 Programació multimèdia i dispositius mòbils
Totes les UFs del modul
MP09 Programació de serveis i processos
Totes les UFs del modul
MP10 Sistemes de gestió empresarial
Totes les UFs del modul
MP11 Formació i orientació laboral
Totes les UFs del modul
MP12 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP13 Projecte de síntesi
Totes les UFs del modul
MPDual Mòdul Dual / Projecte
DAW Desenvolupament d’aplicacions web
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació
Totes les UFs del modul
MP04 Llenguatge de marques i sistemes de gestió d’informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Desenvolupament web en entorn client
Totes les UFs del modul
MP07 Desenvolupament web en entorn servidor
Totes les UFs del modul
MP08 Desplegament d'aplicacions web
Totes les UFs del modul
MP09 Disseny d'interfícies web
Totes les UFs del modul
MP10 Formació i Orientació Laboral
Totes les UFs del modul
MP11 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP12 Projecte de síntesi
Totes les UFs del modul
SMX Sistemes Microinformàtics i Xarxes
Tots els mòduls del cicle
MP01 Muntatge i manteniment d’equips
Totes les UFs del modul
MP02 Sistemes Operatius Monolloc
Totes les UFs del modul
MP03 Aplicacions ofimàtiques
Totes les UFs del modul
MP04 Sistemes operatius en xarxa
Totes les UFs del modul
MP05 Xarxes locals
Totes les UFs del modul
MP06 Seguretat informàtica
Totes les UFs del modul
MP07 Serveis de xarxa
Totes les UFs del modul
MP08 Aplicacions Web
Totes les UFs del modul
MP09 Formació i Orientació Laboral
Totes les UFs del modul
MP10 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP11 Anglès
Totes les UFs del modul
MP12 Síntesi
Totes les UFs del modul
CETI Ciberseguretat en Entorns de les Tecnologies de la Informació
Tots els mòduls del cicle
CiberOT Ciberseguretat en Entorns d'Operació
Tots els mòduls del cicle
docker_swarm_stacks

Docker Swarm: treballant amb stacks

Prerequisits: conèixer Docker i Docker Swarm.

Els stacks son arxius de configuració de serveis per a Docker Swarm, amb la mateixa sintaxi que el docker-compose però amb alguns paràmetres afegits, en particular a través de l'etiqueta deploy.


Primer docker stack amb traefik

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 i proxy invers per gestionar el balanceig de càrrega.

Traefik és un balancejador de càrrega i proxy invers basat en el llenguatge de programació Go! de Google molt emprat en orquestradors de contenidors.

Podràs visualitzar 2 webs (l'exemple és amb la IP que tenim configurada al Vagrantfile de Docker Swarm:

  • 10.100.199.200:8080 : veuràs el panell d'administració de traefik.
  • 10.100.199.200 : port 80 on podràs veure el frontend de traefik, però de moment ens mostra un Error 404: page not found.
    • Si volem veure la web, caldrà que configureu l'arxiu /etc/hosts i apuntar el domini whoami.docker.local a la IP de la màquina swarm.
    • OJU perquè el /etc/hosts que s'ha d'actualitzar és el de la màquina on estiguem executant el browser, probablement serà la teva màquina física.
    • Ara sí que podem visualitzar la web de whoami al navegador a:
      http://whoami.docker.local
whoami.stack.yml
version: '3'

services:
  traefik:
    image: traefik:v1.7
    command: --web \
      --docker \
      --docker.swarmmode
    ports:
      # The HTTP port
      - "80:80"
      # The Web UI (enabled by --api.insecure=true)
      - "8080:8080"
    volumes:
      # So that Traefik can listen to the Docker events
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - net
    deploy:
      placement:
        constraints: [node.role==manager]
        
  whoami:
    # A container that exposes an API to show its IP address
    image: containous/whoami
    deploy:
      labels:
      - "traefik.enable=true"
      - "traefik.backend=whoami"
      - "traefik.docker.network=net"
      - "traefik.port=80"
      - "traefik.frontend.rule=Host:whoami.docker.local"
      #- "traefik.backend.loadbalancer.sticky=true"
    networks:
      - net

networks:
  net:

Per posar en marxa el stack ho podem fer d'aquestes dues maneres (amb una basta!):

docker stack deploy --compose-file whoami.stack.yml who
docker stack deploy -c whoami.stack.yml who

I ara, escalem el servei whoami:

docker service scale who_whoami=5
docker stack ls

Sticky sessions

Mira el backend d'administració del traefik

Posa en marxa el servei whoami a través del stack i visualitza la web del whoami.

  • Quan refresques t'apareix una IP diferent?

Ara descomenta la línia amb - «traefik.backend.loadbalancer.sticky=true» i posa en marxa de nou el stack.

  • Quan refresques t'apareix ara una IP diferent?
  • Canvia la IP si accedeixes a la web via curl?
    • ULL SPOILER ;) amb el curl la IP ha de variar. Si no ho fa pot ser que no hagis escalat el servei whoami (o que hagis actualitzat amb docker stack deploy i s'haurà resetejat a 1 instància).
    • Assegura't que tens diverses instàncies del servei whoami.
  • Què creus que significa el paràmetre sticky i perquè creus que funciona al browser però no amb curl?


Wordpress en swarm

Anem a fer una implementació de Wordpress amb Docker Swarm seguint l'arquitectura proposada en aquest diagrama:

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'anterior configuració).

  • Escala a, al menys, 3 instàncies del contenidor wp.
  • Instal·la el Wordpress i entra al panell d'administració.
  • 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ó, utilitzant DOCKER SECRETS. Mitjançant aquest mecanisme posarem les contrasenyes, claus i altres dades sensibles a la RAM del Swarm, el què significarà un nivell més alt de seguretat.

Aquest és un exemple:

$ echo "micontraseña" | docker secret create mysql_password -

Els contenidors poden veure les contrasenyes accedint a, per exemple: /run/secrets/mysql_password.

Les podem utilitzar al fitxer de stack així:

services:
  ...
  db:
    ...
    environment:
      ...
      MYSQL_USER: wordpress
      MYSQL_PASSWORD_FILE: /run/secrets/mysql_password
    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'arxius distribuit com GlusterFS.

Tens aquí algunes referències per instal·lar-lo:


docker_swarm_stacks.txt · Darrera modificació: 2023/11/14 18:34 per enric_mieza_sanchez