configuración de moodle en cluster

configuración de moodle en cluster

de Isidro Javier Fernández -
Número de respuestas: 13

Hola a todos/todas.

En el centro de enseñanza donde trabajo, tenemos moodle instalado en un servidor propio con dirección ip fija. Hasta ahora habíamos tenido de sobra con un servidor Windows trabajando sobre apache, pero en el curso pasado se formaba un cuello de botella al aumentar el número de alumnos/alumnas y utilizar elementos multimedia para seguir el curso. Para mejorar la situación, me han encargado a mi el trabajo de mejorar esta situación y he estado mirando los foros (en español y en inglés) pero no he sacado mucho en limpio, sobre todo en la concrección de hacer las cosas, por lo que me gustaría saber, si aquellos que trabajáis en centros grandes podríais ayudarme indicándome si voy bien, que cosas debo corregir, en qué estoy equivocado, etc... y de paso si esta duda puede ayudar a alguien más, mejor que mejor.

He pensado en la siguiente configuración:

- 1 balanceador: Windows 2003 con NLB.

- 2 servidores web: Windows 2003 con apache. Intuyo que es aquí donde debería instalar moodle.

- 1 Servidor con MySQL. Por lo que he leído aquí es también donde debería poner la carpeta moodledata, en principio la base de datos no va a ser replicada en esta fase, por no complicarme mucho las cosas ahora, pero si preveo hacerlo más adelante cuando vea que todo funciona bien.

Se que a muchos le crujirá que haga todo con Windows y mezclándolo con MySQL y apache, pero la estructura que me ha dicho mi jefe que siga, por lo que no contemplo LVS ni nada por el estilo, por lo menos hasta que no convenza al jefe de las virtudes de linux. Tampoco contamos con grandes medios ya que somos un centro pequeño

También tengo dudas a la hora de la instalación de moodle. Entiendo que debo instalarlo en los dos servidores web de la misma forma, pero cuando me pregunte donde está el moodledata y la base de datos MySQL, en las dos instalaciones le tengo que indicar lo mismo.

Tengo alguna preguntilla más, pero lo dejaré para más adelante o para otro hilo.

Un saludo y muchas gracias.

Promedio de valoraciones: -
En respuesta a Isidro Javier Fernández

Re: configuración de moodle en cluster

de Xavier Paz -
El moodledata debería ir en los dos servidores web, aunque puedes montar el directorio en remoto, al menos en Linux se puede.

De todas formas, y antes de optar por comprar nuevo hardware, te recomiendo que analices bien los datos y estadísticas de tráfico y consumo de recursos del sistema, porque a veces basta con optimizar y reorganizar lo que tienes (cachear, comprimir, etc..) antes de lanzarte a comprar hardware.

Si nos das más detalles acerca del escenario en que te manejas (nº de usuarios y cursos, frecuencia de acceso, tamaño de los contenidos, etc..) te podremos de una manera mejor.
En respuesta a Xavier Paz

Re: configuración de moodle en cluster

de Isidro Javier Fernández -

El moodledata había pensado que debería ser una carpeta compartida del equipo que tiene instalado MySQL.

El objetivo es lograr alta disponibilidad y escalabilidad, con los dos moodle teniendo los mismos datos, etc... Es cierto que antes habrá que reorganizar y optimizar todo el sistema, ya que la persona que se encargaba de esto antes lo único que hizo fue instalar el paquete completo con moodle en un servidor y eso había valido hasta ahora.

No dispongo de la previsión de alumnos, pero sí que el centro quiere apostar por utilizar más este sistema de cara a los próximos cursos sin los problemas que dieron el curso pasado de que con menos de cinco alumnos conectados a la vez se quedara bloqueado el curso. Te puedo hacer una aproximación y decir que los cursos, entre otras cosas, tienen contenido multimedia, concretamente hechos con Adobe captivate, con un peso aproximado de 10/15 MB cada lección. Puede haber simultáneamente 5 ó 10 cursos de este tipo y una media de 20/30 alumnos por curso. 

Como digo, la previsión es que sea mayor para este curso, por eso estaba pensando en una solución del tipo que he comentado. De esa manera el tráfico se repartiría entre los dos servidores y si hubiera problemas en mitad de los cursos intentar solucionarlo lo antes posible agregando otro servidor moodle para que los alumnos/alumnas no sufrieran ningún contratiempo a la hora de seguir los cursos.

Saludos y muchas gracias por tu ayuda.

En respuesta a Isidro Javier Fernández

Re: configuración de moodle en cluster

de Iñaki Arenaza -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodlers de gran ayuda
Ubicar el moodledata en el mismo servidor que MySQL no es buena idea.

Aunque con suficiente RAM y MySQL bien sintonizado se puede reducir parcialmente la presión sobre el disco, el cuello de botella en ese sistema va a ser el acceso a disco. Y los dos recursos van a competir por el mismo. En especial porque Windows no es especialmente agresivo a la hora de gastar RAM para cachear acceso a disco (con Linux la situación es sustancialmente mejor, aunque en tu caso no sirva para mucho).

