Moodle en AWS: un enfoque nativo de la nube

El sector de la educación continúa cambiando drásticamente y con el aprendizaje electrónico a través de plataformas digitales que se está convirtiendo en algo común, los líderes educativos tienen que repensar las formas de brindar una educación de calidad de una manera escalable y rentable. Moodle es un sistema de gestión de aprendizaje (LMS) gratuito y de código abierto escrito en PHP y distribuido bajo la licencia pública general GNU

La Parte 1 de esta serie de blogs de dos partes le brinda orientación sobre la implementación de Moodle en AWS utilizando contenedores de una manera altamente disponible, escalable y rentable utilizando servicios administrados de orden superior como AWS Fargate , Amazon Elastic File System (EFS) , Amazon ElastiCache y Amazon RDS , etc. En la parte 2, entraré en detalles sobre cómo dockerizar Moodle para esta implementación en Amazon Elastic Container Service (ECS) y también proporcionaré plantillas de AWS CloudFormation para la implementación.

Acerca de Moodle LMS

Moodle permite a los educadores crear su propio sitio web privado que contiene cursos dinámicos que amplían el aprendizaje a través de múltiples plataformas como web, aplicaciones móviles, etc. Una instalación típica de Moodle comprende la ejecución del código de Moodle en un servidor web compatible con PHP, una base de datos relacional (MySQL, PostgreSQL , MariaDB, etc.) y un almacén de archivos para archivos cargados y generados.

La moodledatacarpeta normalmente ubicada /var/www/moodledataes donde Moodle almacena los archivos cargados y generados, por lo que el servidor web debe permitir la escritura. Además, el servidor web no debe poder escribir el código, que normalmente reside en una carpeta como /var/www/moodleo no.~/htdocs/moodle

El almacenamiento de caché de Redis es una excelente opción para manejar la caché de sesiones y aplicaciones, ya que admite la garantía de datos, el reconocimiento de claves y el bloqueo. La distribución predeterminada de Moodle no viene con un controlador Redis PHP y debe instalarse para permitir la comunicación con un servidor Redis.

Una arquitectura nativa de la nube para Moodle

Moodle tiene varios requisitos que deben abordarse cuando se implementa como una solución escalable y de alta disponibilidad. Planeo mostrarle cómo una combinación de servicios de AWS administrados de orden superior puede ayudar a abordar estos requisitos. El siguiente diagrama de arquitectura muestra una implementación basada en contenedores de Moodle en AWS Fargate. Veamos los componentes en detalle.

Figura 1: Arquitectura nativa de la nube para Moodle
Figura 1: Arquitectura nativa de la nube para Moodle

AWS Fargate para computación

Amazon ECS en AWS Fargate es una excelente opción que se puede utilizar para ejecutar contenedores Docker sin tener que administrar servidores o clústeres de instancias Amazon EC2. Debido a que Amazon ECS es un organizador de contenedores distribuido regionalmente y completamente administrado por AWS, obtiene resiliencia y escalabilidad inmediata.

Para ejecutar tareas y servicios de Moodle con el tipo de lanzamiento Fargate, la aplicación de Moodle debe empaquetarse en contenedores. Además, especificamos los requisitos de CPU y memoria, las redes y las políticas de IAM y ejecutamos la aplicación. Para distribuir el tráfico HTTP/HTTPS (o capa 7) entrante a diferentes tareas que se ejecutan en el servicio, se puede usar un balanceador de carga de aplicaciones.

Sistema de archivos elástico para moodledata

En una implementación de alta disponibilidad de Moodle, todos los servidores deben acceder al almacenamiento de archivos compartidos moodledata. Amazon EFS es un sistema de archivos elástico compartido totalmente administrado diseñado para ser consumido por otros servicios de AWS como ECS. Amazon EFS se escala, replica sus datos de forma transparente y los pone a disposición en todas las zonas de disponibilidad y admite varios niveles de almacenamiento para satisfacer las demandas de la mayoría de las cargas de trabajo. Recientemente se introdujo la integración nativa entre Amazon ECS y Amazon EFS y esta integración se ha habilitado para Fargate a través de la versión 1.4 de la plataforma.

