sql >> Database >  >> RDS >> Mysql

Databasefailover voor WordPress-websites

Elke winstgevende onderneming vereist een hoge beschikbaarheid. Websites en blogs zijn niet anders, want zelfs kleinere bedrijven en individuen eisen dat hun sites live blijven om hun reputatie te behouden.

WordPress is verreweg het populairste CMS ter wereld waarop miljoenen websites van klein tot groot kunnen draaien. Maar hoe zorg je ervoor dat je website live blijft. Meer specifiek, hoe kan ik ervoor zorgen dat de onbeschikbaarheid van mijn database geen gevolgen heeft voor mijn website?

In deze blogpost laten we zien hoe u een failover voor uw WordPress-website kunt realiseren met ClusterControl.

De setup die we voor deze blog zullen gebruiken, maakt gebruik van Percona Server 5.7. We zullen een andere host hebben die de Apache- en Wordpress-applicatie bevat. We zullen het gedeelte met hoge beschikbaarheid van de app niet aanraken, maar dit is ook iets dat u zeker wilt hebben. We zullen ClusterControl gebruiken om databases te beheren om de beschikbaarheid te garanderen en we zullen een derde host gebruiken om ClusterControl zelf te installeren en in te stellen.

Ervan uitgaande dat de ClusterControl actief is, moeten we onze bestaande database erin importeren.

Een databasecluster importeren met ClusterControl

Ga naar de optie Bestaande server/database importeren in de implementatiewizard.

We moeten de SSH-connectiviteit configureren, aangezien dit een vereiste is voor ClusterControl om de knooppunten kunnen beheren.

We moeten nu enkele details definiëren over de leverancier, versie, rootgebruiker toegang, het knooppunt zelf, en of we willen dat ClusterControl het autoherstel voor ons beheert of niet. Dat is alles, als de klus eenmaal is gelukt, krijgt u een cluster op de lijst te zien.

Om de zeer beschikbare omgeving in te stellen, moeten we een paar van acties. Onze omgeving zal bestaan ​​uit...

  • Master - Slavenpaar
  • Twee ProxySQL-instanties voor lezen/schrijven splitsen en topologiedetectie
  • Twee Keepalive-instanties voor virtueel IP-beheer

Het idee is simpel - we zullen de slave op onze master implementeren, zodat we een tweede instantie hebben om naar te failoveren als de master faalt. ClusterControl zal verantwoordelijk zijn voor het detecteren van fouten en het zal de slave promoten als de master niet beschikbaar is. ProxySQL houdt de replicatietopologie bij en stuurt het verkeer om naar het juiste knooppunt - schrijfacties worden naar de master gestuurd, ongeacht in welk knooppunt het zich bevindt, reads kunnen alleen naar de master worden verzonden of worden verdeeld over master en slaves . Ten slotte wordt Keepalive samen met ProxySQL geplaatst en biedt het VIP voor de applicatie om verbinding mee te maken. Die VIP wordt altijd toegewezen aan een van de ProxySQL-instanties en Keepalived zal deze naar de tweede verplaatsen, mocht het "hoofd" ProxySQL-knooppunt falen.

Dat gezegd hebbende, laten we dit configureren met ClusterControl. Het kan allemaal in slechts een paar klikken. We beginnen met het toevoegen van de slaaf.

Een databaseslave toevoegen met ClusterControl

We beginnen met het kiezen van de taak "Replicatieslave toevoegen". Vervolgens wordt ons gevraagd een formulier in te vullen:

We moeten de master kiezen (in ons geval niet echt hebben veel opties), moeten we het IP-adres of de hostnaam voor de nieuwe slave doorgeven. Als we eerder back-ups hadden gemaakt, zouden we een van hen kunnen gebruiken om de slaaf te voorzien. In ons geval is dit niet beschikbaar en zal ClusterControl de slave rechtstreeks vanuit de master inrichten. Dat is alles, de klus begint en ClusterControl voert de benodigde handelingen uit. U kunt de voortgang volgen op het tabblad Activiteit.

Ten slotte, als de taak met succes is voltooid, moet de slave zichtbaar zijn op de clusterlijst.

Nu gaan we verder met het configureren van de ProxySQL-instanties. In ons geval is de omgeving minimaal, dus om het eenvoudiger te houden, zullen we ProxySQL op een van de databaseknooppunten plaatsen. Dit is echter niet de beste optie in een echte productieomgeving. Idealiter zou ProxySQL zich op een apart knooppunt bevinden of samen met de andere applicatiehosts.

De plaats om de taak te starten is Beheren -> Loadbalancers.

