MariaDB Cluster är ett Multi Master-replikeringssystem byggt från MariaDB Server, MySQL wsrep patch och Galera wsrep-leverantör.
Galera är baserat på en synkron (eller 'virtuelt synkron') replikeringsmetod, som säkerställer att data appliceras på andra noder innan den committeras. Att ha samma data på alla noder innebär att nodfel lätt kan tolereras och ingen data går förlorad. Det är också enklare att överta till en annan nod, eftersom alla noder är uppdaterade med samma data. Det är rättvist att säga att MariaDB Cluster är en hög tillgänglighetslösning som kan uppnå hög drifttid för organisationer med strikta databasservicenivåavtal.
Förutom att hantera hög tillgänglighet kan den också användas för att skala databastjänsten och utöka tjänsten till flera regioner.
MariaDB Cluster Deployment
MariaDB Cluster i ClusterControl är verkligen okomplicerat och tillgängligt i den gratis att använda Community Edition. Du kan gå igenom "Deploy", välj MySQL Galera som visas nedan:
Fyll i SSH-användar- och autentiseringsinformation, klusternamn som du vill använda och sedan Fortsätt.
Välj MariaDB som leverantör av databasen du vill installera. Server Data Directory, Server Port kan använda standardkonfigurationen, såvida du inte definierar specifik konfiguration. Fyll i administratörs-/rotdatabaslösenordet och slutligen Lägg till nod för att lägga till databasnodernas mål-IP-adresser.
Galera noder kräver minst 3 noder eller så kan du använda 2 databasnoder och galera arbiter konfigurerade på en separat värd.
När alla fält är ifyllda är det bara att distribuera klustret. Det kommer att utlösa ett nytt jobb för att skapa kluster som visas nedan:
Maxscale Deployment
Maxscale är en databaslastbalanserare, databasproxy och brandvägg som sitter mellan din applikation och MariaDB-noderna. Några av Maxscale-funktionerna är:
- Automatisk failover för hög tillgänglighet
- Trafiklastbalansering (läs- och skrivuppdelning)
- Trafikkontroller för frågor och anslutningar.
Det finns två sätt att gå igenom Load Balancer Deployment, du kan "Lägg till Load Balancer" i klustermenyn som visas nedan:
Eller så kan du gå till Manage -> Load Balancer. Den kommer att gå till samma sida, vilket är sidan för lastbalansering. Välj "Maxscale-fliken" för implementering av Maxscale load balancer:
Välj serveradress, definiera maxscale användarnamn och lösenord, du kan lämna standardkonfiguration för trådar och läs/skrivport. Inkludera även MariaDB-nod(erna) som ska läggas till i lastbalanseraren. Du kan "Deploy MaxScale" för att distribuera MaxScale-databasproxy och lastbalansering.
Den bästa praxis för att göra belastningsbalanseraren mycket tillgänglig är att ställa in minst 2 MaxScale-instanser på olika värdar.
Bevarad distribution
Keepalived är en demontjänst i linux som används för hälsokontroller, och används även för failover om en av servrarna är nere. Mekanismen använder VIP (Virtual IP Address) för att uppnå hög tillgänglighet, bestående av en server som fungerar som Master och den andra fungerar som Backup.
Distribution av Keepalived-tjänsten kan göras på Manage -> Load Balancer.
Välj din lastbalanseringstyp, som är MaxScale. För närvarande stöder ClusterControl HAProxy, ProxySQL och MaxScale som lastbalanserare som kan integreras med Keepalved. Definiera din virtuella IP (VIP) och nätverksgränssnitt för virtuell IP-adress.
Efter det klickar du bara på Distribuera Keepalived. Det kommer att utlösa ett nytt jobb för att distribuera Keepalived på båda MaxScale-värdarna.
Den slutliga arkitekturen för MariaDB Cluster for High Availability består av 3 databasnoder, 2 belastningsutjämnarnod och en bevarad tjänst ovanpå varje belastningsutjämnare som visas i Topologin nedan:
Slutsats
Vi har visat hur vi snabbt kan distribuera ett High Availability MariaDB Cluster med MaxScale och Keepalved via ClusterControl. Vi gick igenom inställningarna för databasnoder och proxynoder. För att läsa mer om Galera Cluster, kolla in vår online handledning. Observera att ClusterControl även stöder andra lastbalanserare som ProxySQL och HAProxy. Prova dessa och låt oss veta om du har några frågor.