MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Vergleich von Galera Cluster Cloud-Angeboten:Teil Eins Amazon AWS

Das Ausführen eines MySQL Galera-Clusters (entweder der Percona-, MariaDB- oder Codership-Build) wird leider nicht von den von Amazon RDS unterstützten Datenbanken unterstützt (oder ist Teil davon). Die meisten von RDS unterstützten Datenbanken verwenden asynchrone Replikation, während Galera Cluster eine synchrone Multi-Master-Replikationslösung ist. Galera benötigt auch InnoDB als Speicher-Engine, um ordnungsgemäß zu funktionieren, und obwohl Sie andere Speicher-Engines wie MyISAM verwenden können, wird die Verwendung dieser Speicher-Engine aufgrund der fehlenden Transaktionsverarbeitung nicht empfohlen.

Aufgrund des Mangels an nativer Unterstützung in RDS konzentriert sich dieser Blog auf die Angebote, die verfügbar sind, wenn Sie Ihren Galera-basierten Cluster in einer AWS-Umgebung auswählen und hosten.

Es gibt sicherlich viele Gründe, warum Sie sich für die AWS-Cloud-Plattform entscheiden oder nicht entscheiden würden, aber für dieses spezielle Thema werden wir die Vorteile und Vorteile dessen besprechen, was Sie nutzen können, und nicht, warum Sie es tun würde die AWS-Plattform wählen.

Die virtuellen Server (Elastic Compute Instances)

Wie bereits erwähnt, ist MySQL Galera kein Teil von RDS und InnoDB ist eine Transaktionsspeicher-Engine, für die Sie die richtigen Ressourcen für Ihre Anwendungsanforderungen benötigen. Es muss in der Lage sein, die Nachfrage Ihres Client-Anfrageverkehrs zu bedienen. Zum Zeitpunkt dieses Artikels besteht Ihre einzige Wahl zum Ausführen von Galera Cluster in der Verwendung von EC2, dem Cloud-Angebot von Amazon für Recheninstanzen.

Da Sie den Vorteil haben, Ihr System auf einer Reihe von Knoten auf EC2-Instanzen auszuführen, unterscheidet sich der Betrieb eines Galera-Clusters auf EC2 nicht wesentlich von dem Betrieb vor Ort. Sie können über SSH remote auf den Server zugreifen, Ihre gewünschten Softwarepakete installieren und die Art von Galera Cluster-Build auswählen, die Sie verwenden möchten.

Darüber hinaus ist dieses Angebot mit EC2 elastischer und flexibler, sodass Sie eine einfachere, granulare Einrichtung bereitstellen und anbieten können. Sie können die Vorteile der Webdienste nutzen, um eine Reihe von Knoten zu automatisieren oder zu erstellen, wenn Sie Ihre Umgebung skalieren müssen, oder um beispielsweise den Aufbau Ihrer Staging- oder Entwicklungsumgebung zu automatisieren. Es gibt Ihnen auch einen Vorteil, um schnell Ihre gewünschte Umgebung aufzubauen, Ihr gewünschtes Betriebssystem auszuwählen und einzurichten und die richtigen Rechenressourcen zu erwerben, die Ihren Anforderungen entsprechen (z. B. CPU, Arbeitsspeicher und Festplattenspeicher). EC2 eliminiert die Wartezeit für Hardware , da Sie dies im laufenden Betrieb tun können. Sie können auch das AWS CLI-Tool nutzen, um die Einrichtung Ihres Galera-Clusters zu automatisieren.

Preise für Amazon EC2-Instances

EC2 bietet eine Reihe von sehr flexiblen Auswahlmöglichkeiten für Verbraucher, die ihre Galera-Cluster-Umgebung auf AWS-Rechenknoten hosten möchten. Das kostenlose AWS-Kontingent umfasst 750 Stunden Linux- und Windows-t2.micro-Instanzen jeden Monat für ein Jahr. Sie können innerhalb des kostenlosen Kontingents bleiben, indem Sie nur EC2 Micro-Instances verwenden, aber dies ist möglicherweise nicht das Beste für den Produktionseinsatz.

