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 15:08] enrique_mieza_sanchez [Balanç de càrrega amb HAProxy] |
docker-compose [2023/10/17 18:28] (actual) enric_mieza_sanchez [Escalat amb Wordpress] |
||
---|---|---|---|
Línia 12: | Línia 12: | ||
Segueix a: | Segueix a: | ||
* [[Docker upgrade de containers]] | * [[Docker upgrade de containers]] | ||
+ | * [[Dockerfile]] | ||
- | {{tag> #Asix #Ceti #Ciber #CetiMp03 #CiberMp03 }} | + | {{tag> |
===== Instal·lació ===== | ===== Instal·lació ===== | ||
Línia 75: | 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 103: | Línia 106: | ||
Ho aixequem tot amb: | Ho aixequem tot amb: | ||
- | docker-compose up -d –scale web=3 | + | docker-compose up -d --scale web=3 |
| | ||
- | Comprovem que estan en marxa els 3 nodes web amb | + | Comprovem que estan en marxa els 3 nodes web amb + el HAProxy |
- | Comprovamos que estan en marcha los 3 nodos web + el nodo HAProxy | + | docker-compose ps |
- | # 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. | + | |
+ | HAProxy (service lb) ens redirigirà alternativament a un o altre node en cada visita a: | ||
+ | http:// | ||
+ | \\ | ||
+ | ===== Escalat amb Wordpress ===== | ||
+ | <WRAP todo> | ||
+ | Anem a fer un '' | ||
+ | * Crea un docker-compose a partir de l' | ||
+ | * Configura' | ||
+ | * Afegeix també un LB (o //load balancer//) '' | ||
+ | * En total ha de tenir 3 serveis: wordpress, db i lb. | ||
+ | * Assegura' | ||
+ | * El //service// '' | ||
+ | * No t' | ||
+ | * El LB apunta al servei '' | ||
+ | * 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:< | ||
+ | * Edita l' | ||
+ | $ sudo vi / | ||
+ | </ | ||
+ | * Introdueix aquesta línia just després del '' | ||
+ | echo "IP Address: " | ||
+ | </ | ||
+ | <tabbox Opció hack 2 (theme twentytwentyone)> | ||
+ | * Activa el tema '' | ||
+ | * Edita l' | ||
+ | $ sudo vi / | ||
+ | </ | ||
+ | * Introdueix aquesta línia després del '' | ||
+ | echo "IP Address: " | ||
+ | </ | ||
+ | </ | ||
+ | * **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**. | ||
- | ===== Escalat de Wordpress ===== | + | </WRAP> |
- | + | ||
- | 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: | + | |
- | - 80 # abans era 8080:80 | + | |
- | ... | + | |
- | </file> | + | |
- | + | ||
- | Per poder publicar tots els contenidors al mateix rang, podem destruir els contenidors wordpress i no el de la BD: | + | |
- | $ docker-compose rm -f wordpress | + | |
- | + | ||
- | I els tornem a aixecar amb: | + | |
- | $ docker-compose up -d --scale wordpress=3 | + | |
- | + | ||
- | Podem veure els contenidors creats amb: | + | |
- | $ docker-compose ps | + | |
- | + | ||
- | \\ | + | |