Een database load balancer, of proxy, is een middleware-service tussen applicatielaag en databaselaag. De toepassing maakt verbinding met de databaseproxy en de proxy stuurt de verbinding door naar de database. Er zijn enkele voordelen bij het gebruik van een databaseproxy, bijvoorbeeld:lees- en schrijfquery's splitsen, cachequery's, query's distribueren op basis van een routeringsalgoritme, query's herschrijven en uw alleen-lezen werklast schalen. Een databaseproxy abstraheert ook de databasetopologie (en eventuele wijzigingen) voor de applicatielaag, zodat applicaties slechts verbinding hoeven te maken met één enkel eindpunt.
Er zijn verschillende databaseproxy's, van commerciële tot open source-opties, bijvoorbeeld HAProxy, Nginx, ProxySQL, Maxscale, enz. In deze blog bespreken we hoe u databaseproxy's van Maxscale naar ProxySQL kunt migreren met behulp van ClusterControl.
Huidige architectuur met Maxscale
Overweeg een zeer beschikbare database-architectuur die bestaat uit 3 knooppunten in een Galera-cluster, en daarbovenop 2 Maxscale- en Keepalive-services voor hoge beschikbaarheid van de databaseproxy. Galera Cluster is "vrijwel" synchrone replicaties, het maakt gebruik van een certificering op basis van replicatie die ervoor zorgt dat uw gegevens beschikbaar zijn op alle knooppunten. De huidige architectuur wordt hieronder getoond:
Maxscale is een databaseproxy van MariaDB Corporation, die fungeert als middleware tussen applicaties en databanken.
Dit is de topologie-architectuur voor Galera Cluster- en Maxscale-load balancers in ClusterControl. U kunt dit allemaal rechtstreeks vanuit ClusterControl implementeren of bestaande databases en proxyknooppunten in ClusterControl importeren. U kunt uw databasetopologie zien op het tabblad Topologie.
ProxySQL en Keepalive implementeren
ProxySQL is een andere databaseproxy van ProxySQL, die enkele functies biedt, zoals het cachen van query's, het herschrijven van query's, het splitsen van query's voor schrijven en lezen op basis van het querypatroon. Om ProxySQL in ClusterControl te implementeren, gaat u naar Beheren -> Load Balancers in uw cluster. ClusterControl ondersteunt een aantal verschillende databaseproxy's; HAProxy, ProxySQL, MaxScale.
Kies ProxySQL, en het zal de onderstaande pagina tonen:
We moeten het serveradres kiezen waarop ProxySQL wordt geïnstalleerd. We kunnen ofwel op de bestaande nodes installeren of als je een dedicated node voor ProxySQL wilt hebben, typ je gewoon het IP-adres in de lijst. Vul het wachtwoord in voor gebruikers van beheer en bewaking, voeg de toepassingsgebruiker toe aan ProxySQL of u kunt later configureren. Schakel de databaseservers in om te worden opgenomen in de taakverdeling die is ingesteld in ProxySQL. Klik op de knop ProxySQL implementeren. We hebben minimaal 2 ProxySQL's nodig voor hoge beschikbaarheid.
Als we tijdens de installatie vergeten een databasegebruiker toe te voegen aan ProxySQL, kunnen we deze configureren in het ProxySQL-gebruikerstabblad, zoals hieronder weergegeven:
ProxySQL vereist dat databasegebruikers ook in ProxySQL worden geconfigureerd.
Nadat ProxySQL is geïmplementeerd, gaan we door met het configureren van Keepalive op elke ProxySQL-host. Keepalive-services fungeren als hoofd-/back-uprollen voor de ProxySQL-instanties. De Keepalive-service maakt gebruik van VIP (Virtual IP Address), dus de applicatie maakt verbinding met een virtueel IP-adres in de masterrol en stuurt de verbinding door naar de lokale ProxySQL. Als de services mislukken, wordt de VIP automatisch naar een ander knooppunt gestuurd.
Keepalived implementeren in ClusterControl gebeurt op dezelfde pagina als de databaseproxy, u hoeft alleen maar het tabblad Keepalive te kiezen. Kies het type load balancers, namelijk ProxySQL, en voeg vervolgens de huidige ProxySQL voor Keepalived1 en Keepalived2 toe. Vul het virtuele IP-adres en de netwerkinterface in. Klik ten slotte op de knop Keepalive implementeren.
Het uitvoeren van twee ProxySQL's met Keepalive-services geeft ons een proxy-laag met hoge beschikbaarheid. In ClusterControl wordt het weergegeven in de onderstaande topologieweergave:
Overschakelen
Het overschakelen van het verkeer is heel eenvoudig, u hoeft alleen de ip-adresverbinding in de applicatielaag te wijzigen om het virtuele IP-adres voor ProxySQL te gebruiken en vervolgens het verkeer via ProxySQL te controleren.