Hier moet je kiezen waar de ProxySQL moet worden geïnstalleerd, beheerdersreferenties doorgeven en voeg een databasegebruiker toe. In ons geval zullen we onze bestaande gebruiker gebruiken omdat onze WordPress-applicatie deze al gebruikt om verbinding te maken met de database. We moeten dan kiezen welke knooppunten we in ProxySQL willen gebruiken (we willen hier zowel master als slave) en ClusterControl laten weten of we expliciete transacties gebruiken of niet. Dit is in ons geval niet echt relevant, omdat we ProxySQL opnieuw zullen configureren zodra het wordt geïmplementeerd. Als je die optie hebt ingeschakeld, is de lees-/schrijfsplitsing niet ingeschakeld. Anders zal ClusterControl ProxySQL configureren voor lezen/schrijven splitsen. In onze minimale opstelling moeten we serieus nadenken of we willen dat de lees/schrijf-splitsing plaatsvindt. Laten we dat analyseren.

De voordelen en nadelen van lezen/schrijven Spit in ProxySQL

Het belangrijkste voordeel van het gebruik van de lees/schrijf-splitsing is dat al het SELECT-verkeer wordt verdeeld tussen de master en de slave. Dit betekent dat de belasting op de nodes lager zal zijn en de responstijd ook lager zou moeten zijn. Dit klinkt goed, maar houd er rekening mee dat als een knooppunt uitvalt, het andere knooppunt al het verkeer moet kunnen verwerken. Het heeft weinig zin om geautomatiseerde failover in te voeren als het verlies van één knooppunt betekent dat het tweede knooppunt overbelast raakt en de facto ook niet beschikbaar is.

Het kan zinvol zijn om de belasting te verdelen als je meerdere slaves hebt - het verliezen van één op vijf nodes is minder ingrijpend dan het verliezen van één op twee. Wat u ook besluit, u kunt het gedrag eenvoudig wijzigen door naar het ProxySQL-knooppunt te gaan en op het tabblad Regels te klikken.

Zorg ervoor dat u naar regel 200 kijkt (degene die alle SELECT-instructies vangt ). Op de onderstaande schermafbeelding kunt u zien dat de doelhostgroep 20 is, wat betekent dat alle knooppunten in het cluster - lezen/schrijven gesplitst en uitschalen is ingeschakeld. We kunnen dit eenvoudig uitschakelen door deze regel te bewerken en de bestemmingshostgroep te wijzigen in 10 (degene die master bevat).

Als u de lees-/schrijfsplitsing wilt inschakelen, kunt u doe dit door deze queryregel opnieuw te bewerken en de bestemmingshostgroep terug in te stellen op 20.

Laten we nu de tweede ProxySQL implementeren.

Om te voorkomen dat alle configuratie-opties opnieuw worden doorgegeven, kunnen we de "Configuratie importeren ” optie en kies onze bestaande ProxySQL als de bron.

Wanneer deze taak is voltooid, moeten we nog de laatste stap uitvoeren om onze omgeving in te stellen. We moeten Keepalive inzetten bovenop de ProxySQL-instanties.

Keepalived implementeren bovenop ProxySQL-instanties

Hier hebben we ProxySQL gekozen als het load balancer-type, beide ProxySQL-instanties voor Keepalive om op te installeren en we typten onze VIP- en netwerkinterface.

Zoals je kunt zien, hebben we nu de hele installatie klaar. We hebben een VIP van 10.0.0.111 die is toegewezen aan een van de ProxySQL-instanties. ProxySQL-instanties leiden ons verkeer om naar de juiste backend MySQL-knooppunten en ClusterControl houdt de omgeving in de gaten en voert indien nodig een failover uit. De laatste actie die we moeten ondernemen is om Wordpress opnieuw te configureren om het virtuele IP-adres te gebruiken om verbinding te maken met de database.

Om dat te doen, moeten we wp-config.php bewerken en de DB_HOST-variabele wijzigen in ons virtuele IP-adres:

/** MySQL hostname */

define( 'DB_HOST', '10.0.0.111' );

Conclusie

Vanaf nu zal Wordpress verbinding maken met de database via VIP en ProxySQL. Als het masterknooppunt uitvalt, voert ClusterControl de failover uit.

Zoals je kunt zien, is er een nieuwe master gekozen en ProxySQL wijst ook naar nieuwe master in de hostgroep 10.

We hopen dat deze blogpost je enig idee geeft over hoe je een zeer beschikbare database-omgeving voor een Wordpress-website kunt ontwerpen en hoe ClusterControl kan worden gebruikt om al zijn elementen in te zetten.


  1. Opgeslagen procedure die gegevens naar csv-bestanden exporteert, wordt alleen naar één bestand geëxporteerd

  2. Wat is het verschil tussen enkele aanhalingstekens en dubbele aanhalingstekens in PostgreSQL?

  3. Tellen gebruiken om het aantal keren te vinden

  4. Getallen opmaken met komma's in PostgreSQL