Erstellen Sie einen hochverfügbaren MySQL-Cluster mit Dual-VIP

Erstellen Sie einen hochverfügbaren MySQL-Cluster mit Dual-VIP

1. Projektbeschreibung:

Die Ziele dieses Projekts sind:
Erstellen Sie einen hochverfügbaren und effizienten MySQL-Cluster, der eine Lese-/Schreibtrennung erreicht, um die Geschäftsstabilität zu gewährleisten, eine einfache Kommunikation und Überwachung des gesamten Clusters zu ermöglichen und den gesamten Cluster stapelweise bereitzustellen und zu verwalten.

2. Projektumgebung:

8 Server (2G, 2 Kerne), Centos7.8
mysql5.7.30 mysqlrouter8.0.21
keepalived2.0.10 zabbix ansible

2. Projektschritte:

1. Installieren Sie das Centos7.8-System, stellen Sie Ansible bereit und konfigurieren Sie geheimnisfreie SSH-Kanäle zwischen allen Maschinen
2. Stellen Sie das Zabbix-Überwachungssystem bereit
3. Installieren und Bereitstellen von MySQL im Binärmodus über Ansible
Hauptsächlich durch das geschriebene Skript zur Installation der Binärversion von MySQL
4. Verwenden Sie Ansible, um MySQLRouter und Keepalived zu installieren, implementieren Sie Lese-/Schreibtrennung und Hochverfügbarkeit auf den anderen beiden Middleware-Servern, konfigurieren Sie zwei Instanzen auf Keepalived, implementieren Sie zwei VIPs und dienen Sie als Master und Backup füreinander.
Verbessern Sie die Hochverfügbarkeitsleistung.
5. Konfigurieren Sie die Master-Slave-Replikation auf drei MySQL-Servern, richten Sie einen Benutzer für die Lese-/Schreibtrennung ein, um einen Master + 2 Slave-Knoten-Cluster (halbsynchron + GTID) zu bilden, stellen Sie Datenbankdienste bereit und stellen Sie einen verzögerten Sicherungsserver bereit (30 Minuten verzögert).
6. Versuchen Sie, das MySQL-Failover-Plugin bereitzustellen (schreiben Sie Ihr eigenes Skript oder verwenden Sie MHA).
Realisieren Sie ein automatisches Failover, um die Funktion bei einem Master-Ausfall sicherzustellen: Es kann automatisch einen anderen Slave zum Master befördern und der andere Slave wechselt zum neuen Master, um das Binärprotokoll zu erhalten.
7. Überprüfen und testen Sie die Lese-/Schreibtrennung, die hohe Verfügbarkeit und das Master-Slave-Failover
8. Verwenden Sie eine Stresstest-Software (Sysbench), um die Leistung des gesamten MySQL-Clusters (CPU, IO, Speicher usw.) zu testen.

3. Konzeptkarte des Projekts:

Bildbeschreibung hier einfügen

4. Stellen Sie das Zabbix-Überwachungssystem bereit

Bildbeschreibung hier einfügen

4.1 Vorbereitung:

Stellen Sie einen Zabbix-Überwachungsserver und einen überwachten Host bereit, um sich auf weitere spezifische Überwachungsaufgaben vorzubereiten:

LNMP-Umgebung installieren

Installieren Sie Zabbix aus der Quelle

Installieren des Überwachungshosts und Ändern der Grundkonfiguration

Initialisieren Sie die Zabbix-Überwachungswebseite

Ändern Sie die PHP-Konfigurationsdatei, um die Zabbix-Anforderungen zu erfüllen

Installieren Sie den überwachten Host und ändern Sie die Grundkonfiguration

Verwenden Sie eine virtuelle RHEL7-Maschine, um die LNMP-Umgebung, Zabbix und zugehörige Abhängigkeitspakete zu installieren und bereitzustellen, die Datenbank zu konfigurieren und die Zabbix-Überwachungsplattform zu initialisieren. Verwenden Sie zwei überwachte Terminals und installieren Sie Zabbix Agent aus dem Quellcode. Um das Zabbix-Experiment abzuschließen, müssen wir eine experimentelle Umgebung erstellen. Die Topologie ist in Tabelle 1 dargestellt.

Tabelle 1 Experimentelle Topologie

Bildbeschreibung hier einfügen

4.2 Schritte:

Schritt 1: Bereitstellen des Überwachungsservers

1) Installieren Sie die LNMP-Umgebung

Die Zabbix-Überwachungsverwaltungskonsole muss über eine Webseite angezeigt werden und MySQL muss zum Speichern der Daten verwendet werden. Daher müssen Sie zuerst eine grundlegende LNMP-Umgebung für Zabbix vorbereiten.

Bildbeschreibung hier einfügen

2) Ändern Sie die Nginx-Konfigurationsdatei

Konfigurieren Sie Nginx, um dynamische PHP-Websites zu unterstützen. Da eine große Anzahl von PHP-Skripten ausgeführt werden muss, müssen auch verschiedene FastCGI-Caches von Nginx aktiviert werden, um die Ausführung von PHP-Skripten zu beschleunigen.

Bildbeschreibung hier einfügen

3) Starten Sie den Dienst

Starten Sie die Dienste Nginx, PHP-FPM und MariaDB und deaktivieren Sie SELinux und Firewall.

Bildbeschreibung hier einfügen

4) Client-Test LNMP-Umgebung

Der Server erstellt eine PHP-Testseite und der Browser greift auf die Seite zu, um die Webkonnektivität zu testen.

Bildbeschreibung hier einfügen

Schritt 2: Bereitstellung des Überwachungsservers Zabbix Server 1) Installieren Sie Zabbix Server aus dem Quellcode

