3 Instancias Moodle, 3 Redis, 3 Bases y 1 Moodle Data.

3 Instancias Moodle, 3 Redis, 3 Bases y 1 Moodle Data.

de Mr Munioz TV -
Número de respuestas: 7

Muy Buenas a todos, en primera debo darles las gracias por crear y mantener durante tanto tiempo este espacio de conocimiento y colaboración.

En la universidad donde laburo tenían 1Balanceador HaProxy, 1 Moodle (version 3.10.5) conformador por 9 Nodos Web, 1 Redis (Para sesiones y caché), 1 Base de Datos en SqlServer 2010 y un servidor de archivos NFS donde se encontraba el Moodle Data.

El asunto es que por temas de concurrencias de usuarios partieron en 3 los cluster, quedando 3 Balanceadores HaProxy, 3 Moddle (Cada uno con 3 nodos web), 3 redis para sesiones, 3 Bases de Datos SqlServer y 1 servidor NFS para Moodle Data.

Me di cuenta que en la parte donde se instacion el Redis dentro de la administración del sitio los 3 Moodles apuntaban a un mismo Redis y al intentar cambiar esa ip se replicaba en los demas moodles. Buscando entre el codigo encuentro el archivo de configuracion en MoodleData la ruta es Moodledata/muc/config.php, dandose a notar que los 3 Moodles comparten 1 mismo archivo de configuracion.

Entonces procedo a copiar y pegar 2 archivos mas para que cada archivo tenga su propia Redis y tambien cambio la dirección en el código fuente de cada nodo web apuntando a su archivo de configuración correspondiente.

Al levantar momento de ingresar solo el Moodle 2 funciona correctamente, mientras que el moodle 1 y 3 empieza a mostrar un error de caché. (Adjunto imagenes de los errores que aparecen) . Entonces procedo a dejarlos a que los 3 Moodle apunten a un mismo redis y todo funciona OK pero se presentan problemas como que se mezclan preguntas de una materia  en otras al momento de dar lecciones o examenes.

Si me pueden ayudar con este dilema les agradecería muchisimo.

Muchas gracias por toda la colaboración que me puedan brindar.

Feliz día.

ERRORES QUE APARECEN:
- Excepción - Failed to create cache directory "[localcachedir]/mustache/1627874902/classic".
- Excepción - Class '__Mustache_50434d51a5d0b74031757dc0fb7fcf5b' not found
- Detectado un error de codificación, debe ser corregido por un programador: [localcachedir]/mustache/1627874902/classic directory can not be created, file with the same name already exists.
- Excepción - Failed to write cache file "
- [localcachedir]/mustache/1627874902/classic/__Mustache_e59941ee3873790de1261ac27a05f11a.php".
Detectado un error de codificación, debe ser corregido por un programador: [localcachedir]/mustache/1627874902/classic directory can not be created, file with the same name already exists.

Adjunto Cache 1.png
Promedio de valoraciones: -
En respuesta a Mr Munioz TV

Re: 3 Instancias Moodle, 3 Redis, 3 Bases y 1 Moodle Data.

de Camilo Ravelo Durán -
Hola Gonzalo, el cache local no se debe compartir en REDIS, lo debes dejar en cada máquina (nodo) independiente.
En respuesta a Camilo Ravelo Durán

Re: 3 Instancias Moodle, 3 Redis, 3 Bases y 1 Moodle Data.

de Mr Munioz TV -

Hola Camilo, agradezco mucho tu respuesta.

Que me recomiendas como solucion? 

3 moodle data? (Uno por cluster, en este caso que se vuelva independiente)

o crear 3 carpetas localcache y modificar el código para que cada nodo apunte a su respectiva carpeta? 


Espero puedan ayudarme.

Que tengan un excelente día.

Saludos a Todos.

En respuesta a Mr Munioz TV

Re: 3 Instancias Moodle, 3 Redis, 3 Bases y 1 Moodle Data.