Cuando crea un sistema de archivos EFS, se crea en una infraestructura que abarca varias zonas de disponibilidad (al menos 3) para mayor durabilidad. Este sistema de archivos se puede montar y acceder simultáneamente desde todas las zonas de disponibilidad de la región a través de EFS mount targets.

Administración de sesiones con ElastiCache

Moodle necesita almacenar los datos de la sesión del usuario para mantener el estado de la aplicación mientras funcionan, lo que significa que los usuarios pueden conectarse a cualquiera de sus servidores sin perder su progreso. Al planificar una implementación de ElastiCache, es muy importante planificar las fallas para que haya un impacto mínimo en los entornos informáticos en ejecución.

Para hacer que nuestra aplicación Moodle sea tolerante a fallas, confío en Redis Replication Groups (RG). Un Redis RG se compone de un único nodo principal en el que nuestros entornos informáticos de Moodle pueden leer y escribir y hasta 5 nodos de réplica de solo lectura. Cada vez que se escriben datos en el nodo principal, también se replican de forma asíncrona en los nodos de réplica de lectura. Para mitigar el impacto de una falla en la zona de disponibilidad (AZ), coloco los nodos en varias AZ.

Amazon RDS MySQL como base de datos de Moodle

Amazon RDS proporciona soporte de alta disponibilidad y conmutación por error para instancias de base de datos que utilizan implementaciones multi-AZ. En nuestra implementación multi-AZ, Amazon RDS aprovisiona y mantiene automáticamente una réplica en espera síncrona en una AZ diferente. La instancia de base de datos principal se replica sincrónicamente en las zonas de disponibilidad en una réplica en espera para proporcionar redundancia de datos, eliminar bloqueos de E/S y minimizar los picos de latencia durante las copias de seguridad del sistema. En caso de una interrupción planificada o no planificada de su instancia de base de datos, Amazon RDS cambia automáticamente a una réplica en espera en otra zona de disponibilidad si ha habilitado multi-AZ.

Amazon ECR como repositorio docker

Para las organizaciones que desean tener un registro de contenedores Docker privado completamente administrado, Amazon Elastic Container Registry (ECR) es una opción muy atractiva. Dado que ECR está integrado con ECS, el desarrollo del flujo de trabajo de producción se simplifica significativamente.

AWS Secrets Manager para almacenar credenciales

El entorno informático de Moodle que se ejecuta en AWS Fargate debe conectarse a Amazon RDS y a Amazon ElastiCache. El administrador de secretos de AWS es una buena opción para almacenar bases de datos y credenciales de Redis e inyectar de manera transparente en los contenedores que se ejecutan en ECS.

Escalado automático

Para mantener la rentabilidad, queremos crear un servicio que se ejecute en servidores de baja especificación, el sistema implementará servidores adicionales para manejar la carga cuando sea necesario, pero en otros momentos, como las vacaciones escolares, se reducirá al mínimo necesario para mantener el funcionamiento del sistema.

El escalado automático es la capacidad de aumentar o disminuir la cantidad deseada de tareas en su servicio Amazon ECS automáticamente. Amazon ECS aprovecha el servicio Auto Scaling de aplicaciones para proporcionar esta funcionalidad.

Conclusión

La Parte 1 de esta serie de blogs de dos partes proporciona una guía arquitectónica sobre el alojamiento de Moodle de forma nativa en la nube. En la parte 2, entraría en detalles sobre cómo dockerizar Moodle para su implementación en ECS y también proporcionaría plantillas de CloudFormation para la implementación.

Si tienes preguntas, déjamelo saber. Feliz de proporcionar más detalles en la parte 2 de este blog.

Fuente: https://medium.com/prismcloud-tech/moodle-on-aws-a-cloud-native-approach-part-1-3a0e68582024

Comparte en: