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

Der einfache Weg, einen MySQL Galera-Cluster auf AWS bereitzustellen

ClusterControl 1.7.3 bietet eine bemerkenswerte Verbesserung der Cloud-Integration. Es ist möglich, einen MySQL- und PostgreSQL-Replikationscluster in der Cloud bereitzustellen sowie automatisch eine Cloud-Instanz zu starten und Ihren Datenbankcluster durch Hinzufügen eines neuen Datenbankknotens zu skalieren.

Dieser Blogbeitrag zeigt, wie Sie mit ClusterControl auf AWS einfach einen Galera-Cluster bereitstellen. Diese neue Funktion ist Teil der ClusterControl Community Edition, die kostenlose Bereitstellungs- und Überwachungsfunktionen enthält. Das bedeutet, dass Sie diese Funktion kostenlos nutzen können!

ClusterControl-Datenbank-Cluster-Architektur

Das folgende Diagramm fasst unsere gesamte Datenbank-Cluster-Architektur zusammen.

Der ClusterControl-Server befindet sich außerhalb der AWS-Infrastruktur, was eine faire Sichtbarkeit ermöglicht zu unserem Datenbank-Cluster (Standort Frankfurt:eu-central-1). Der ClusterControl-Server MUSS eine dedizierte öffentliche IP-Adresse haben. Dies liegt daran, dass die IP-Adresse von ClusterControl auf dem Datenbankserver und der AWS-Sicherheitsgruppe gewährt wird. Die Galera-Datenbankversion, die wir bereitstellen werden, ist MariaDB Cluster 10.3 mit ClusterControl 1.7.3.

Vorbereiten der AWS-Umgebung

ClusterControl kann einen Datenbank-Cluster auf unterstützten Cloud-Plattformen bereitstellen, nämlich AWS, Google Cloud Platform (GCP) und Microsoft Azure. Das erste, was wir konfigurieren müssen, ist, die AWS-Zugriffsschlüssel zu erhalten, damit ClusterControl programmgesteuerte Anfragen an AWS-Dienste ausführen kann. Sie könnten den Zugriffsschlüssel für das Root-Konto verwenden, aber dies ist nicht die empfohlene Methode. Es ist besser, nur für diesen Zweck einen dedizierten Identity and Access Management (IAM)-Benutzer zu erstellen.

Melden Sie sich bei Ihrer AWS-Konsole an -> Meine Sicherheitsanmeldeinformationen -> Benutzer -> Benutzer hinzufügen . Geben Sie den Benutzer an und wählen Sie „Programmatischer Zugriff“ als Zugriffstyp:

Erstellen Sie auf der nächsten Seite eine neue Benutzergruppe, indem Sie auf die Schaltfläche „Create group“ und geben Sie den Gruppennamen „DatabaseAutomation“ ein. Weisen Sie den folgenden Zugriffstyp zu:

  • AmazonEC2FullAccess
  • AmazonVPCFullAccess
  • AmazonS3FullAccess (nur wenn Sie planen, die Datenbanksicherung auf AWS S3 zu speichern)

Aktivieren Sie das Kontrollkästchen DatabaseAutomation und klicken Sie auf „Benutzer zur Gruppe hinzufügen“:

Optional können Sie auf der nächsten Seite Tags zuweisen. Fahren Sie andernfalls einfach mit der Erstellung des Benutzers fort. Sie sollten die beiden wichtigsten Dinge erhalten, die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel.

Laden Sie die CSV-Datei herunter und speichern Sie sie an einem sicheren Ort. Wir sind jetzt gut darin, die Bereitstellung in der Cloud zu automatisieren.

ClusterControl auf dem jeweiligen Server installieren:

$ whoami

root

$ wget http://severalnines.com/downloads/cmon/install-cc

$ chmod 755 install-cc

$ ./install-cc

Befolgen Sie die Installationsanweisungen und gehen Sie zu http://192.168.0.11/clustercontrol und erstellen Sie den Super-Admin-Benutzer und das Passwort.

Damit ClusterControl die automatische Bereitstellung in der Cloud durchführen kann, müssen Cloud-Anmeldeinformationen für die ausgewählte Region mit einer gültigen AWS-Schlüssel-ID und einem Geheimnis erstellt werden. Gehen Sie zu Seitenleiste -> Integrationen -> Cloud-Anbieter -> Fügen Sie Ihre ersten Cloud-Anmeldeinformationen hinzu -> Amazon Web Services und geben Sie die erforderlichen Details ein und wählen Sie Frankfurt als Standardregion:

Diese Anmeldeinformationen werden von ClusterControl verwendet, um die Clusterbereitstellung und -verwaltung zu automatisieren. An diesem Punkt sind wir bereit, unseren ersten Cluster bereitzustellen.

Datenbank-Cluster-Bereitstellung

Gehen Sie zu Bereitstellen -> In der Cloud bereitstellen -> MySQL Galera -> MariaDB 10.3 -> Cluster konfigurieren um zur nächsten Seite zu gelangen.

Stellen Sie im Abschnitt Cluster konfigurieren sicher, dass die Anzahl der Knoten 3 ist, und geben Sie einen Clusternamen und ein MySQL-Root-Passwort ein:

Wählen Sie unter Select Credential einen Credential namens „AWS Frankfurt“ aus und fahren Sie mit der nächsten Seite fort, indem Sie auf „Select Virtual Machine“ klicken. Wählen Sie das bevorzugte Betriebssystem und die Instanzgröße aus. Es wird empfohlen, unsere Infrastruktur in einer privaten Cloud auszuführen, damit wir eine dedizierte interne IP-Adresse für unsere Cloud-Instanzen erhalten und die Hosts nicht direkt dem öffentlichen Netzwerk ausgesetzt sind. Klicken Sie neben dem Feld „Virtuelle Private Cloud (VPC)“ auf die Schaltfläche „Neu hinzufügen“ und weisen Sie diesem Netzwerk ein Subnetz von 10.10.0.0/16 zu:

Die von uns erstellte VPC ist eine private Cloud und hat keine Internetverbindung. Damit ClusterControl die Hosts von außerhalb des AWS-Netzwerks bereitstellen und verwalten kann, müssen wir die Internetverbindung zu dieser VPC zulassen. Dazu müssen wir Folgendes tun:

  1. Erstellen Sie ein Internet-Gateway
  2. Externes Routing zur Routing-Tabelle hinzufügen
  3. Verknüpfen Sie das Subnetz mit der Routing-Tabelle

Um ein Internet-Gateway zu erstellen, melden Sie sich bei AWS Management Console -> VPC -> Internet Gateways -> Create internet gateway -> an vergeben Sie einen Namen für dieses Gateway . Wählen Sie dann das erstellte Gateway aus der Liste aus und gehen Sie zu Aktionen -> An VPC anhängen -> Wählen Sie die VPC für die Dropdown-Liste aus -> Anhängen . Wir haben jetzt ein Internet-Gateway an die private Cloud angeschlossen. Wir müssen das Netzwerk jedoch so konfigurieren, dass alle externen Anfragen über dieses Internet-Gateway weitergeleitet werden. Daher müssen wir der Routingtabelle eine Standardroute hinzufügen. Gehen Sie zu VPC -> Routentabellen -> wählen Sie die Routentabelle -> Routen bearbeiten und geben Sie das Zielnetzwerk 0.0.0.0/0 und das Ziel (die erstellte Internet-Gateway-ID) wie folgt an:

Dann müssen wir das DB-Subnetz diesem Netzwerk zuordnen, damit es alle in diesem Netzwerk erstellten Instanzen der zuvor erstellten Standardroute zuweist, Wählen Sie die Routing-Tabelle -> Subnetzzuordnung bearbeiten -> Weisen Sie das DB-Subnetz zu , wie unten gezeigt:

Die VPC kann nun von ClusterControl für die Bereitstellung verwendet werden.

Wählen Sie nach der Erstellung die erstellte VPC aus der Dropdown-Liste aus. Für den SSH-Schlüssel werden wir ClusterControl bitten, ihn automatisch zu generieren:

Der generierte SSH-Schlüssel befindet sich auf dem ClusterControl-Server im Verzeichnis /var/lib/cmon/autogenerated_ssh_keys/s9s/.

Klicken Sie auf "Bereitstellungszusammenfassung". Auf dieser Seite müssen wir dem Datenbank-Cluster ein Subnetz von der VPC zuweisen. Da dies eine neue VPC ist, hat sie kein Subnetz und wir müssen ein neues erstellen. Klicken Sie auf die Schaltfläche "Neues Subnetz hinzufügen" und weisen Sie 10.10.1.0/24 als Netzwerk für unseren Datenbankcluster zu:

Wählen Sie abschließend das Subnetz erstellen im Textfeld aus und klicken Sie auf „Cluster bereitstellen“:

Sie können den Jobfortschritt unter Aktivität -> Jobs - überwachen.> Cluster erstellen . ClusterControl führt die notwendigen Schritte vor der Installation durch, wie das Erstellen der Cloud-Instanzen, der Sicherheitsgruppe, das Generieren des SSH-Schlüssels usw., bevor die eigentlichen Installationsschritte beginnen.

Sobald der Cluster bereit ist, sollten Sie den folgenden Cluster im ClusterControl-Dashboard sehen:

Unsere Clusterbereitstellung ist jetzt abgeschlossen.

AWS-Datenbankbereitstellung posten

Wir können mit dem Laden unserer Daten in den Cluster beginnen oder eine neue Datenbank für Ihre Anwendungsnutzung erstellen. Um eine Verbindung herzustellen, weisen Sie einfach Ihre Anwendungen oder Clients an, sich mit der privaten oder öffentlichen IP-Adresse eines der Datenbankserver zu verbinden. Sie können diese Informationen abrufen, indem Sie zur Seite „Knoten“ gehen, wie im folgenden Screenshot gezeigt:

Wenn Sie direkt auf die Datenbankknoten zugreifen möchten, können Sie das ClusterControl-Web-SSH-Modul unter Knotenaktionen -> SSH-Konsole verwenden , wodurch Sie eine ähnliche Erfahrung wie beim Herstellen einer Verbindung über einen SSH-Client erhalten.

Um den Cluster durch Hinzufügen eines Datenbankknotens zu vergrößern, gehen Sie einfach zu Cluster-Aktionen (Server-Stack-Symbol) -> Knoten hinzufügen -> DB-Knoten auf einer neuen Cloud-Instanz hinzufügen und Ihnen wird folgender Dialog angezeigt:

Folgen Sie einfach dem Bereitstellungsassistenten und konfigurieren Sie Ihre neue Instanz entsprechend. Sobald die Instanz erstellt ist, wird ClusterControl den Knoten automatisch installieren, konfigurieren und dem Cluster hinzufügen.

Das war's erstmal, Leute. Viel Spaß beim Clustering in der Cloud!