Es gibt mehrere Arten von EC2-Instances, die Sie bei der Bereitstellung Ihrer Galera-Knoten bereitstellen können. Idealerweise sind diese r4/r5/x1-Familie (speicheroptimiert) und die c4/c5-Familie (compute-optimiert) eine ideale Wahl, und diese Preise unterscheiden sich je nachdem, wie groß Ihre Serverressourcenanforderungen und der Typ des Betriebssystems sind.

Dies sind die Arten von kostenpflichtigen Instanzen, die Sie auswählen können...

Auf Anfrage 

Zahlung nach Rechenkapazität (pro Stunde oder pro Sekunde), hängt von der Art der ausgeführten Instanzen ab. Abgesehen vom Typ der Instanz können sich beispielsweise die Preise bei der Bereitstellung einer Ubuntu-Instanz von einer RHEL-Instanz unterscheiden. Es sind keine langfristigen Verpflichtungen oder Vorauszahlungen erforderlich. Es bietet auch die Flexibilität, Ihre Rechenkapazität zu erhöhen oder zu verringern. Diese Instances werden für kostengünstige und flexible Umgebungsanforderungen empfohlen, z. B. Anwendungen mit kurzfristigen, spitzen oder unvorhersehbaren Workloads, die nicht unterbrochen werden können, oder Anwendungen, die zum ersten Mal auf Amazon EC2 entwickelt oder getestet werden. Weitere Informationen finden Sie hier.

Dedizierte Hosts

Wenn Sie nach Compliance- und regulatorischen Anforderungen suchen, wie z. B. der Notwendigkeit, einen dedizierten Server zu erwerben, der auf einer dedizierten Hardware zur Verwendung läuft, ist diese Art von Angebot genau das Richtige für Sie. Dedicated Hosts können Ihnen helfen, Compliance-Anforderungen zu erfüllen und Kosten zu senken, indem Sie Ihre vorhandene servergebundene Softwarelizenz verwenden können, einschließlich Windows Server, SQL Server, SUSE Linux Enterprise Server, Red Hat Enterprise Linux oder andere Softwarelizenzen, die an VMs gebunden sind , Sockets oder physische Kerne, vorbehaltlich Ihrer Lizenzbedingungen. Es kann On-Demand (stündlich) oder als Reservierung mit bis zu 70 % Rabatt auf den On-Demand-Preis erworben werden. Weitere Informationen finden Sie hier.

Spot-Instanzen

Mit diesen Instances können Sie freie Amazon EC2-Rechenkapazität für bis zu 90 % des On-Demand-Preises anfordern. Dies wird für Anwendungen empfohlen, die flexible Start- und Endzeiten haben, Anwendungen, die nur zu sehr niedrigen Rechenpreisen realisierbar sind, oder Benutzer mit dringendem Rechenbedarf für große Mengen an zusätzlicher Kapazität. Weitere Informationen finden Sie hier.

Reservierte Instanzen

Diese Art von Zahlungsangebot bietet Ihnen die Möglichkeit, bis zu 75 % Rabatt zu erhalten, und je nachdem, welche Instanz Sie reservieren möchten, können Sie eine Kapazitätsreservierung erwerben, die Ihnen zusätzliches Vertrauen in Ihre Fähigkeiten gibt um Instanzen zu starten, wenn Sie sie brauchen. Dies wird empfohlen, wenn Ihre Anwendungen eine stabile oder vorhersehbare Nutzung haben, Anwendungen, die möglicherweise reservierte Kapazität erfordern, oder Kunden, die sich verpflichten können, EC2 über einen Zeitraum von 1 oder 3 Jahren zu verwenden, um ihre gesamten Rechenkosten zu senken. Weitere Informationen finden Sie hier.

Preishinweis