de Camilo Ravelo Durán -
solo 1 moodledata que es el que tienes en tu NFS, de las carpetas que se crean en ese moodledata la carpeta localcachedir debes dejarla en cada maquina donde tienes el moodle en mi caso las deje /var/local/cache y en config.php configuras que tu localcachedir se cree en esa ruta: Ej: '/localcachedir/' => '/var/local/cache'. Te sirve este link: https://docs.moodle.org/311/en/Caching

Espero que te ayude mi respuesta.

Saludos.
En respuesta a Camilo Ravelo Durán

Re: 3 Instancias Moodle, 3 Redis, 3 Bases y 1 Moodle Data.

de Mr Munioz TV -
Estimado Camilo,

Agradezco mucho su respuesta.

Intentare probar lo que acabe de indicarme.
Tan pronto tenga los resultado los escribire por este medio.

Muchas gracias por la atención y el tiempo brindado.

Que tenga buenas tardes.

Saludos Cordiales.
En respuesta a Camilo Ravelo Durán

Re: 3 Instancias Moodle, 3 Redis, 3 Bases y 1 Moodle Data.

de Mr Munioz TV -
Estimado Camilo,

Le comento que se realizo el cambio tal y como lo indico en su mensaje. Agrege $CFG->localcachedir = '/var/local/cache'; en el archivo config.php de cada nodo Moodle.
Se realizaron pruebas unitarias y en producción y todo esta funcionando correctamente.
Le agradeco inmensamente su ayuda.
Espero no tener mas inconvenientes a futuro y si los hay se los dejare saber.

Muchas gracias por la atención y el tiempo brindado.

Que tenga buenas tardes.

Saludos Cordiales.
En respuesta a Mr Munioz TV

Re: 3 Instancias Moodle, 3 Redis, 3 Bases y 1 Moodle Data.

de ANGEMAR HUAMÁN PACHAS -

Buen día con todos, tengo una inquietud;

Actualmente en la universidad en la que trabajo, hay un VPS con moodle instalado; el problema está en que el espacio de disco se llena relativamente rápido; estaba indagando sobre tener 2 servidores; 1 donde se encuentre la Base de datos y el moodle (archivos de moodle) y otro donde se guarde todo el Moodledata (Archivos o documentos que se suban (WORD, pdf, ppt). Este servidor donde se guarda el moodledata lo quiero tener en un servidor fisico que se encuentra en mi institución, para que así no tener la dificultad de estar ampliando cada cierto tiempo el VPS (arrendado), pero, como se le hace saber a moodle que el moodledata esta en este otro servodor; Sé que en el config.php hay un parametro que se le indica la ruta pero al ser otro servidor externo no tengo idea como hacer que se comuniquen.


Agradecería algún experto que ya haya echo esto antes me pueda apoyar.

puede contactarme a angemar@autonomadeica.edu.pe

En respuesta a ANGEMAR HUAMÁN PACHAS

Re: 3 Instancias Moodle, 3 Redis, 3 Bases y 1 Moodle Data.

de Carlos Massoglia -

Hola Angemar,

lo que tu quieres hacer implica que desde el servidor donde tienes el directorio moodledata exportes dicho directorio a la vps donde llegan las peticiones web. Para lograr aquello debes utilizar algún sistema de compartición de archivos. En ambientes Linux lo más común a utilizar es NFS (Network File System) que permite lograr lo que indicas.

Habiendo explicado lo anterior aprovecho de indicarte que no te recomiendo implementar lo que indicas, en particular tener el servidor donde estará el Moodledata en un servidor que se encuentre en un datacenter distinto a donde tienen la VPS, pues con ello aumentará la latencia para que Moodle pueda acceder a moodledata y lo que verás como resultado es que la plataforma comenzará a responder mucho más lenta. El esquema que tu indicas funciona bien cuando todos los servidores están en un mismo datacenter, pues la latencia es mínima.


Saludos.