Como el moodledata debe ser único para ambas instalaciones de apache, la única forma de conseguirlo es montando desde red ese directorio en al menos uno de los dos servidores apache (en el escenario más simple uno de los servidores tiene el directorio moodledata en local y lo comparte para que el otro lo monte por red).

No sé como de bueno es el rendimiento del protocolo SMB (discos compartidos de Windows) en este tipo de casos, frente otro tipo de soluciones (NFS, etc.), pero es la opción más sencilla y barata de configurar.

Si la concurrencia es alta, la gestión de sesiones (los ficheros de sesión de PHP) puede ser otro cuello de botella. En este caso puedes optar por ubicar el directorio de sesiones en un tercer servidor y montarlo por red. Con los puntos de unión de W2000 y posteriores (como los 'mount' de Unix) se puede montar un tercer disco de red en un subdirectorio de otro.

De hecho, si tu solución de balanceo de carga permite sesiones HTTP persistentes (todas las peticiones de un cliente van siempre al mismo servidor, y lo que se reparten son clientes diferentes entre los serviores) podrías incluso usar un disco local en cada servidor para las sesiones (creo que es lo que hace la Open University del Reino Unido).

Ya que tienes que usar MySQL por narices, busca una buena guía de ajuste de rendimiento y procura usar conexiones persistentes. En ese caso asegúrate de que limitas los clientes concurrentes en los servidores web (parámetro MaxClients de Apache) y que en MySQL permites tantas conexiones concurrentes como la suma de todos los clientes concurrentes de los Apache, más unas 3-5 más (para poder hacer tareas de gestión de la base de datos).

En todo caso, lo más crítico es la cantidad de RAM de los servidores (tanto en Apache como en MySQL), después el disco (cuantos más discos y más repartida la carga de trabajo entre varios discos mejor) y en menor medida la CPU.

Y aunque en tu caso no sea posible, usar la combinación de SO y motor de base de datos que mejor rendimiento da por el momento (que es Linux, y Postgresql). En el servidor web se puede optar por servidores más eficientes como lighttpd o nginx, pero la dificultad de su puesta en marcha (menos documentación, menos gente con experiencia que los use, etc.) a veces puede ser un obstáculo importante para mucha gente.

Saludos.
Iñaki.
En respuesta a Iñaki Arenaza

Re: configuración de moodle en cluster

de Xavier Paz -
Una pregunta ¿no sería mejor gestionar las sesiones por BD, ya que tienes varios servidores accediendo a la misma BD o sería mucha la penalización de rendimiento?
En respuesta a Xavier Paz

Re: configuración de moodle en cluster

de Iñaki Arenaza -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodlers de gran ayuda
Si tienes muchas sesiones concurrentes, la base de datos ya está trabajando bastante. Si además le añades la carga de recuperar y guardar cada objeto de la sesión en cada petición, le estás haciendo trabajar bastante más.

Como el cuello de botella en una solución de cluster es la base de datos (es lo único que por ahora no se puede replicar de forma sencilla y fiable), cuanto menos trabajo se le dé mejor.

Esa es la teoría. En la práctica sin embargo, supongo que por otras razones que ahora mismo no conozco más que parcialmente, sé que en la versión de Moodle 2.0 las sesiones van en la base de datos por defecto, en lugar de en ficheros.

Ahora mismo no sé decir si es en la misma base de datos que el resto de Moodle, o si por el contrario se puede configurar una base de datos separada (lo que sería mucho mejor). Actualización: acabo de mirar el código de forma rápida y tienen toda la pinta de ser la misma base de datos, así que toda la carga iría a parar al mismo servidor.

Saludos.
Iñaki.
En respuesta a Iñaki Arenaza

Re: configuración de moodle en cluster

de Antonio Piedras -
En nuestra insitución almacenamos en base de datos (postgres 8.4.4) las sesiones y según los compañeros que administran las bases de datos, esta no está penalizada en exceso y el rendimiento es bueno.

Sólo queria explicar nuestra experiencia.

Saludos.
En respuesta a Antonio Piedras

Re: configuración de moodle en cluster

de Xavier Paz -
Por curiosidad, ¿podrías contarnos algún detalle más del escenario, Antonio? ¿qué hardware manejas y cual es el volumen de tu escenario? ¿usáis una BD independiente solo para almacenar las sesiones o se almacena todo en la misma BD que moodle?
En respuesta a Antonio Piedras

Re: configuración de moodle en cluster

de Iñaki Arenaza -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodlers de gran ayuda

Es bueno conocer experiencias de todo el mundo, eso siempre ayuda a tomar decisiones sonrisa

Yo me hacía eco del asunto de las sesiones en disco (incluso en disco local de cada apache del cluster) porque he leido que la gente de la Open University lo hace así.

También es cierto que la mayoría de nosotros no tenemos los niveles de concurrencia que tienen ellos (en nuestro caso ni de lejos sonrisa), ya que su parque de alumnos potenciales (no conozco el número de concurrentes) es superior a los 180.000.