Eine letzte Sache bei EC2, sie bieten auch eine sekundengenaue Abrechnung, die auch die Kosten für ungenutzte Minuten und Sekunden in einer Stunde von der Rechnung abzieht. Dies ist vorteilhaft, wenn Sie für einen minimalen Zeitraum skalieren, nur um Verkehrsanfragen von einem Galera-Knoten zu verarbeiten, oder wenn Sie versuchen und testen möchten, auf einem bestimmten Knoten nur für eine begrenzte Zeit zu verwenden.

Datenbankverschlüsselung auf AWS

Wenn Sie sich Sorgen um die Vertraulichkeit Ihrer Daten oder die Einhaltung der für Ihre Sicherheit erforderlichen Gesetze und Vorschriften machen, bietet AWS die Verschlüsselung ruhender Daten an. Wenn Sie MariaDB Cluster Version 10.2+ verwenden, verfügen diese über eine integrierte Plugin-Unterstützung für die Schnittstelle mit der Key Management Service (KMS)-API von Amazon Web Services (AWS). Auf diese Weise können Sie den AWS-KMS-Schlüsselverwaltungsservice nutzen, um die Trennung von Verantwortlichkeiten und die Remote-Protokollierung und -Prüfung von Schlüsselzugriffsanfragen zu erleichtern. Anstatt den Verschlüsselungsschlüssel in einer lokalen Datei zu speichern, speichert dieses Plugin den Hauptschlüssel in AWS KMS.

Wenn Sie MariaDB zum ersten Mal starten, stellt das AWS KMS-Plugin eine Verbindung zum AWS Key Management Service her und fordert ihn auf, einen neuen Schlüssel zu generieren. MariaDB speichert diesen Schlüssel in verschlüsselter Form auf der Festplatte. Der auf der Festplatte gespeicherte Schlüssel kann nicht zum Entschlüsseln der Daten verwendet werden; Vielmehr stellt MariaDB bei jedem Start eine Verbindung zu AWS KMS her und lässt den Dienst die lokal gespeicherten Schlüssel entschlüsseln. Der entschlüsselte Schlüssel wird im Speicher gespeichert, solange der MariaDB-Serverprozess läuft, und dieser entschlüsselte Schlüssel im Speicher wird verwendet, um die lokalen Daten zu verschlüsseln.

Alternativ können Sie bei der Bereitstellung Ihrer EC2-Instanzen Ihr Datenspeichervolumen mit EBS (Elastic Block Storage) verschlüsseln oder die Instanz selbst verschlüsseln. Verschlüsselung für Volumes vom Typ EBS werden alle unterstützt, obwohl dies Auswirkungen haben kann, aber die Latenz ist sehr gering oder für die Endbenutzer sogar nicht sichtbar. Für die EC2-Instance-Verschlüsselung werden die meisten großen Instances unterstützt. Wenn Sie also rechen- oder speicheroptimierte Knoten verwenden, können Sie deren Verschlüsselung nutzen.

Unten ist die Liste der unterstützten Instanztypen...

  • Allgemein:A1, M3, M4, M5, M5a, M5ad, M5d, T2, T3 und T3a
  • Rechenoptimiert:C3, C4, C5, C5d und C5n
  • Speicheroptimiert:cr1.8xlarge, R3, R4, R5, R5a, R5ad, R5d, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, X1, X1e und z1d
  • Speicheroptimiert:D2, h1.2xlarge, h1.4xlarge, I2 und I3
  • Beschleunigtes Rechnen:F1, G2, G3, P2 und P3

Sie können Ihr AWS-Konto so einrichten, dass die Verschlüsselung bei der Bereitstellung Ihrer EC2-Instances immer aktiviert ist. Das bedeutet, dass AWS neue EBS-Volumes beim Start verschlüsselt und neue Kopien von unverschlüsselten Snapshots verschlüsselt.

Multi-AZ/Multi-Region/Multi-Cloud-Bereitstellungen