Die meisten Quellcodepakete erfordern abhängige Pakete, und das gilt auch für Zabbix. Bevor Sie den Quellcode kompilieren, müssen Sie die relevanten abhängigen Pakete installieren.

Bildbeschreibung hier einfügen

2) Zabbix initialisieren

Erstellen Sie eine Datenbank und starten Sie die Zabbix-Webseite

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Tipp: Wenn der Dienst aufgrund einer falschen Konfigurationsdatei nicht gestartet werden kann, führen Sie zabbix_server nicht erneut aus.
Denken Sie daran, den Dienst mit „killall zabbix_server“ herunterzufahren und dann neu zu starten.
Ändern Sie die Zabbix_agent-Konfigurationsdatei und starten Sie den Zabbix_agent-Dienst

Bildbeschreibung hier einfügen

Tipp: Wenn der Dienst aufgrund einer falschen Konfigurationsdatei nicht gestartet werden kann, führen Sie zabbix_agentd nicht erneut aus.

Denken Sie daran, den Dienst mit killall zabbix_agentd herunterzufahren und dann neu zu starten.
Der Browser greift auf die Webseite des Zabbix_server-Servers zu

Bildbeschreibung hier einfügen

Nachdem Sie die PHP-Konfigurationsdatei geändert haben, verwenden Sie den Browser, um erneut auf den Server zuzugreifen
Die folgende Eingabeaufforderung wird angezeigt.

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Hinweis: Es gibt kein Problem mit einem PHP-LDAP-Warnstatus!
Geben Sie auf der Seite „Datenbank initialisieren“ die Datenbankparameter
wie in der Abbildung gezeigt ein.

Bildbeschreibung hier einfügen

Melden Sie sich auf der Anmeldeseite mit dem Benutzer (admin) und dem Passwort (zabbix) an.
Stellen Sie nach der Anmeldung die Sprachumgebung auf Chinesisch ein, wie in der Abbildung gezeigt.

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Schritt 3: Installieren Sie den Zabbix-Agenten auf dem überwachten Host 1) Installieren Sie die Zabbix-Agentensoftware aus dem Quellcode

Führen Sie denselben Vorgang in 2.100 und 2.200 durch (am Beispiel von zabbixclient_web1 ).

Bildbeschreibung hier einfügen

2) Ändern Sie die Agentenkonfigurationsdatei und starten Sie den Agenten

Bildbeschreibung hier einfügen

3) Kopieren Sie das Startskript (optional)

Es gibt Startskripte, die die Verwaltung von Diensten sowie das Starten und Herunterfahren von Diensten erleichtern.

Das Startskript befindet sich im Zabbix-Quellverzeichnis

Bildbeschreibung hier einfügen

5. Projekterfahrung:

1. Denken Sie daran, die Architektur des gesamten Clusters zu planen, die Konfiguration sorgfältig durchzuführen, im Voraus Skripte vorzubereiten und diese im Laufe der Zeit zu ändern.

2. Firewall- und Selinux-Probleme erfordern mehr Aufmerksamkeit

3. Verfügen Sie über ein tiefes Verständnis von MySQL-Clustering und Hochverfügbarkeit

4. Mehr Anwendungen und Verständnis für automatisierte Batch-Bereitstellung und Überwachung

5. Die Keepalived-Konfiguration erfordert mehr Sorgfalt und die IP-Adressplanung erfordert ein neues Verständnis

6. Für die Verwendung von Dual-VIP fügen Sie 2 Lastausgleichsdatensätze hinzu, um DNS-Polling zu implementieren und die Umleitung auf 2 VIP-Lastausgleicher zu erreichen

Dies ist das Ende dieses Artikels über den Aufbau eines hochverfügbaren MySQL-Clusters mit zwei VIPs. Weitere relevante Inhalte zu hochverfügbaren MySQL-Clustern finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Bereitstellung eines MySQL-Hochverfügbarkeitsclusters und Implementierung eines Failovers
  • Detaillierte Schritte zur Installation von MySQL mit Cluster-RPM
  • Detaillierte Erläuterung des MySQL-Clusters: Implementierung einer Master- und einer Slave-Architektur
  • Detaillierte Erklärung zum Aufbau eines MySQL-Clusters

<<: 

>>:  20 JS-Abkürzungsfähigkeiten zur Verbesserung der Arbeitseffizienz

Artikel empfehlen

Detaillierte Erklärung der Verwendung des Fuser-Befehls in Linux

beschreiben: fuser kann anzeigen, welches Program...

Die Einhandregel von WEB 2.0

<br />Mein vorheriger Artikel über CSS wurde...

Verwendung von Docker-Image-Speicher-Overlays

1. Übersicht Das Image in Docker ist in Schichten...

Leistung des Node+Express-Testservers

Inhaltsverzeichnis 1 Testumgebung 1.1 Server-Hard...

So implementieren Sie den Nginx-Reverse-Proxy für mehrere Server

Nginx verwendet mehrere Reverse-Proxy-Server, was...

Modulare CSS-Lösung

Es gibt wahrscheinlich ebenso viele modulare Lösu...

Beispielcode für die Vue-Bildzuschneidekomponente

Beispiel: Tipp: Diese Komponente basiert auf der ...

Beispielcode für einen coolen Atemeffekt mit CSS3+JavaScript

Ein einfacher cooler Effekt, der mit CSS3-Animati...

CSS3 realisiert den roten Umschlag-Shaking-Effekt

Es besteht die Anforderung, den Schütteleffekt de...

Alibaba Cloud beantragt ein kostenloses SSL-Zertifikat (https) von Cloud Shield

Da das Projekt den https-Dienst nutzen muss, habe...