Saludos. Iñaki.

En respuesta a Iñaki Arenaza

Re: configuración de moodle en cluster

de Xavier Paz -
Por supuesto, el compartir experiencias siempre es bueno. Yo tenía curiosidad, más que nada por que si se tiene en mente crecer en infraestructura, tanto en número de servidores web como en servidores BD, siempre es bueno centralizar determinados elementos del sistema, intentando garantizar la portabilidad y escalabilidad. Es decir, no es lo mismo tener 10 servidores con su gestión de sesiones independiente y querer incorporar más, que gestionar todas las sesiones por un servidor de BD, lo cual, al menos en teoría, permite añadir nuevos servidores de forma un poco más sencilla.
En respuesta a Isidro Javier Fernández

Re: configuración de moodle en cluster

de Humberto Keymur -
Hola

Hay algo muy gracios que me vino a la mente cuando vi tu esquema de configuracion, y es que usas un servidor de balanceo en windows, de fuentes que trabajan en un centro de datos en W?.. usan un lvs como balanceador principal, que chistoso que vendan una solución cuando no la usan ellos mismos .... pero en fin son negocios.

Pasemos a la parte interesante del esquema, cuando usas un sistema .nix tienes el control total de todo lo que ahi sucede y pueda pasar, antes de hacer un esquema debes de tener en mente el # máxicomo de clientes a los que vas a atender por X tiempo, asi como la sustentabilidad y escalibilidad de la implementacion.

dependiendo del tipo de curso que tengas, que tan cargado de contenidos tambien tienes que tomar en cuenta tu ancho de banda.

Te recomiendo usar todo por separado, moodledata en un servidor de archivos, base de datos en 1 solo, si necesitas más disponibilidad ponla en varios servidores, en linux puedes usar rsync en win, no se. para los sevridores web si estan bien como los tienes pero con bastante ram, los que tengo traen 64 gigas de ram para soportar alrededor de 1000 usuarios concurrentes en ese server. ahora el balanceo es por aparte.

Hablemos del balanceo, una ves que solicitan tu página el balanceador se la pasa al web, y el web es quien responde o el balanceador???, verifica esto con el uso de herramientas de monitoreo de tráfico en red. Si el balanceador es quien responde como supongo ya tienes la opcion de proque migrar a linux.

Si en tu esquema el balanceador llegase a moriri por x causa, como solventarias eso, necesitarias a la voz de ya otro con la misma configuracion, usa lvs en 2 servidores en alta disponibilidad, si se llega a moriri uno entra el otro y suplanta al anterior sin problemas.

Creo que la muchas personas usan windows por miedo al cambio como humanos, pero una vez que veas el potencial del conocer lo que se hace, no usaras más windows.

si tu jefe te cuestiona porque usar linux, revisa http://es.wikipedia.org/wiki/GNU/Linux#Aplicaciones

Saludos
En respuesta a Humberto Keymur

Re: configuración de moodle en cluster

de Isidro Javier Fernández -
Hola Humberto.
Estoy de acuerdo contigo en casi todo. De hecho, lo mismo me hubiera costado hacer toda labor de investigación/preparación que estoy haciendo para Windows que para Linux, con la ventaja de que para Linux hay más gente respondiendo a todos los niveles.
Como dije en mis primeros posts, seguramente mi jefe tiene miedo que si me voy yo, la cosa se queda empantanada y sin nadie que sepa echarla adelante, por lo que sigo con Windows con idea más adelante de hacer lo mismo con Linux.
La situación actual del proyecto, es un poco frustrante, ya que tras conseguir poner en marcha la base de datos MySQL en un servidor, moodle en otro, no consigo poner en marcha el segundo moodle por problemas con el moodledata (no puede acceder al directorio), ahora iba a mirar por los foros recomendaciones para resolver este problema. Después me meteré con el problema del balanceo y por último volveré a realizar todos los pasos en los que serán los servidores reales (esperando que todo funcione como en local, claro).
Cuando haya terminado todo, como dije, iré poniendo los pasos que he dado de forma más concreta, para que personas que se encuentren en la misma circunstancia que yo tengan algo más concreto que lo que me he ido encontrando.
Muchas gracias por las aportaciones que estáis haciendo, estoy aprendiendo muchas cosas.

Un saludo.
En respuesta a Isidro Javier Fernández

Re: configuración de moodle en cluster

de Humberto Keymur -
hola

Respondiendo a tu esquema, deberias centrarte más en como hacer le balanceo de windows, ya que supongo que lso servidores web tendran una sóla ip publica la del balanceador y estos tendran ip locales, debes habilitar el ipforwarding en los webs y balanceo, y hacer que una vez qyue pase al web este responda, no regrese al balanceador, esta medi extraño pero funciona. a los web les pones la ip del balanceador de forma localhost.

Sobre los archivos creo que es lo que menos te debes de preocupar, instala moodledata en un disco de red y listo, configura que todos puiedan leer, hay de teras de capacidad por 500 dls.


Saludos