Leider gibt es zum jetzigen Zeitpunkt keine solche direkte Unterstützung in der AWS-Konsole (noch in irgendeiner ihrer AWS-APIs), die Multi-AZ/-Region/-Cloud-Bereitstellungen für Galera-Knoten-Cluster unterstützt.

Hohe Verfügbarkeit, Skalierbarkeit und Redundanz

Um eine Multi-AZ-Bereitstellung zu erreichen, ist es empfehlenswert, dass Sie Ihre Galera-Knoten in verschiedenen Verfügbarkeitszonen bereitstellen. Dadurch wird ein Ausfall des Clusters oder eine Fehlfunktion des Clusters aufgrund eines fehlenden Quorums verhindert.

Sie können auch ein AWS Auto Scaling einrichten und eine Auto Scaling-Gruppe erstellen, um Statusprüfungen zu überwachen und durchzuführen, damit Ihr Cluster immer über Redundanz, Skalierbarkeit und Hochverfügbarkeit verfügt. Auto Scaling sollte Ihr Problem lösen, falls Ihr Knoten aus unbekannten Gründen ausfällt.

Für die Bereitstellung in mehreren Regionen oder in mehreren Clouds hat Galera einen eigenen Parameter namens gmcast.segment, für den Sie dies beim Serverstart festlegen können. Dieser Parameter wurde entwickelt, um die Kommunikation zwischen den Galera-Knoten zu optimieren und die Menge des zwischen Netzwerksegmenten gesendeten Datenverkehrs zu minimieren, einschließlich Writeset-Relaying und IST- und SST-Donor-Auswahl.

Diese Art der Einrichtung ermöglicht es Ihnen, mehrere Knoten in verschiedenen Regionen für Ihren Galera-Cluster bereitzustellen. Abgesehen davon können Sie Ihre Galera-Knoten auch bei einem anderen Anbieter bereitstellen, wenn sie beispielsweise in Google Cloud gehostet werden und Sie Redundanz auf Microsoft Azure wünschen.

Ich würde Ihnen empfehlen, sich unseren Blog Multiple Data Center Setups Using Galera Cluster for MySQL or MariaDB and Zero Downtime Network Migration With MySQL Galera Cluster Using Relay Node anzusehen, um weitere Informationen zur Implementierung dieser Typen zu sammeln von Bereitstellungen.

Datenbankleistung auf AWS

Abhängig von Ihren Anwendungsanforderungen, wenn Ihre Abfragen Speicher verbrauchen, sind die speicheroptimierten Instanzen Ihre ideale Wahl. Wenn Ihre Anwendung über höhere Transaktionen verfügt, die eine hohe Leistung für Webserver oder Stapelverarbeitung erfordern, wählen Sie rechenoptimierte Instanzen. Wenn Sie mehr über die Optimierung Ihres Galera-Clusters erfahren möchten, lesen Sie diesen Blog How to Improve Performance of Galera Cluster for MySQL or MariaDB.

Datenbanksicherungen auf AWS

Das Erstellen von Backups kann schwierig sein, da es innerhalb von AWS keine direkte Unterstützung speziell für die MySQL Galera-Technologie gibt. AWS bietet Ihnen jedoch eine Notfall- und Wiederherstellungslösung mit EBS-Snapshots. Sie können Snapshots der an Ihre Instance angehängten EBS-Volumes erstellen und dann entweder mit CloudWatch eine Sicherung nach Zeitplan erstellen oder den Amazon Data Lifecycle Manager (Amazon DLM) verwenden, um die Snapshots zu automatisieren.

Beachten Sie, dass es sich bei den erstellten Schnappschüssen um inkrementelle Sicherungen handelt, was bedeutet, dass nur die Blöcke auf dem Gerät gespeichert werden, die sich nach Ihrem letzten Schnappschuss geändert haben. Sie können diese Snapshots in AWS S3 speichern, um Speicherkosten zu sparen. Alternativ können Sie externe Tools wie Percona Xtrabackup und Mydumper (für logische Sicherungen) verwenden und diese in AWS EFS -> AWS S3 -> AWS Glacier speichern.

