Ein Datenbank-Load-Balancer oder Proxy ist ein Middleware-Dienst zwischen Anwendungsschicht und Datenbankschicht. Die Anwendung stellt eine Verbindung zum Datenbank-Proxy her, und der Proxy leitet die Verbindung an die Datenbank weiter. Die Verwendung eines Datenbankproxys bietet einige Vorteile, zum Beispiel:Aufteilen von Lese- und Schreibabfragen, Zwischenspeichern von Abfragen, Verteilen von Abfragen basierend auf einem Routingalgorithmus, Umschreiben von Abfragen und Skalieren Ihrer Nur-Lese-Arbeitslast. Ein Datenbank-Proxy abstrahiert auch die Datenbanktopologie (und alle Änderungen) für die Anwendungsschicht, sodass sich Anwendungen nur mit einem einzigen Endpunkt verbinden müssen.
Es gibt verschiedene Datenbank-Proxys, von kommerziellen bis hin zu Open-Source-Optionen, z. B. HAProxy, Nginx, ProxySQL, Maxscale usw. In diesem Blog besprechen wir, wie Datenbank-Proxys von Maxscale zu ProxySQL migriert werden mit Hilfe von ClusterControl.
Aktuelle Architektur mit Maxscale
Betrachten Sie eine hochverfügbare Datenbankarchitektur, die aus 3 Knoten in einem Galera-Cluster und darüber hinaus aus 2 Maxscale- und Keepalived-Diensten für eine hohe Verfügbarkeit des Datenbank-Proxys besteht. Galera Cluster ist „virtuell“ synchrone Replikation, es verwendet eine für die Replikation basierende Zertifizierung, die sicherstellt, dass Ihre Daten auf allen Knoten verfügbar sind. Die aktuelle Architektur ist unten dargestellt:
Maxscale ist ein Datenbank-Proxy der MariaDB Corporation, der als Middleware zwischen Anwendungen fungiert und Datenbanken.
Hier ist die Topologiearchitektur für Galera Cluster und Maxscale Load Balancer in ClusterControl. Sie können all dies direkt aus ClusterControl bereitstellen oder vorhandene Datenbanken und Proxy-Knoten in ClusterControl importieren. Sie können Ihre Datenbanktopologie auf der Registerkarte "Topologie" sehen.
ProxySQL bereitstellen und Keepalived
ProxySQL ist ein weiterer Datenbank-Proxy von ProxySQL, der einige Funktionen wie Abfrage-Caching, Umschreiben von Abfragen, Aufteilen von Abfragen für Schreiben und Lesen basierend auf Abfragemustern bietet. Um ProxySQL in ClusterControl bereitzustellen, müssen Sie in Ihrem Cluster zu Manage -> Load Balancers gehen. ClusterControl unterstützt einige verschiedene Datenbank-Proxys; HAProxy, ProxySQL, MaxScale.
Wählen Sie ProxySQL und es wird die folgende Seite angezeigt:
Wir müssen die Serveradresse auswählen, auf der ProxySQL installiert wird. Wir können entweder auf den vorhandenen Knoten installieren oder wenn Sie einen dedizierten Knoten für ProxySQL haben möchten, geben Sie einfach die IP-Adresse in die Liste ein. Geben Sie das Passwort für Verwaltungs- und Überwachungsbenutzer ein, fügen Sie den Anwendungsbenutzer zu ProxySQL hinzu oder konfigurieren Sie es später. Aktivieren Sie die Datenbankserver, die in den Lastausgleichssatz in ProxySQL aufgenommen werden sollen. Klicken Sie auf die Schaltfläche ProxySQL bereitstellen. Für Hochverfügbarkeit benötigen wir mindestens 2 ProxySQL.
Wenn wir während der Einrichtung vergessen, einen Datenbankbenutzer zu ProxySQL hinzuzufügen, können wir ihn wie unten gezeigt auf der Registerkarte ProxySQL-Benutzer konfigurieren:
Für ProxySQL müssen Datenbankbenutzer auch in ProxySQL konfiguriert werden.
Nachdem ProxySQL bereitgestellt wurde, fahren wir mit der Konfiguration von Keepalived auf jedem ProxySQL-Host fort. Keepalived-Dienste fungieren als Master-/Backup-Rollen über die ProxySQL-Instanzen hinweg. Der Keepalived-Dienst verwendet VIP (virtuelle IP-Adresse), sodass die Anwendung eine Verbindung zu einer virtuellen IP-Adresse in der Master-Rolle herstellt und die Verbindung an den lokalen ProxySQL weiterleitet. Wenn die Dienste fehlschlagen, wird die VIP automatisch auf einen anderen Knoten verschoben.
Die Bereitstellung von Keepalived in ClusterControl erfolgt auf derselben Seite wie der Datenbank-Proxy, Sie müssen nur die Registerkarte Keepalived auswählen. Wählen Sie den Load-Balancer-Typ ProxySQL aus und fügen Sie dann das aktuelle ProxySQL für Keepalived1 und Keepalived2 hinzu. Füllen Sie die virtuelle IP-Adresse und die Netzwerkschnittstelle aus. Klicken Sie abschließend auf die Schaltfläche Keepalived bereitstellen.
Das Ausführen von zwei ProxySQL mit Keepalived-Diensten gibt uns eine Proxy-Ebene mit hoher Verfügbarkeit. In ClusterControl wird es in der folgenden Topologieansicht angezeigt:
Umschaltung
Umschaltung des Datenverkehrs ist wirklich einfach, Sie müssen nur die IP-Adressverbindung in der Anwendungsschicht ändern, um die virtuelle IP-Adresse für ProxySQL zu verwenden, und dann den Datenverkehr über ProxySQL überwachen.