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-compose

Docker Compose

Per utilitzar docker-compose cal que abans coneguis a fons Docker.

Referències:

Articles previs:

Segueix a:

Instal·lació

Docker-compose es pot instal·lar fàcilment en Ubuntu:

$ sudo apt install docker-compose

Per suposat, abans cal tenir instal·lat el Docker Engine. Ves a l'article Docker si encara no l'has seguit.


Wordpress amb docker-compose

Mira la documentació oficial del docker Wordpress. Crea l'arxiu docker-compose.yml i posa'l en marxa amb un:

$ docker-compose up -d

Podràs veure que el -d ens allibera la shell i deixa els contenidors funcionant en background.

Per parar-lo, pots fer:

$ docker-compose down

Comprova quins volums s'han creat, fent:

$ docker volume ls


Escalat de contenidors

Una de les funcions importants per la gestió dels contenidors és la de l'escalat o replicació. En el cas de les aplicacions web, és molt habitual necessitar diverses instàncies del servidor web i el seu software (PHP, Python, etc.), mantenint una sola BD centralitzada (replicar la BD és una operació molt més complexa).

Anem a fer un simple servidor web amb el docker nginxdemos/hello:

docker-compose.yml
version: "2"

services:

  web:
    image: nginxdemos/hello
    ports:
      # important marcar el port intern 80 sense assignar a un d'extern
      # docker-machine li asignarà un port extern automàticament
      - 80

Arranquem amb:

docker-compose up -d

Escalem amb:

docker-compose up -d --scale web=3

Comprovem estat dels nodes amb:

docker-compose ps
  Name                 Command               State           Ports        
--------------------------------------------------------------------------
www_web_1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:49159->80/tcp
www_web_2   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:49160->80/tcp
www_web_3   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:49161->80/tcp

A la mostra veiem que cada node té assignat un port, començant pel 49159. Els nombres de port i de container no tenen perquè ser correlatius. Podem accedir-hi mitjançant el browser a la URL:

http://localhost:32768


Balanç de càrrega amb HAProxy

Per a arrodonir aquest exercici necessitem un balancejador de càrrega que enllaci amb un o altre node web.

docker-compose.yml
version: "2"

services:

  web:
    image: nginxdemos/hello
    ports:
      # importante marcar puerto interno 80 sin asignar a uno externo
      # docker-machine le asignará puerto externo automáticamente
      - 80
  lb:
    image: dockercloud/haproxy
    ports:
      - 8085:80
    links:
      - web
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Veiem que ja no cal redireccionar el port del microservei «web» com hem fet anteriorment.

Ho aixequem tot amb:

docker-compose up -d --scale web=3

Comprovem que estan en marxa els 3 nodes web amb + el HAProxy amb:

docker-compose ps

HAProxy (service lb) ens redirigirà alternativament a un o altre node en cada visita a:

http://localhost:8085


Escalat amb Wordpress

Anem a fer un docker-compose de Wordpress escalable.

  • Crea un docker-compose a partir de l'exemple oficial de la pàgina de Docker Wordpress
  • Configura'l per a poder escalar el contenidor de wordpress (el de la base de dades ha de ser únic).
  • Afegeix també un LB (o load balancer) HAProxy com el de l'exemple anterior.
  • En total ha de tenir 3 serveis: wordpress, db i lb.
  • Assegura't que:
    • El service wordpress no té assignat un port extern (si ho té, no podrà escalar).
    • No t'interfereix la instal·lació de Wordpress anterior. Per assegurar-ho fes una nova carpeta amb nova instal·lació. Si vols aprofitar la que tenies, mira que el port del LB (HAProxy) sigui el mateix que el de la instal·lació anterior.
    • El LB apunta al servei wordpress, i no al web de l'exemple.
  • Comprova que funciona correctament escalant a 4 instàncies de Wordpress i que pots connectar-te a través del port configurat al HAProxy.
  • Per assegurar-nos de que realment HAProxy alterna entre els diferents nodes, forçarem a mostrar la IP del servidor. Farem un hack per mostrar la IP del container que ens està servint:

    Opció hack 1

    • Edita l'arxiu:
      $ sudo vi /var/lib/docker/volumes/scaled-wp_wordpress/_data/index.php
    • Introdueix aquesta línia just després del define:
      echo "IP Address: ".$_SERVER["SERVER_ADDR"];

    Opció hack 2 (theme twentytwentyone)

    • Activa el tema twentytwentyone (fons verd) des de l'admin panel del wordpress.
    • Edita l'arxiu:
      $ sudo vi /var/lib/docker/volumes/scaled-wp_wordpress/_data/wp-content/themes/twentytwentyone/header.php
    • Introdueix aquesta línia després del wp_body_open():
      echo "IP Address: ".$_SERVER["SERVER_ADDR"];
  • Comprova ara que a l'anar a la main page del Wordpress es visualitza la IP i que al recarregar anem alternant entre les diverses IPs.
docker-compose.txt · Darrera modificació: 2023/10/17 18:28 per enric_mieza_sanchez