Sie können auch das Lebenszyklusmanagement in AWS einrichten, wenn Sie Ihre Sicherungsdaten kosteneffizienter speichern möchten. Wenn Sie große Dateien haben und AWS EFS verwenden möchten, können Sie die AWS Backup-Lösung nutzen, da dies ebenfalls eine einfache, aber kostengünstige Lösung ist.

Andererseits können Sie auch externe Dienste (wie zB ClusterControl) nutzen, die Ihnen sowohl Monitoring- als auch Backup-Lösungen bieten. Sehen Sie sich das an, wenn Sie mehr wissen möchten.

Datenbanküberwachung auf AWS

AWS bietet Zustandsprüfungen und einige Statusprüfungen, um Ihnen Einblick in Ihre Galera-Knoten zu verschaffen. Dies erfolgt über CloudWatch und CloudTrail.

Mit CloudTrail können Sie die Protokolle aktivieren und überprüfen und Prüfungen basierend auf den durchgeführten Aktionen und Ablaufverfolgungen durchführen.

Mit CloudWatch können Sie Metriken sammeln und verfolgen, Protokolldateien sammeln und überwachen und benutzerdefinierte Alarme einstellen. Sie können es gemäß Ihren individuellen Anforderungen einrichten und erhalten einen systemweiten Einblick in die Ressourcennutzung, die Anwendungsleistung und den Betriebszustand. CloudWatch wird mit einem kostenlosen Kontingent geliefert, solange Sie noch innerhalb seiner Grenzen liegen (siehe Screenshot unten.)

CloudWatch hat auch einen Preis, der von der Menge der verteilten Metriken abhängt. Überprüfen Sie die aktuellen Preise, indem Sie hier nachsehen.

Hinweis:Die Verwendung von CloudWatch hat einen Nachteil. Es ist nicht darauf ausgelegt, den Zustand der Datenbank zu berücksichtigen, insbesondere nicht für die Überwachung von MySQL Galera-Cluster-Knoten. Alternativ können Sie externe Tools verwenden, die hochauflösende Grafiken oder Diagramme bieten, die für die Berichterstellung nützlich und bei der Diagnose eines problematischen Knotens einfacher zu analysieren sind.

Dafür können Sie PMM von Percona, DataDog, Idera, VividCortex oder unser eigenes ClusterControl verwenden (da die Überwachung mit der ClusterControl Community KOSTENLOS ist). Ich würde Ihnen empfehlen, ein Überwachungstool zu verwenden, das zu Ihnen passt Anforderungen basierend auf Ihren individuellen Anwendungsanforderungen. Es ist sehr wichtig, dass Ihr Überwachungstool in der Lage ist, Sie aggressiv zu benachrichtigen oder Ihnen eine Integration für Instant-Messaging-Systeme wie Slack, PagerDuty bereitzustellen oder Ihnen sogar eine SMS zu senden, wenn es zu einem schwerwiegenden Gesundheitszustand kommt.

Datenbanksicherheit auf AWS

Das Sichern Ihrer EC2-Instances ist einer der wichtigsten Bestandteile der Bereitstellung Ihrer Datenbank in der Public Cloud. Sie können ein privates Subnetz einrichten und die erforderlichen Sicherheitsgruppen einrichten, die nur bevorzugt werden, um den Port oder die Quell-IP je nach Ihrer Einrichtung zuzulassen. Sie können Ihre Datenbankknoten mit einem Nicht-Remote-Zugriff einrichten und einfach einen Jump-Host oder ein Internet-Gateway einrichten, wenn die Knoten auf das Internet zugreifen müssen, um auf Softwarepakete zuzugreifen oder diese zu aktualisieren. Wie wir das einrichten, erfahren Sie in unserem vorherigen Blog Deploying Secure Multicloud MySQL Replication on AWS and GCP with VPN.

