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-compose [2021/10/26 14:53] enrique_mieza_sanchez [Escalat de contenidors] |
docker-compose [2023/10/17 18:28] (actual) enric_mieza_sanchez [Escalat amb Wordpress] |
||
|---|---|---|---|
| Línia 10: | Línia 10: | ||
| * [[Docker]] pràctiques inicials a bytes.cat | * [[Docker]] pràctiques inicials a bytes.cat | ||
| - | {{tag> #Asix #Ceti #Ciber #CetiMp03 #CiberMp03 }} | + | Segueix a: |
| + | * [[Docker upgrade de containers]] | ||
| + | * [[Dockerfile]] | ||
| + | |||
| + | |||
| + | {{tag> | ||
| ===== Instal·lació ===== | ===== Instal·lació ===== | ||
| Línia 71: | Línia 76: | ||
| 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: | 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:// | http:// | ||
| - | | + | |
| + | \\ | ||
| ===== Balanç de càrrega amb HAProxy ===== | ===== 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. | Per a arrodonir aquest exercici necessitem un balancejador de càrrega que enllaci amb un o altre node web. | ||
| Línia 77: | Línia 84: | ||
| <file yaml docker-compose.yml> | <file yaml docker-compose.yml> | ||
| version: " | version: " | ||
| + | |||
| services: | services: | ||
| - | web: | ||
| - | image: nginxdemos/ | ||
| - | lb: | ||
| - | image: dockercloud/ | ||
| - | ports: | ||
| - | - 8080:80 | ||
| - | links: | ||
| - | - web | ||
| - | volumes: | ||
| - | - / | ||
| - | </ | ||
| - | Podemos ver que ya no hace falta redireccionar el puerto del microservicio | + | |
| - | anteriormente. | + | image: nginxdemos/hello |
| - | Levantamos el servicio completo con: | + | |
| - | # docker-compose up -d –scale web=3 | + | |
| - | Comprovamos que estan en marcha los 3 nodos web + el nodo HAProxy con: | + | |
| - | # docker-compose ps | + | |
| - | HAProxy (servicio lb) nos redirigirá alternativamente a uno u otro nodo en cada visita a: | + | |
| - | http:// | + | |
| - | Crea un docker-compose similar al ejemplo realizado pero con un Wordpress (puedes tomar el | + | |
| - | ejemplo de la imagen oficial de Docker Hub). Configuralo para poder escalar el contenedor de | + | |
| - | wordpress (el de la base de datos ha de ser único) y añádele un HAProxy como el del ejemplo. En | + | |
| - | total tendrá, pues, 3 servicios: db, wordpress y lb (load balancer). | + | |
| - | Comprueba que funciona correctamente escalando a 4 instancias de Wordpress y que puedes | + | |
| - | conectarte a través del puerto configurado en el HAProxy. | + | |
| - | Para asegurarnos de que realmente HAProxy alterna entre los diferentes nodos, edita el archivo de | + | |
| - | Wordpress para forzar a mostrar la IP del servidor: | + | |
| - | # vi | + | |
| - | / | + | |
| - | twentytwentyone/ | + | |
| - | (Dependiendo de la versión de Wordpress puede cambiar el nombre del theme , en este caso es el | + | |
| - | twtentytwentyone pero podria ser otro). | + | |
| - | Introduce esta línia después de get_header() : | + | |
| - | echo "IP Address: " | + | |
| - | Comprueba ahora que al ir a la main page del Wordpress se visualiza la IP y que al recargar vamos | + | |
| - | alternando entre las diversas IPs. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ===== Escalat de Wordpress ===== | + | |
| - | + | ||
| - | Anem a veure com escalar el sistema Wordpress que hem muntat amb el docker-compose oficial. | + | |
| - | + | ||
| - | Aixeca' | + | |
| - | $ docker-compose up -d | + | |
| - | + | ||
| - | Prova d' | + | |
| - | $ docker-compose up --scale wordpress=3 | + | |
| - | + | ||
| - | Veurem que no ens deixa i ens dona un error de que el port està en ús: | + | |
| - | Cannot start service wordpress: ... : Bind for 0.0.0.0: | + | |
| - | + | ||
| - | És normal ja que no puc replicar diversos contenidors que es publiquin al mateix port de la màquina //host//. La solució és canviar la línia de publicació del port 80 i substituir-la per aquesta, on no s' | + | |
| - | <file yml docker-compose.yml> | + | |
| - | ... | + | |
| - | wordpress: | + | |
| - | ... | + | |
| ports: | ports: | ||
| - | - 80 | + | |
| - | ... | + | # docker-machine le asignará puerto externo automáticamente |
| + | | ||
| + | lb: | ||
| + | image: dockercloud/ | ||
| + | ports: | ||
| + | - 8085:80 | ||
| + | | ||
| + | - web | ||
| + | volumes: | ||
| + | - / | ||
| </ | </ | ||
| - | Per poder publicar tots els contenidors al mateix rang, podem destruir els contenidors wordpress i no el de la BD: | + | Veiem que ja no cal redireccionar |
| - | $ docker-compose rm -f wordpress | + | |
| - | I els tornem a aixecar | + | Ho aixequem tot amb: |
| - | | + | docker-compose up -d --scale |
| + | |||
| + | Comprovem que estan en marxa els 3 nodes web amb + el HAProxy amb: | ||
| + | docker-compose ps | ||
| - | Podem veure els contenidors creats amb: | + | HAProxy (service lb) ens redirigirà alternativament a un o altre node en cada visita a: |
| - | | + | |
| \\ | \\ | ||
| - | ===== Actualització de contenidors | + | ===== Escalat amb Wordpress |
| - | Després de fer una instal·lació caldrà mantenir-la, | ||
| - | |||
| - | Algunes consideracions: | ||
| - | * Cada CMS o software tenen la seva pròpia manera de dockeritzar-se i hi ha algunes pràctiques o tendències comunes. | ||
| - | * No es pot generalitzar un procés únic d' | ||
| - | * Com veurem, un cop realitzada la instal·lació i amb el volum persistit, canviar el container pot no canviar directament la versió del // | ||
| - | * Veurem dos casos paradigmàtics, | ||
| - | * Per actualitzar, | ||
| - | |||
| - | <WRAP tip> | ||
| - | Si hi hagués algun conflicte amb les versions de partida i destí de PHP que necessita el CMS, una possible solució seria fer l' | ||
| - | </ | ||
| - | |||
| - | ==== Actualitzar Wordpress docker ==== | ||
| <WRAP todo> | <WRAP todo> | ||
| - | Actualització | + | Anem a fer un '' |
| - | * Instal·la | + | * Crea un docker-compose a partir de l' |
| - | * Caldrà que canviïs el //tag// del contenidor | + | * Configura' |
| - | * Per identificar si l'upgrade funciona, cal que personalitzem la instal·lació: | + | * Afegeix també un LB (o //load balancer//) '' |
| - | * Edita el nom del //blog// | + | * En total ha de tenir 3 serveis: |
| - | * Afegeix un article | + | * Assegura't que: |
| - | * Personalitza el skin (canvia | + | * El //service// '' |
| - | * Entra al contenidor | + | * No t' |
| - | * Versió de PHP | + | * El LB apunta al servei '' |
| - | * Versió exacta | + | * 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 // | ||
| + | * Edita l' | ||
| + | $ sudo vi /var/lib/docker/volumes/ | ||
| + | </ | ||
| + | | ||
| + | echo "IP Address: " | ||
| + | </code> | ||
| + | <tabbox Opció hack 2 (theme twentytwentyone)> | ||
| + | * Activa el tema '' | ||
| + | * Edita l' | ||
| + | $ sudo vi /var/lib/ | ||
| + | </ | ||
| + | * Introdueix aquesta línia després del '' | ||
| + | echo "IP Address: " | ||
| + | </ | ||
| + | </ | ||
| + | | ||
| - | Passem a fer l' | ||
| - | * Apaga el projecte de contenidors amb un '' | ||
| - | * Canvia el //tag// a la darrera versió estable (no facis //latest//, ja que al traslladar el container a un altre lloc en un altre moment ens podria descarregar una altra versió). | ||
| - | * Engega de nou el projecte. | ||
| - | * Visualitza el Wordpress per veure si segueix funcionant. | ||
| - | * Entra al contenidor // | ||
| - | * Quins canvis hi ha hagut? | ||
| </ | </ | ||
| - | \\ | ||
| - | |||
| - | ==== Actualitzar Mediawiki docker ==== | ||
| - | Aquest cas és diferent de l' | ||
| - | |||
| - | <WRAP todo> | ||
| - | - [[https:// | ||
| - | * Canviar al '' | ||
| - | * Persisir les carpetes: | ||
| - | * ''/ | ||
| - | * ''/ | ||
| - | - Tal i com s' | ||
| - | - Destruir (down) i arrencar de nou (up) la instància. Comprovar que funciona i afegir alguna frase a la pàgina principal per a testejar. | ||
| - | - Comprovar que tenim la versió 1.31 a la pàgina< | ||
| - | - Destruir la instància mitjançant:< | ||
| - | - Canviar (actualitzar) la versió de Mediawiki a la 1.36 | ||
| - | - Posar en marxa de nou la instància. | ||
| - | - Consultar la pàgina d' | ||
| - | - Actualitzar la BD anant a < | ||
| - | - Ens demanarà la '' | ||
| - | - Comprovar que s'ha actualitzat correctament la versió de Mediawiki. | ||
| - | </ | ||
| - | |||
| - | \\ | ||