Het uitvoeren van een MySQL Galera-cluster (de Percona-, MariaDB- of Codership-build) wordt helaas niet ondersteund (en maakt ook geen deel uit van) de databases die worden ondersteund door Amazon RDS. De meeste databases die door RDS worden ondersteund, gebruiken asynchrone replicatie, terwijl Galera Cluster een synchrone multi-master replicatie-oplossing is. Galera vereist ook InnoDB als opslagengine om goed te functioneren, en hoewel u andere opslagengines zoals MyISAM kunt gebruiken, wordt het niet aangeraden deze opslagengine te gebruiken vanwege het gebrek aan transactieverwerking.
Vanwege het gebrek aan native ondersteuning in RDS, zal deze blog zich richten op het aanbod dat beschikbaar is bij het kiezen en hosten van uw op Galera gebaseerde cluster met behulp van een AWS-omgeving.
Er zijn zeker veel redenen waarom u wel of niet voor het AWS-cloudplatform zou kiezen, maar voor dit specifieke onderwerp gaan we de voordelen en voordelen bespreken van wat u kunt benutten in plaats van waarom u zou het AWS-platform kiezen.
De virtuele servers (elastische rekeninstanties)
Zoals eerder vermeld, maakt MySQL Galera geen deel uit van RDS en is InnoDB een transactionele opslagengine waarvoor u de juiste middelen nodig heeft voor uw toepassingsvereisten. Het moet de capaciteit hebben om aan de vraag van uw klantverzoekverkeer te voldoen. Op het moment van dit artikel is uw enige keuze voor het uitvoeren van Galera Cluster het gebruik van EC2, het cloudaanbod voor computerinstanties van Amazon.
Omdat je het voordeel hebt dat je je systeem op een aantal nodes op EC2-instanties kunt draaien, verschilt het draaien van een Galera-cluster op EC2-versen op locatie niet veel. U kunt op afstand toegang krijgen tot de server via SSH, uw gewenste softwarepakketten installeren en het soort Galera Cluster-build kiezen dat u wilt gebruiken.
Bovendien is dit aanbod met EC2 elastischer en flexibeler, waardoor u een eenvoudigere, gedetailleerdere configuratie kunt leveren en aanbieden. U kunt gebruikmaken van de webservices om een aantal nodes te automatiseren of te bouwen als u uw omgeving moet uitschalen, of bijvoorbeeld het bouwen van uw staging- of ontwikkelomgeving wilt automatiseren. Het geeft u ook een voorsprong om snel uw gewenste omgeving te bouwen, het gewenste besturingssysteem te kiezen en in te stellen, en de juiste computerbronnen op te halen die aan uw vereisten voldoen (zoals CPU, geheugen en schijfopslag). EC2 elimineert de tijd om te wachten op hardware , aangezien u dit on-the-fly kunt doen. U kunt ook hun AWS CLI-tool gebruiken om uw Galera-clusterconfiguratie te automatiseren.
Prijzen voor Amazon EC2-instanties
EC2 biedt een aantal selecties die zeer flexibel zijn voor consumenten die hun Galera Cluster-omgeving willen hosten op AWS-rekenknooppunten. De AWS Free Tier omvat 750 uur aan Linux- en Windows t2.micro-instanties, elke maand, gedurende een jaar. U kunt binnen de Free Tier blijven door alleen EC2 Micro-instanties te gebruiken, maar dit is misschien niet het beste voor productiegebruik.
Er zijn meerdere typen EC2-instances die u kunt inzetten bij het inrichten van uw Galera-nodes. In het ideale geval zijn deze r4/r5/x1-familie (geoptimaliseerd voor geheugen) en c4/c5-familie (geoptimaliseerd voor computergebruik) een ideale keuze, en deze prijzen verschillen afhankelijk van hoe groot de behoeften van uw serverbronnen zijn en het type besturingssysteem.
Dit zijn de soorten betaalde instanties die u kunt kiezen...
Op aanvraag
Betalen per rekencapaciteit (per uur of per seconde), hangt af van het type instanties dat u uitvoert. De prijzen kunnen bijvoorbeeld verschillen bij het inrichten van een Ubuntu-instantie versus RHEL-instantie, afgezien van het type instantie. Het heeft geen langetermijnverplichtingen of vooruitbetalingen die nodig zijn. Het heeft ook de flexibiliteit om uw rekencapaciteit te vergroten of te verkleinen. Deze instanties worden aanbevolen voor goedkope en flexibele omgevingsbehoeften, zoals applicaties met korte, piekerige of onvoorspelbare workloads die niet kunnen worden onderbroken, of applicaties die voor de eerste keer worden ontwikkeld of getest op Amazon EC2. Bekijk het hier voor meer info.
Dedicated hosts
Als u op zoek bent naar nalevings- en regelgevende vereisten, zoals de noodzaak om een dedicated server aan te schaffen die op speciale hardware draait voor gebruik, dan past dit soort aanbod bij uw behoeften. Dedicated Hosts kunnen u helpen om aan de nalevingsvereisten te voldoen en de kosten te verlagen door u toe te staan uw bestaande servergebonden softwarelicentie te gebruiken, waaronder Windows Server, SQL Server, SUSE Linux Enterprise Server, Red Hat Enterprise Linux of andere softwarelicenties die aan VM's zijn gekoppeld , sockets of fysieke kernen, onderhevig aan uw licentievoorwaarden. Het kan op aanvraag (per uur) of als reservering worden gekocht voor tot 70% korting op de prijs op aanvraag. Bekijk het hier voor meer info.
Spot-instanties
Met deze instanties kunt u extra Amazon EC2-computercapaciteit aanvragen voor tot wel 90% korting op de on-demandprijs. Dit wordt aanbevolen voor toepassingen met flexibele begin- en eindtijden, toepassingen die alleen haalbaar zijn tegen zeer lage rekenprijzen, of gebruikers met dringende computerbehoeften voor grote hoeveelheden extra capaciteit. Bekijk het hier voor meer info.
Gereserveerde instanties
Dit type betalingsaanbieding biedt u de mogelijkheid om tot 75% korting te krijgen en, afhankelijk van de instantie die u wilt reserveren, kunt u een capaciteitsreservering verkrijgen die u extra vertrouwen geeft in uw mogelijkheden om instanties te starten wanneer u ze nodig hebt. Dit wordt aanbevolen als uw toepassingen een stabiel of voorspelbaar gebruik hebben, toepassingen waarvoor mogelijk gereserveerde capaciteit nodig is, of klanten die zich ertoe kunnen verbinden EC2 over een periode van 1 of 3 jaar te gebruiken om hun totale computerkosten te verlagen. Bekijk het hier voor meer info.
Prijsnota
Nog een laatste ding met EC2, ze bieden ook facturering per seconde, waardoor ook de kosten van ongebruikte minuten en seconden in een uur van de rekening worden gehaald. Dit is voordelig als u voor een minimale hoeveelheid tijd uitschaalt, alleen om verkeersverzoeken van een Galera-knooppunt af te handelen of als u wilt proberen en testen op een specifiek knooppunt voor slechts een beperkte tijd.
Databaseversleuteling op AWS
Als je je zorgen maakt over de vertrouwelijkheid van je gegevens, of je houdt aan de wetten die vereist zijn voor je beveiligingsnaleving en regelgeving, biedt AWS data-at-rest-codering. Als je MariaDB Cluster versie 10.2+ gebruikt, hebben ze ingebouwde plug-in-ondersteuning om te communiceren met de Amazon Web Services (AWS) Key Management Service (KMS) API. Hierdoor kunt u profiteren van de AWS-KMS-sleutelbeheerservice om de scheiding van verantwoordelijkheden en het op afstand loggen en controleren van sleuteltoegangsverzoeken te vergemakkelijken. In plaats van de coderingssleutel op te slaan in een lokaal bestand, bewaart deze plug-in de hoofdsleutel in AWS KMS.
Wanneer u MariaDB voor het eerst start, maakt de AWS KMS-plug-in verbinding met de AWS Key Management Service en vraagt deze om een nieuwe sleutel te genereren. MariaDB zal die sleutel in gecodeerde vorm op schijf opslaan. De op schijf opgeslagen sleutel kan niet worden gebruikt om de gegevens te ontsleutelen; in plaats daarvan maakt MariaDB bij elke opstart verbinding met AWS KMS en laat de service de lokaal opgeslagen sleutel(s) decoderen. De gedecodeerde sleutel wordt in het geheugen opgeslagen zolang het MariaDB-serverproces loopt, en die in het geheugen gedecodeerde sleutel wordt gebruikt om de lokale gegevens te coderen.
Als alternatief kunt u, wanneer u uw EC2-instanties implementeert, uw gegevensopslagvolume versleutelen met EBS (Elastic Block Storage) of de instantie zelf versleutelen. Versleuteling voor volumes van het EBS-type wordt allemaal ondersteund, hoewel dit een impact kan hebben, maar de latentie is zeer minimaal of zelfs niet zichtbaar voor de eindgebruikers. Voor versleuteling van het EC2-instantietype worden de meeste grote instanties ondersteund. Dus als u reken- of geheugengeoptimaliseerde knooppunten gebruikt, kunt u gebruikmaken van de versleuteling ervan.
Hieronder vindt u de lijst met ondersteunde typen instanties...
- Algemeen gebruik:A1, M3, M4, M5, M5a, M5ad, M5d, T2, T3 en T3a
- Compute geoptimaliseerd:C3, C4, C5, C5d en C5n
- Geoptimaliseerd geheugen:cr1.8xlarge, R3, R4, R5, R5a, R5ad, R5d, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, X1, X1e en z1d
- Opslag geoptimaliseerd:D2, h1.2xlarge, h1.4xlarge, I2 en I3
- Versneld computergebruik:F1, G2, G3, P2 en P3
U kunt uw AWS-account zo instellen dat versleuteling altijd wordt ingeschakeld bij de implementatie van uw EC2-instanties. Dit betekent dat AWS nieuwe EBS-volumes bij de lancering versleutelt en nieuwe kopieën van niet-versleutelde snapshots versleutelt.
Multi-AZ/Multi-Region/Multi-Cloud implementaties
Helaas is er op het moment van schrijven geen dergelijke directe ondersteuning in de AWS-console (noch een van hun AWS API) die Multi-AZ/-Region/-Cloud-implementaties voor Galera-knooppuntclusters ondersteunt.
Hoge beschikbaarheid, schaalbaarheid en redundantie
Om een multi-AZ-implementatie te realiseren, is het raadzaam om uw galera-knooppunten in verschillende beschikbaarheidszones in te richten. Dit voorkomt dat het cluster uitvalt of een clusterstoring door gebrek aan quorum.
Je kunt ook een AWS Auto Scaling instellen en een groep voor automatisch schalen maken om statuscontroles te bewaken en uit te voeren, zodat je cluster altijd redundant, schaalbaar en zeer beschikbaar is. Automatisch schalen zou uw probleem moeten oplossen in het geval dat uw node om een onbekende reden uitvalt.
Voor multi-regio of multi-cloud implementatie heeft Galera zijn eigen parameter genaamd gmcast.segment waarvoor u deze kunt instellen bij het starten van de server. Deze parameter is ontworpen om de communicatie tussen de Galera-knooppunten te optimaliseren en de hoeveelheid verkeer tussen netwerksegmenten te minimaliseren, inclusief het doorgeven van schrijfsets en IST- en SST-donorselectie.
Met dit type installatie kunt u meerdere nodes in verschillende regio's inzetten voor uw Galera-cluster. Daarnaast kunt u uw Galera-nodes ook inzetten bij een andere leverancier, bijvoorbeeld als deze wordt gehost in Google Cloud en u wilt redundantie op Microsoft Azure.
Ik raad je aan om onze blog te lezen Meerdere datacenterconfiguraties Galera-cluster gebruiken voor MySQL of MariaDB en netwerkmigratie zonder downtime met MySQL Galera-cluster Relay-knooppunt gebruiken om meer informatie te verzamelen over het implementeren van deze typen van implementaties.
Databaseprestaties op AWS
Afhankelijk van de vraag van uw toepassing, als uw query's geheugen verbruiken van de geheugen geoptimaliseerde instanties zijn uw ideale keuze. Als uw toepassing hogere transacties heeft die hoge prestaties vereisen voor webservers of batchverwerking, kiest u voor compute-geoptimaliseerde instanties. Als u meer wilt weten over het optimaliseren van uw Galera-cluster, kunt u deze blog bekijken Hoe u de prestaties van Galera-cluster voor MySQL of MariaDB kunt verbeteren.
Databaseback-ups op AWS
Het maken van back-ups kan moeilijk zijn omdat er geen directe ondersteuning is binnen AWS die specifiek is voor MySQL Galera-technologie. AWS biedt u echter een nood- en hersteloplossing met behulp van EBS Snapshots. U kunt snapshots maken van de EBS-volumes die aan uw instance zijn gekoppeld en vervolgens een back-up maken volgens een schema met CloudWatch of door Amazon Data Lifecycle Manager (Amazon DLM) te gebruiken om de snapshots te automatiseren.
Houd er rekening mee dat de gemaakte snapshots incrementele back-ups zijn, wat betekent dat alleen de blokken op het apparaat die zijn gewijzigd na uw meest recente snapshot, worden opgeslagen. U kunt deze snapshots opslaan op AWS S3 om opslagkosten te besparen. U kunt ook externe tools gebruiken, zoals Percona Xtrabackup en Mydumper (voor logische back-ups) en deze opslaan in AWS EFS -> AWS S3 -> AWS Glacier.
U kunt ook Lifecycle Management instellen in AWS als u uw back-upgegevens op een meer kostenefficiënte manier wilt opslaan. Als je grote bestanden hebt en AWS EFS gaat gebruiken, kun je hun AWS Backup-oplossing gebruiken, omdat dit ook een eenvoudige maar kosteneffectieve oplossing is.
Aan de andere kant kunt u ook externe services gebruiken (evenals ClusterControl) die u zowel monitoring- als back-upoplossingen biedt. Kijk hier eens naar als je meer wilt weten.
Databasecontrole op AWS
AWS biedt gezondheidscontroles en enkele statuscontroles om u inzicht te geven in uw Galera-nodes. Dit gebeurt via CloudWatch en CloudTrail.
Met CloudTrail kun je de logboeken inschakelen en inspecteren en audits uitvoeren op basis van de acties en sporen die zijn gemaakt.
Met CloudWatch kun je statistieken verzamelen en volgen, logbestanden verzamelen en controleren en aangepaste alarmen instellen. U kunt het instellen volgens uw aangepaste behoeften en systeembreed inzicht krijgen in het gebruik van resources, applicatieprestaties en operationele gezondheid. CloudWatch wordt geleverd met een gratis laag zolang u nog binnen de limieten valt (zie de onderstaande schermafbeelding.)
CloudWatch wordt ook geleverd met een prijs die afhankelijk is van de hoeveelheid statistieken die wordt gedistribueerd. Bekijk de huidige prijzen door hier te kijken.
Let op:er is een nadeel aan het gebruik van CloudWatch. Het is niet ontworpen om tegemoet te komen aan de gezondheid van de database, met name voor het bewaken van MySQL Galera-clusterknooppunten. Als alternatief kunt u externe tools gebruiken die grafieken of grafieken met een hoge resolutie bieden die nuttig zijn bij rapportage en die gemakkelijker te analyseren zijn bij het diagnosticeren van een problematisch knooppunt.
Hiervoor kunt u PMM van Percona, DataDog, Idera, VividCortex of onze eigen ClusterControl gebruiken (omdat monitoring GRATIS is bij ClusterControl Community.) Ik zou u aanraden een monitoringtool te gebruiken die bij uw behoeften op basis van uw individuele toepassingsvereisten. Het is erg belangrijk dat uw monitoringtool u agressief op de hoogte kan stellen of u integratie kan bieden voor instant messaging-systemen zoals Slack, PagerDuty of u zelfs sms kan sturen wanneer de ernstige gezondheidstoestand escaleert.
Databasebeveiliging op AWS
Het beveiligen van uw EC2-instanties is een van de meest essentiële onderdelen van het implementeren van uw database in de openbare cloud. U kunt een privésubnet instellen en de vereiste beveiligingsgroepen instellen die alleen de voorkeur hebben om het poort- of bron-IP toe te staan, afhankelijk van uw configuratie. U kunt uw databaseknooppunten instellen met niet-externe toegang en gewoon een jumphost of een internetgateway instellen als knooppunten toegang tot internet nodig hebben om softwarepakketten te openen of bij te werken. Hoe we dit hebben opgezet, kun je in onze vorige blog Deploying Secure Multicloud MySQL Replication on AWS en GCP with VPN lezen.
Bovendien kunt u uw gegevens tijdens het transport beveiligen met behulp van een TLS/SSL-verbinding of uw gegevens versleutelen wanneer ze in rust zijn. Als u ClusterControl gebruikt, is het eenvoudig en gemakkelijk om een beveiligde gegevensoverdracht te implementeren. U kunt onze blog SSL-sleutelbeheer en versleuteling van MySQL-gegevens in transit bekijken als u het wilt uitproberen. Voor gegevens in rust kan het opslaan van uw gegevens via S3 worden gecodeerd met AWS Server-Side Encryption of AWS-KMS gebruiken die ik eerder heb besproken. Bekijk deze externe blog over het opzetten en benutten van een MariaDB-cluster met AWS-KMS, zodat u uw gegevens veilig kunt opslaan.
Galera-clusterproblemen oplossen op AWS
AWS CloudWatch kan vooral helpen bij het onderzoeken en controleren van de systeemstatistieken. U kunt het netwerk, de CPU, het geheugen, de schijf en het gebruik en de balans ervan controleren of berekenen. Dit voldoet echter mogelijk niet aan uw vereisten wanneer u zich in een specifiek geval verdiept.
CloudTrail kan solide sporen uitvoeren van acties die zijn beheerd op basis van uw specifieke AWS-account. Dit zal u helpen te bepalen of de gebeurtenissen niet afkomstig zijn van MySQL Galera, maar mogelijk een bug of problemen zijn binnen de AWS-omgeving (zoals Hyper-V heeft problemen binnen de hostmachine waar uw instantie, als gast, wordt gehost.)
Als u ClusterControl gebruikt, kunt u door naar Logboeken -> Systeemlogboeken te gaan, bladeren door de vastgelegde foutenlogboeken die zijn overgenomen van het MySQL Galera-knooppunt zelf. Afgezien hiervan biedt ClusterControl realtime monitoring die uw alarm- en meldingssysteem zou versterken in geval van nood of als uw MySQL Galera-knooppunt(en) kapot is.
Conclusie
AWS biedt geen pure ondersteuning voor een MySQL Galera Cluster-configuratie, in tegenstelling tot AWS RDS die MySQL-compatibiliteit heeft. Hierdoor zijn de meeste aanbevelingen of meningen die een Galera Cluster draaien voor productiegebruik binnen de AWS-omgeving gebaseerd op ervaren en goed geteste omgevingen die al heel lang draaien.
MariaDB Cluster wordt geleverd met een hoge productiviteit, omdat ze constant beknopte ondersteuning bieden voor de AWS-technologiestackoplossing. In de aanstaande release van MariaDB 10.5-versie zullen ze ondersteuning bieden voor S3 Storage Engine, wat het wachten waard kan zijn.
Externe tools kunnen u helpen bij het beheren en controleren van uw MySQL Galera Cluster die draait op de AWS Cloud, dus het is geen grote zorg als u dilemma's en FUD hebt over waarom u zou moeten draaien of overschakelen naar de AWS Cloud Platform.
AWS is in sommige gevallen misschien niet de one-size-fits-all oplossing, maar het biedt een breed scala aan oplossingen die u kunt aanpassen en aanpassen aan uw behoeften.
In het volgende deel van onze blog zullen we kijken naar een ander openbaar cloudplatform, met name Google Cloud, en zien hoe we hiervan kunnen profiteren als we ervoor kiezen om onze Galera-cluster op hun platform te gebruiken.