Moodle is an open-source learning management system that requires high-throughput, low-latency access to storage. Many Moodle deployments require easy scalability to adapt to growing demand. This article explains how you can deploy Moodle by using Azure services on Azure Virtual Machine Scale Sets and store user-accessible learning data files in Azure NetApp Files. This article describes a zonal deployment for high availability and cross-zone replication and also gives examples of a single-zone deployment.
Architecture
For the best user experience, Moodle requires consistent low-latency access to scalable shared storage to meet the demands of office and home workers who use the service. Virtual Machine Scale Sets and Azure NetApp Files capacity pools and volumes can be sized up and down as the demand changes.
Download a Visio file of this architecture.
In addition to the Moodle deployment, the architecture uses Azure NetApp Files cross-zone replication to replicate the data volumes to a secondary zone. Cross-zone replication uses availability zones to provide high availability in a region and replication to a different zone in the same region. A capacity pool that uses the Standard service level can host the destination data volumes during normal operation.
By using this approach, you don't need to start some components of the setup, like compute and ancillary services, during normal operation. As a result, you won't incur any operational cost for these components. You can also scale down the virtual machine scale sets to the minimum.
Only in a disaster recovery scenario should you start and scale up the necessary components to continue the service using the replicated data volumes. At this time, you can upgrade the service level of the destination Azure NetApp Files volumes to the Premium or Ultra service level if necessary.
After you recover the primary zone, the replication direction is reversed. The primary zone is updated with the changes that are applied during the failover, and the service can be failed back. Users are redirected to the failover zone through Azure Traffic Manager, which operates at the DNS layer to quickly and efficiently direct incoming DNS requests based on the routing method of your choice.
Workflow
Students access the Moodle application data through an Azure Application Gateway where they can use Virtual Machine Scale Sets to build a scalable compute platform that runs the Moodle app to host users. Azure NetApp Files serves the content data to the Moodle app. Use a Redis cache for user session caching, locking, and key awareness. Store the learning content, student progress, and internal data in a MySQL database.
Insert learning content through a secure VPN gateway directly from the customer datacenter.
Students access the content through the application that's deployed on Virtual Machine Scale Sets through a secure application gateway.
You can scale the solution up or down depending on demand by adding or removing virtual machines (VMs) in the scale set and adjusting the Azure NetApp Files volume service level.
Components
Moodle is one of the most popular and widely adopted free, open-source learning management systems.
Azure Database for MySQL is a relational database service powered by the MySQL community edition. You can use Azure Database for MySQL - Flexible Server to host a MySQL database in Azure.
Azure Cache for Redis is a secure data cache and messaging broker that provides high-throughput, low-latency access to data for applications.
Use Azure Virtual Machine Scale Sets to create and manage a group of load-balanced VMs. You can automatically increase or decrease the number of VM instances in response to demand or a defined schedule.
Azure NetApp Files is an Azure service that you can use to migrate and run the most demanding enterprise-file workloads in the cloud, such as native SMBv3, NFSv3, and NFSv4.1 file shares, databases, data warehouses, and high-performance computing applications.
Alternatives
You can deploy the Moodle service by using any NFS-based shared file service that meets your requirements for low latency, high input or output operations per second, and throughput, especially for higher numbers of concurrent users. You can use an NFS service built on top of a set of Linux VMs, but this configuration can cause manageability, scalability, and performance challenges. Azure NetApp Files provides the lowest latency, best performance and scalability, and secure access to NFS shared storage.
Alternative deployments by using Azure NetApp Files
This diagram captures an example of a single-region deployment:
This single-region setup provides highly available access to the Moodle application and other components of the configuration.
Scenario details
This solution applies to Moodle deployments. Organizations that use Moodle span industries including education, business, IT, and finance.
This article outlines a solution that meets Moodle's needs. At the core of the solution is Azure NetApp Files, which is an Azure storage service. You can use this service to migrate and run the most demanding enterprise-scale file workloads in the cloud:
- Native Server Message Block (SMB) version 3, NFSv3, and NFSv4.1 file shares
- Database workloads
- Data warehouse workloads
- High-performance computing applications
Considerations
These considerations implement the pillars of the Azure Well-Architected Framework, which is a set of guiding tenets that can be used to improve the quality of a workload. For more information, see Microsoft Azure Well-Architected Framework.
Reliability
Reliability ensures your application can meet the commitments you make to your customers. For more information, see Design review checklist for Reliability.
Azure NetApp Files is built on a bare-metal fleet of redundant, solid-state hardware. The service operates without interruption, even during maintenance operations. For more information about resiliency, see Fault Tolerance, High Availability, and Resiliency in Azure NetApp Files.
Azure NetApp Files provides high availability for your stored data. For the Azure NetApp Files availability guarantee, see SLA for Azure NetApp Files.
Security
Security provides assurances against deliberate attacks and the abuse of your valuable data and systems. For more information, see Design review checklist for Security.
For all deployment options, you need to provide a valid Secure Shell (SSH) protocol 2 (SSH-2) RSA public–private key pair. The length should be at least 2,048 bits. Azure doesn't support other key formats such as ED25519 and ECDSA. Azure NetApp Files supports both customer-managed and platform-managed keys. These solutions provide unrestricted access to stored data, meet compliance requirements, and enhance data security. For information and best practices about Azure NetApp Files security, see Security FAQs for Azure NetApp Files.
Cost Optimization
Cost Optimization is about looking at ways to reduce unnecessary expenses and improve operational efficiencies. For more information, see Design review checklist for Cost Optimization.
For a medium-to-large-sized Moodle deployment of approximately 5,000 users with a 10% concurrency ratio, the recommended throughput is approximately 500 MB/s. This deployment can be built on a Linux-based Standard_D32s_v4 VM infrastructure that uses 8 TB of a P60-managed disk.
Azure NetApp Files provides a more cost-effective solution that uses 4 TiB of Ultra-service level capacity. For larger-scale applications that require more Azure NetApp Files capacity, both the Premium and Standard service levels provide sufficient performance. Use the Premium or Standard service level to improve cost effectiveness.
Use the Azure pricing calculator to estimate costs for Azure resources for your specific requirements. For more information, see Azure NetApp Files cost model.
For a calculator that computes the Azure NetApp Files performance and total cost of ownership (TCO), see Azure NetApp Files performance calculator. Use this calculator to find the optimal balance between capacity, performance, and cost.
Operational Excellence
Operational Excellence covers the operations processes that deploy an application and keep it running in production. For more information, see Design review checklist for Operational Excellence.
Performance Efficiency
Performance Efficiency is the ability of your workload to scale to meet the demands placed on it by users in an efficient manner. For more information, see Design review checklist for Performance Efficiency.
You can scale this solution up or down as needed:
Virtual Machine Scale Sets provides automatic scaling of resources. For more information, see Overview of autoscale with Azure Virtual Machine Scale Sets.
You can easily and nonintrusively scale the Azure NetApp Files capacity pools and volumes up and down to meet demand. For more information, see Resize a capacity pool or a volume.
You can adjust the Azure NetApp Files volume service level, which can be either Standard, Premium, or Ultra. The level that you choose affects the throughput limit of volumes with automatic quality of service. For more information, see Performance considerations for Azure NetApp Files.
Deploy this scenario
For a deployment guide for Moodle on Azure NetApp Files, see Azure NetApp Files for NFS storage with Moodle.
Contributors
This article is maintained by Microsoft. It was originally written by the following contributors.
Principal author:
- Arnt de Gier | Technical Marketing Engineer