Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Construindo um banco de dados altamente disponível para o Moodle usando a replicação MySQL

Moodle é um sistema de gerenciamento de aprendizagem de código aberto, amplamente utilizado por escolas e universidades em todo o mundo. O projeto começou em 2002 por Martin Dougiamas, com o objetivo de fornecer aos alunos, professores e educadores uma plataforma segura, robusta, aberta e gratuita para ambientes de aprendizagem.

O software em si é escrito em PHP e suporta vários RDBMS, como:Oracle, MySQL, PostgreSQL, MariaDB etc.

Neste blog, discutiremos como tornar o banco de dados Moodle resiliente usando a Replicação MySQL, necessária para oferecer suporte a uma implantação do Moodle de alta disponibilidade. Vamos implantar através do ClusterControl uma configuração de banco de dados que consiste em Replicação MySQL mestre/escravo, com balanceadores de carga de banco de dados redundantes.

Arquitetura

A replicação MySQL é uma maneira popular de obter redundância para o banco de dados. É importante garantir que todas as gravações sejam enviadas ao mestre, enquanto as leituras podem ser balanceadas entre os escravos. Para isso, usaremos o ProxySQL que é um balanceador de carga com reconhecimento de banco de dados que se encarrega de dividir o tráfego de gravação e enviá-lo ao mestre. Como a função mestre pode ser movida para outro servidor, por exemplo, em caso de falha no banco de dados, o ProxySQL pode acompanhar o novo mestre e garantir que o tráfego de gravação seja roteado adequadamente. Um VirtualIP é gerenciado pelo Keepalived para garantir um endpoint de banco de dados resiliente para todos os servidores de aplicativos Moodle.

Monitoramento e gerenciamento de failover

No diagrama acima, sugerimos duas réplicas que escravizam o banco de dados mestre. Em caso de falha do mestre, uma das réplicas será promovida a novo mestre. Ainda haverá uma réplica para lidar com coisas como leituras, backups, relatórios etc.

A conexão do aplicativo faz uso de um VIP (endereço IP virtual) na string de conexão do banco de dados, portanto, se algo acontecer no lado do banco de dados, isso minimizará o impacto do seu aplicativo e você não precisará reconfigurar nada. ClusterControl é o componente que fica de olho nos bancos de dados e automatiza o failover, por exemplo, promovendo uma das réplicas para novo mestre e recuperando o servidor de banco de dados com falha.

Configuração do banco de dados

Faremos uso do ClusterControl para implantar nossa configuração de banco de dados.

Primeiro, você precisa ter um servidor dedicado para a configuração do ClusterControl. A instalação é muito fácil, você só precisa baixar o install-cc do repositório manynines, dar permissão de execução no arquivo e executá-lo. Conforme mostrado abaixo:

$ wget http://www.severalnines.com/downloads/cmon/install-cc

$ chmod +x install-cc

$ sudo ./install-cc   # omit sudo if you run as root

Você pode executar o script acima em qualquer tipo de variante do Linux. Ele implantará tudo o que for exigido pelo ClusterControl.

Depois de ter o ClusterControl instalado e funcionando, escolha o botão Deploy no Painel do ClusterControl.


Ele exibirá uma nova página que mostra algumas opções. Escolheremos a primeira opção Deploy para nossa configuração de Replicação do MySQL.

Você precisa ter acesso ao servidor de banco de dados de destino por meio de SSH. Não se esqueça de habilitar o SSH sem senha e dar acesso sudo ao usuário. Defina o nome do cluster e clique em Continuar conforme mostrado abaixo:

Na próxima página, você deve escolher o fornecedor do banco de dados, versão do banco de dados que você deseja instalar, a senha do root, a porta do servidor se você deseja ter portas personalizadas ou específicas e o diretório de dados do MySQL.

Depois de preencher todas as informações, você pode ir para a próxima etapa, que é a página Definir a Topologia. Por favor, preencha o endereço ip do servidor de banco de dados, neste caso como configuramos a Replicação MyQL com 1 Mestre e 2 Réplicas.

Deploy agora acionará um trabalho que irá “Criar Cluster”, você apenas precisa esperar até que o trabalho seja concluído.

Configuração do ProxySQL

Após a implantação do banco de dados, você pode acessar o Load Balancer no menu do cluster. Por favor, vá para Gerenciar -> Load Balancer. Será mostrado como abaixo:

A implantação do ProxySQL exige que você preencha algumas informações, como o endereço IP onde você deseja instalar o ProxySQL, senha para usuários de administração e monitoramento e habilitar a instância para balanceamento de carga. Depois disso, basta clicar em Implantar. Para alta disponibilidade, você precisa de pelo menos 2 balanceadores de carga instalados na frente do banco de dados.

Configuração mantida

O serviço Keepalived é usado para tornar seu balanceador de carga altamente disponível. A configuração é bem direta, ainda na página do Load Balancer, existe uma aba para Keepalived conforme mostrado abaixo:

Escolha o tipo de implantação do balanceador de carga, neste caso usamos ProxySQL, selecione o serviço ProxySQL para keepalived. Preencha o endereço IP virtual e a interface de rede. Depois disso basta clicar em Deploy Keepalived, ele acionará automaticamente um novo trabalho para configurar o serviço.

Configuração do aplicativo

Antes de configurar o aplicativo moodle, você precisa preparar as credenciais do usuário e o próprio banco de dados. Para as credenciais, você pode ir para:Gerenciar -> Esquemas e Usuários.

Você precisa preencher algumas informações, por exemplo:nome de usuário, senha, nome do host e privilégio. Depois disso, basta clicar em Criar usuário. Isso permite que você crie um usuário para o aplicativo moodle:

Para criar o banco de dados, você pode escolher a guia Criar banco de dados no mesmo página como Usuários.

A próxima etapa é configurar as credenciais no lado do ProxySQL, você pode importar o credenciais que você criou no ProxySQL. Você pode ir para o nó ProxySQL, escolher a guia Usuários, há um botão Importar usuário no lado direito.

Pesquise o usuário moodle_application e selecione o usuário. Na próxima página, você precisa definir o Hostgroup padrão para o usuário e, em seguida, Importar usuários.

Repita as etapas para importar os usuários no outro nó ProxySQL ou você pode usar as instâncias de sincronização no menu ProxySQL.

Você precisa baixar o aplicativo moodle do site oficial do moodle (re. https ://download.moodle.org/), a versão mais recente quando este blog foi escrito é 3.9.1. Eles fornecem dois tipos de arquivos compactados, o zip compactado e o tar zip. Baixe o arquivo zip e coloque o arquivo em seus servidores de aplicativos. Confira os requisitos para o software moodle, ou seja:Servidor Web, biblioteca PHP.

Extraia os arquivos zip para o diretório temporário, crie o diretório /var/www/html/moodle, copie o diretório extraído para a pasta. Não se esqueça de dar permissão 0755 para o diretório. Depois disso, você pode acessar o navegador da web para a próxima configuração. Escolha o idioma conforme mostrado abaixo:

Selecione o driver de banco de dados para sua configuração MySQL conforme abaixo:

Você precisa preencher algumas informações de credenciais de banco de dados que você fez anteriormente, por exemplo:nome de usuário, senha, host, banco de dados, porta. O nome do host deve ser seu endereço IP virtual e a porta é a porta ProxySQL, que é 6032.

O host do banco de dados seria seu endereço IP virtual. Após preencher os campos, clique em Avançar e pronto.

Construir um banco de dados altamente disponível para o Moodle usando o ClusterControl é muito fácil e direto, você pode construir seu próprio banco de dados que suportará seu tempo de atividade de serviço de 99,99%.