Chamilo é, assim como Open edX ou Moodle, uma plataforma que permite que instituições educacionais transfiram suas atividades educacionais para a internet. Dado que a maior parte da atividade educacional mudou para online no último ano, não é de surpreender que vejamos cada vez mais pessoas lutando para expandir suas plataformas educacionais e garantir uma melhor disponibilidade.
Chamilo é uma plataforma construída na pilha *AMP, que consiste em Apache, MySQL e PHP. Como sempre, o banco de dados é o elemento mais difícil de migrar para um ambiente altamente disponível. Neste breve blog, gostaríamos de discutir como você pode melhorar a alta disponibilidade do banco de dados Chamilo.
Como você pode imaginar, o banco de dados MySQL único é um ponto único de falha e, como tal, deve ser evitado nas implantações de produção. Felizmente, existem algumas maneiras de melhorar a disponibilidade do banco de dados MySQL.
Uma das maneiras de abordar o problema seria usar um Galera Cluster. A implantação mínima deve consistir em três nós - esses clusters podem lidar automaticamente com a falha de um único nó. Os dois nós restantes continuarão a funcionar e responderão às consultas provenientes do aplicativo.
Esta configuração exigiria algum tipo de balanceador de carga na frente do cluster Galera. Seu trabalho seria lidar com o tráfego e redirecioná-lo para um destino adequado.
Vamos ver como o ClusterControl pode ajudá-lo a implantar um Galera Cluster com um conjunto de balanceadores de carga que você pode usar para sua plataforma Chamilo.
Implantando o cluster MariaDB
Desta vez, tentaremos usar o MariaDB Cluster como nosso back-end. Chamilo suporta MySQL 5.6 e mais recente ou MariaDB 5.5 e mais recente. Como primeiro passo, precisamos escolher “Implantar” no assistente:
Depois de fazer isso, temos que definir a conectividade SSH, sem senha, chave O acesso SSH baseado em SSH é um requisito para o ClusterControl, caso contrário ele não poderá gerenciar a infraestrutura do banco de dados:ele depende da conectividade SSH para executar comandos para iniciar ou parar serviços, instalar software e assim por diante.
Depois, devemos decidir sobre o fornecedor, versão, senha, hosts e alguns Configurações adicionais:
Com todos esses detalhes preenchidos, podemos prosseguir com a implantação.
Implantando ProxySQL
Como mencionamos anteriormente, o banco de dados em si não é o único elemento que queremos implantar. Poderíamos usar um balanceador de carga que usaremos para mover o tráfego se um dos nós falhar. Também o usaremos para fornecer divisão de leitura/gravação, direcionando todas as gravações para um único nó MariaDB Galera e dividindo as leituras entre os nós MariaDB Galera restantes. Isso nos ajudará a evitar conflitos entre gravações executadas em diferentes nós Galera.
Para ProxySQL ClusterControl também requer o preenchimento de algumas informações - você deve escolher o host para instalá-lo, decidir sobre a versão do ProxySQL, credenciais para os usuários administrativos e de monitoramento. Esses usuários serão usados para gerenciar o ProxySQL e monitorar o estado do seu cluster Galera. Você também deve importar usuários de banco de dados existentes ou criar um novo para seu aplicativo. Por fim, cabe a você decidir quais nós de banco de dados deseja usar com o ProxySQL e decidir se usa transações implícitas.
Implantando Keepalived
O ProxySQL funcionará muito bem distribuindo nosso tráfego pelos nós do cluster. Por outro lado, um único nó ProxySQL atuará como um único ponto de falha. Portanto, queremos implantar pelo menos dois deles. Então, a questão é como detectar a falha do nó ProxySQL e como mover o tráfego para um ProxySQL íntegro. Aí vem Keepalived. A ideia aqui é ter um IP virtual que apontará para a instância ProxySQL em funcionamento. Esse VIP pode ser usado no aplicativo como o ponto de extremidade para a conectividade do banco de dados MySQL, garantindo que o aplicativo sempre atingirá o ProxySQL íntegro que, por sua vez, garantirá que o tráfego atingirá o nó do cluster íntegro.
Depois de passar detalhes como instâncias ProxySQL que devem ser monitoradas, IP virtual e o A interface VIP deve se vincular a estamos prontos para implantar. Após alguns minutos, tudo deve estar pronto e a topologia deve ficar como abaixo:
É isso quando se trata do ambiente que estávamos construindo. Você pode apontar seu Chamilo para o VIP e a porta 6033, isso deve ser suficiente para obter a conectividade com seu banco de dados de back-end. Se você encontrar algum problema relacionado a leituras obsoletas (quando a gravação atinge um nó e o Chamilo tenta ler de outro nó, você pode verificar a ativação de verificações de causalidade no cluster Galera. Há uma variável wsrep_sync_wait que pode habilitar testes em vários acessos patterns:reads, updates, inserts, deletes, replaces e comandos SHOW Se estivermos interessados apenas nas consultas SELECT, definiremos essa variável como '1' usando o gerenciamento de configuração do ClusterControl.
Isso fará essa alteração em todos os nós do cluster MariaDB.
É mais ou menos isso. Se você gostaria de compartilhar um pouco de sua experiência com Chamilo, fique à vontade para nos deixar um comentário.