A aprendizagem online hoje em dia está ganhando força rapidamente desde que a pandemia do COVID-19 aconteceu. A maioria das instituições de ensino está tendo que configurar plataformas para aprendizado online, e praticamente todos os alunos estão tendo que acessar a plataforma para aprender e interagir com os professores. O Moodle é um dos sistemas de gerenciamento de aprendizado de código aberto para aprendizado on-line,
Ter alta disponibilidade da plataforma Moodle é uma obrigação para as instituições, caso contrário, interromperá e interromperá o processo de aprendizagem online. Com muitos alunos acessando a plataforma ao mesmo tempo, a disponibilidade e a escalabilidade são importantes. Neste ponto, as instituições de ensino precisam ter conhecimento e arquitetar a plataforma de alta disponibilidade e escalabilidade do Moodle. Se você quiser saber mais sobre como migrar o Moodle autônomo para um banco de dados em cluster escalável, siga esta diretriz.
Moodle no modo “Ponto único de falha”
A plataforma independente do Moodle consiste em um servidor e tudo instalado no servidor (o banco de dados e o servidor de aplicativos em um só lugar). Ou você tem 2 servidores, que são para o servidor de aplicativos e o servidor de banco de dados, conforme descrito na imagem abaixo:
Ambas as arquiteturas não têm disponibilidade e escalabilidade de serviço. Do ponto de vista da disponibilidade, você pode imaginar, se o servidor travar, você não terá nenhum serviço em execução no servidor. Se o servidor de aplicativos travar ou o banco de dados travar, o serviço para de operar.
Por outro lado, a escalabilidade também é importante, mais usuários significa mais tráfego e mais conexões com o banco de dados. A escalabilidade pode ser alcançada adicionando mais recursos nos servidores ou adicionando mais servidores para que o tráfego possa ser distribuído entre os nós, caso contrário, o desempenho será prejudicado.
Conversão de banco de dados autônomo para clusterizado
Migrar seu nó autônomo para um banco de dados em cluster pode levar algum tempo e não é uma operação isenta de riscos. Abaixo estão os passos que precisamos tomar:
- Você precisa fazer um backup (use mysqldump ou xtrabackup).
- Instale o banco de dados em todos os nós de banco de dados de réplica.
- Restaure o backup nos nós de réplica.
- Conecte o nó de réplica ao mestre.
- Configure o ProxySQL e mantenha-o ativo na frente dos nós do banco de dados
- Configure os balanceadores de carga ProxySQL (por exemplo, crie grupos de hosts, servidores, usuários).
- Aponte a configuração do Moodle para o novo endereço IP virtual.
Como o ClusterControl pode ajudar
ClusterControl é um software de gerenciamento de banco de dados que ajuda você a implantar, monitorar e gerenciar seu banco de dados de código aberto. Tentaremos migrar da arquitetura independente do Moodle, conforme mostrado abaixo:
Para uma arquitetura de banco de dados em cluster baseada em replicação:
Você precisará de pelo menos dois servidores para o banco de dados e dois para o banco de dados proxy (usaremos o ProxySQL como balanceador de carga) e serviço keepalived para servir um endereço IP virtual.
Supondo que tenhamos um banco de dados MySQL autônomo em execução:
Adicionar mais nós de banco de dados no ClusterControl é muito simples, você pode ir para o Menu Cluster no lado direito de seu cluster e Add Replication Slave.
Ele mostrará um novo diálogo para Adicionar novo escravo, você só precisa preencher o endereço IP e, em seguida, basta clicar no botão Add New Slave, conforme mostrado abaixo:
Como você pode ver na captura de tela, é possível semear o escravo com dados de um backup existente. Isso evita o streaming de todos os dados do banco de dados mestre em execução. Assim que o banco de dados escravo for implantado, ele será preparado com dados mestre e o ClusterControl garantirá que o escravo seja sincronizado com o mestre.
Você pode repetir a etapa para adicionar outro nó de réplica.
A nova arquitetura será conforme mostrado abaixo:
A próxima etapa é adicionar um balanceador de carga na frente do banco de dados. Um balanceador de carga como o ProxySQL é útil, pois pode redirecionar solicitações de gravação para o mestre e as solicitações de leitura para os escravos. Dessa forma, você está distribuindo o tráfego do Moodle. Observe que também é possível fazer uma configuração mestre-mestre com base no Galera Cluster for MySQL ou MariaDB.
Usaremos dois balanceadores de carga para alta disponibilidade. Você pode ir para Manage -> Load Balancers no cluster.
Você precisa preencher algumas informações como endereço do servidor, senha administrativa e do monitor, adicione o usuário moodle no ProxySQL e clique em Deploy ProxySQL. Isso acionará um novo trabalho. Repita a implantação no outro nó do balanceador de carga.
A última coisa é configurar o keepalived para os balanceadores de carga. Vá para Gerenciar -> Load Balancers, há uma guia para Keepalived
Você só precisa escolher o tipo de balanceador de carga e adicioná-lo ao keepalived . Preencha o endereço IP virtual e a interface de rede. Clique no botão Implantar Keepalived.
A arquitetura final do nosso banco de dados Moodle altamente disponível em cluster será como mostrado abaixo:
Você só precisa alterar a configuração da conexão no config.php apontando o dbhost para o Endereço IP Virtual que havíamos configurado.
Depois de tudo migrado para Clustered Database, você pode querer colocar algum monitoramento em seu banco de dados Moodle, que você pode seguir esta diretriz.