Mysql
 sql >> Database >  >> RDS >> Mysql

Come distribuire il database MySQL Chamilo per un'elevata disponibilità

Chamilo è, proprio come Open edX o Moodle, una piattaforma che consente alle istituzioni educative di trasferire le proprie attività educative su Internet. Dato che la maggior parte dell'attività educativa si è spostata online nell'ultimo anno, non sorprende vedere sempre più persone che lottano per ampliare le proprie piattaforme educative e garantire una migliore disponibilità.

Chamilo è una piattaforma costruita sullo stack *AMP, che consiste in Apache, MySQL e PHP. Come al solito, il database è l'elemento più difficile da migrare in un ambiente ad alta disponibilità. In questo breve blog vorremmo discutere di come migliorare l'elevata disponibilità del database Chamilo.

Come puoi immaginare, il singolo database MySQL è un singolo punto di errore e, come tale, dovrebbe essere evitato nelle implementazioni di produzione. Fortunatamente, ci sono un paio di modi in cui puoi migliorare la disponibilità del database MySQL.

Uno dei modi in cui puoi affrontare il problema sarebbe utilizzare un cluster Galera. La distribuzione minima dovrebbe essere composta da tre nodi:tali cluster possono gestire automaticamente l'errore di un singolo nodo. I restanti due nodi continueranno a funzionare e risponderanno alle query provenienti dall'applicazione.

Questa configurazione richiederebbe una sorta di bilanciamento del carico davanti al cluster Galera. Il suo compito sarebbe gestire il traffico e reindirizzarlo a una destinazione adeguata.

Vediamo come ClusterControl può aiutarti a distribuire un Cluster Galera con un set di bilanciatori di carico che puoi utilizzare per la tua piattaforma Chamilo.

Distribuzione del cluster MariaDB

Questa volta proveremo a utilizzare MariaDB Cluster come backend. Chamilo supporta MySQL 5.6 e versioni successive o MariaDB 5.5 e versioni successive. Come primo passaggio dobbiamo selezionare "Distribuisci" dalla procedura guidata:

Una volta fatto, dobbiamo definire la connettività SSH, senza password, chiave L'accesso SSH basato su SSH è un requisito per ClusterControl, altrimenti non sarà in grado di gestire l'infrastruttura del database:si basa sulla connettività SSH per eseguire comandi per avviare o arrestare servizi, installare software e così via.

Quindi dovremmo decidere il fornitore, la versione, la password, gli host e alcuni impostazioni aggiuntive:

Con tutti questi dettagli inseriti, siamo a posto per procedere con l'implementazione.

Distribuzione di ProxySQL

Come accennato in precedenza, il database stesso non è l'unico elemento che vogliamo distribuire. Potremmo utilizzare un bilanciatore di carico che utilizzeremo per spostare il traffico se uno dei nodi dovesse fallire. Lo useremo anche per fornire la suddivisione in lettura/scrittura, indirizzando tutte le scritture su un singolo nodo MariaDB Galera e suddividendo le letture tra i restanti nodi MariaDB Galera. Questo ci aiuterà a evitare conflitti tra le scritture eseguite su diversi nodi Galera.

Per ProxySQL ClusterControl richiede anche la compilazione di alcune informazioni:è necessario selezionare il host su cui installarlo, decidere la versione di ProxySQL, le credenziali per gli utenti amministrativi e di monitoraggio. Tali utenti verranno utilizzati per gestire ProxySQL e monitorare lo stato del cluster Galera. Dovresti anche importare gli utenti del database esistenti o crearne uno nuovo per la tua applicazione. Infine, sta a te decidere quali nodi del database vuoi usare con ProxySQL e decidere se usare le transazioni implicite.

Distribuzione di Keepalived

ProxySQL funzionerà benissimo distribuendo il nostro traffico tra i nodi del cluster. D'altra parte, un singolo nodo ProxySQL agirà come un singolo punto di errore. Pertanto vogliamo distribuirne almeno due. Quindi, la domanda è come rilevare l'errore del nodo ProxySQL e come spostare il traffico su un ProxySQL integro. Ecco che arriva Keepalived. L'idea qui è di avere un IP virtuale che punterà all'istanza ProxySQL funzionante. Tale VIP può quindi essere utilizzato nell'applicazione come endpoint per la connettività del database MySQL, assicurando che l'applicazione raggiunga sempre ProxySQL integro che, a sua volta, assicurerà che il traffico raggiunga il nodo del cluster integro.

Dopo aver passato dettagli come istanze ProxySQL da monitorare, IP virtuale e l'interfaccia VIP dovrebbe legarsi a noi siamo pronti per la distribuzione. Dopo un paio di minuti tutto dovrebbe essere pronto e la topologia dovrebbe apparire come di seguito:

Questo è tutto quando si tratta dell'ambiente che stavamo costruendo. Puoi puntare il tuo Chamilo verso il VIP e la porta 6033, questo dovrebbe essere sufficiente per ottenere la connettività al tuo database di back-end. Se riscontri problemi relativi a letture obsolete (quando la scrittura colpisce un nodo e quindi Chamilo tenta di leggere da un altro nodo, puoi cercare di abilitare i controlli di causalità sul cluster Galera. C'è una variabile wsrep_sync_wait che può abilitare i test su più accessi patterns:legge, aggiorna, inserisce, cancella, sostituisce e SHOW comandi.Se siamo interessati solo alle query SELECT, imposteremo questa variabile a '1' utilizzando la gestione della configurazione di ClusterControl.

Questo eseguirà questa modifica su tutti i nodi MariaDB Cluster.

Questo è praticamente tutto. Se desideri condividere parte della tua esperienza con Chamilo, non esitare a lasciarci un commento.