Darüber hinaus können Sie Ihre Daten während der Übertragung sichern, indem Sie eine TLS/SSL-Verbindung verwenden oder Ihre Daten im Ruhezustand verschlüsseln. Wenn Sie ClusterControl verwenden, ist die Bereitstellung sicherer Daten während der Übertragung einfach und unkompliziert. Sie können unseren Blog SSL-Schlüsselverwaltung und Verschlüsselung von MySQL-Daten während der Übertragung lesen, wenn Sie es ausprobieren möchten. Für ruhende Daten kann das Speichern Ihrer Daten über S3 mit AWS Server-Side Encryption verschlüsselt werden oder AWS-KMS verwenden, das ich bereits besprochen habe. In diesem externen Blog erfahren Sie, wie Sie einen MariaDB-Cluster mit AWS-KMS einrichten und nutzen, damit Sie Ihre Daten sicher im Ruhezustand speichern können.

Galera-Cluster-Fehlerbehebung auf AWS

AWS CloudWatch kann insbesondere beim Untersuchen und Überprüfen der Systemmetriken hilfreich sein. Sie können das Netzwerk, die CPU, den Arbeitsspeicher, die Festplatte und die Instanz überprüfen oder die Nutzung und das Gleichgewicht berechnen. Dies entspricht jedoch möglicherweise nicht Ihren Anforderungen, wenn Sie sich mit einem bestimmten Fall befassen.

CloudTrail kann solide Ablaufverfolgungen von Aktionen durchführen, die basierend auf Ihrem spezifischen AWS-Konto geregelt wurden. Auf diese Weise können Sie feststellen, ob die Vorkommnisse nicht von MySQL Galera stammen, sondern möglicherweise ein Fehler oder Problem in der AWS-Umgebung sind (z. B. hat Hyper-V Probleme auf dem Hostcomputer, auf dem sich Ihre Instanz als Gast befindet). gehostet.)

Wenn Sie ClusterControl verwenden, gehen Sie zu Protokolle -> Systemprotokolle, um die erfassten Fehlerprotokolle zu durchsuchen, die vom MySQL Galera-Knoten selbst stammen. Abgesehen davon bietet ClusterControl eine Echtzeit-Überwachung, die Ihr Alarm- und Benachrichtigungssystem im Notfall verstärkt oder wenn Ihre MySQL Galera-Knoten kaputt gehen.

Fazit

AWS bietet keine reine Unterstützung für ein MySQL Galera Cluster-Setup, im Gegensatz zu AWS RDS, das MySQL-kompatibel ist. Aus diesem Grund basieren die meisten Empfehlungen oder Meinungen, die einen Galera-Cluster für den Produktionseinsatz innerhalb der AWS-Umgebung betreiben, auf erfahrenen und gut getesteten Umgebungen, die seit sehr langer Zeit laufen.

MariaDB-Cluster bietet eine große Produktivität, da sie ständig prägnante Unterstützung für die AWS-Technologie-Stack-Lösung bieten. In der kommenden Version von MariaDB 10.5 werden sie eine Unterstützung für die S3 Storage Engine anbieten, die das Warten möglicherweise wert ist.

Externe Tools können Ihnen bei der Verwaltung und Steuerung Ihres MySQL Galera-Clusters helfen, der in der AWS Cloud ausgeführt wird, daher ist es kein großes Problem, wenn Sie einige Dilemmata und FUD haben, warum Sie die AWS Cloud ausführen oder zur AWS Cloud wechseln sollten Plattform.

AWS ist in manchen Fällen vielleicht nicht die Einheitslösung, aber es bietet eine breite Palette von Lösungen, die Sie individuell anpassen und an Ihre Bedürfnisse anpassen können.

Im nächsten Teil unseres Blogs werden wir uns eine andere öffentliche Cloud-Plattform ansehen, insbesondere Google Cloud, und sehen, wie wir davon profitieren können, wenn wir uns dafür entscheiden, unseren Galera-Cluster auf ihrer Plattform auszuführen.