GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie man MySQL mit Percona und Keepalived multimastert

Einführung

In diesem Anleitungsartikel führen wir Sie durch die Verfahren zur Installation und Wartung einer Single-Site-Multi-Master-MySQL-Cluster-Lösung mit Lastenausgleichsdiensten. Wir werden Percona XtraDB Cluster Server als unsere Basisplattform für MySQL-Datenbanken verwenden, da es über alle erforderlichen Komponenten verfügt und integrierte Unterstützung für eine Open-Source-Lösung mit hoher Verfügbarkeit und Skalierbarkeit für Aktiv/Aktiv für MySQL-Clustering bietet. Es integriert Percona Server und Percona XtraBackup mit der Galera-Bibliothek von MySQL-Hochverfügbarkeitslösungen in einem einzigen Paket, wodurch Sie einen kostengünstigen MySQL-Hochverfügbarkeitscluster erstellen können. Wir werden Keepalived verwenden, um den Lastausgleich zu handhaben.

Percona bietet Yum- und Apt-Repositories für Red Hat/CentOS und Ubuntu/Debian. Zu diesen Repositories gehören Percona Server, Percona XtraDB, Percona XtraBackup und Percona Toolkit.

Keepalived ist eine Open-Source-Routing-Software, die Lastenausgleich über LVS (Linux Virtual Server) und Hochverfügbarkeit über VRRP (Virtual Router Redundancy Protocol) bietet.

Voraussetzungen

Bevor wir beginnen, müssen wir zunächst Folgendes einrichten.

  • Drei CentOS 6.x-Server, alle in demselben lokalen Netzwerk (LAN). (Zwei MySQL-Knoten und ein Lastausgleichsknoten.)
  • MySQL-Server sollten mindestens 2 GB RAM haben, um Synchronisierungsdienste zu aktivieren.
  • Drei eindeutige, sichere Passwörter für die folgenden MySQL-Benutzer:
    • MySQL-Root-Benutzer
    • SST-Dienste (State Snapshot Transfer) synchronisieren Benutzer („sst-sync-user“)
    • Keepalived-Benutzer („keepalived“)
  • Geschützte CentOS 6.x-Firewall-Konfiguration (Dieser Punkt ist eine Best-Practice-Empfehlung und nicht unbedingt erforderlich. Wir verwenden iptables in diesem Handbuch, wenn Sie also eine alternative Lösung verwenden, passen Sie sie nach Bedarf an. )

.

Umriss der Pakete und Konfigurationsschritte

  • Grundlegende Vorbereitung des Percona-Servers (Knoten 1 und 2)
  • MySQL-Knoten #1:Konfiguration
  • MySQL-Knoten #2:Konfiguration
  • Keepalived Node #3:Installation aus dem Repository
  • Keepalived-Knoten Nr. 3:(Optional) Kompilieren aus der Quelle

.

Setup-Diagramm

Unten ist ein Diagramm der erwarteten Ergebnisse, sobald wir mit diesem Artikel fertig sind. Bitte beachten Sie, dass alle in diesem Artikel und im Diagramm verwendeten IP-Adressen RFC 5737 – IPv4 Address Blocks Reserved for Documentation Purposes Only sind.

Multi-Master-MySQL-Cluster-Netzwerkdiagramm

.

1 – Grundlegende Vorbereitung des Percona-Servers (Knoten 1 und 2)

Zuerst stellen wir sicher, dass wir bei Ihrem Webserver als Root-Benutzerkonto angemeldet sind.

sudo su -

Als Nächstes werden wir die erforderlichen Yum-Repositories installieren, damit wir die Percona-Softwarepakete einfach installieren und auf dem neuesten Stand halten können.

yum install -y http://linux.mirrors.es.net/fedora-epel/6/i386/epel-release-6-8.noarch.rpmyum install -y http://www.percona.com /downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpmyum sauberes Allyum-Update
  • EPEL :Extra Packages for Enterprise Linux ist eine Fedora Special Interest Group, die eine Reihe hochwertiger Zusatzpakete für Enterprise Linux erstellt, pflegt und verwaltet.
  • Percona :Percona XtraDB-Software-Repository.

.
Jetzt werden wir SELINUX (Security-Enhanced Linux Kernel) deaktivieren, da es mit den Percona XtraDB-Clusterdiensten in Konflikt steht. Öffnen Sie zuerst die /etc/selinux/config Konfigurationsdatei mit dem Texteditor Ihrer Wahl (wir verwenden in diesem Artikel Nano).

nano /etc/selinux/config

Als nächstes ändern Sie die Konfigurationsvariable SELINUX=enforcing zu SELINUX=disabled , wie unten.

# Diese Datei steuert den Zustand von SELinux auf dem System.# SELINUX=kann einen dieser drei Werte annehmen:# erzwingen – SELinux-Sicherheitsrichtlinie wird erzwungen.# permissiv – SELinux gibt Warnungen aus, anstatt erzwingen.# deaktiviert – Kein SELinux Die Richtlinie ist geladen. SELINUX=deaktiviert# SELINUXTYPE=kann einen dieser beiden Werte annehmen:# targetiert – Gezielte Prozesse werden geschützt,# mls – Mehrstufiger Sicherheitsschutz.SELINUXTYPE=targeted 

Starten Sie Ihren Server neu, damit die Änderung wirksam wird.

Wenn Sie die iptables-Firewalldienste ausführen (in den meisten CentOS 6.x-Installationen standardmäßig aktiviert ), müssen Sie die erforderlichen Dienstports auf jedem Knotenserver aktivieren, um MySQL-Konnektivität und Synchronisierungsdienste zwischen den geclusterten Knoten zuzulassen.

iptables -I INPUT 5 -m state --state NEW -m tcp -p tcp -m multiport --dports 4567:4568 -j ACCEPTiptables -I INPUT 5 -m state --state NEW -m tcp -p tcp --dport 4444 -j ACCEPT iptables -I INPUT 5 -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPTservice iptables save

Hinweis: Diese Befehle fügen jede dieser Firewall-Regeln direkt nach den Standard-INPUT-Regeln in Zeile 5 ein. Wenn Sie vor diesem Schritt Änderungen an Ihren iptables-Regeln vorgenommen haben, stellen Sie sicher, dass Sie diese Befehle mit den für Ihre iptables-Konfiguration relevanten Zeilennummern anpassen . Sehen Sie sich unseren Artikel über grundlegende IPTables an, wenn Sie Hilfe oder eine Auffrischung benötigen.

.
Wir sind jetzt bereit, die Percona XtraDB Cluster-Pakete auf jedem MySQL-Serverknoten zu installieren.

yum install -y Percona-XtraDB-Cluster-56

.

2 – MySQL-Knoten Nr. 1:Konfiguration

Stellen Sie zunächst sicher, dass Sie die MySQL-Benutzerpasswörter (oben im Abschnitt „Voraussetzungen“ erwähnt) für die folgenden Schritte griffbereit haben.

Jetzt müssen wir die /etc/my.cnf erstellen Konfigurationsdatei mit den Clustering-Konfigurationseinstellungen.

nano /etc/my.cnf

Kopieren Sie als Nächstes diese grundlegenden Konfigurationseinstellungen und fügen Sie sie in unsere Konfigurationsdatei ein.

Hinweis: In den Abschnitten „CLUSTER-KONFIGURATION“ und „STATUS-SNAPSHOT-ÜBERTRAGUNG“ unten müssen Sie die für Ihr Netzwerk/Ihre Konfiguration relevanten Werte ersetzen:

  • wsrep_cluster_name – Der Clustername muss auf allen Knoten gleich sein, aber Sie können ihn durch Ihre eigene Namenskonvention ersetzen.
  • wsrep_cluster_address – Verwenden Sie die IP-Adressen aller teilnehmenden Knoten (einschließlich dieses Hosts). Ihm muss „gcomm://“ vorangestellt werden.)
  • wsrep_node_address – Verwenden Sie die IP-Adresse für diesen Host.
  • wsrep_node_name – Sie können Ihre eigene Namenskonvention verwenden.
  • wsrep_sst_auth – Ersetzen Sie das SST-Benutzerkonto-Passwort von oben nach dem Benutzernamen und dem Doppelpunkt in diesem Feld. Sie können den SST-Benutzer auch durch Ihre eigene Namenskonvention ersetzen – stellen Sie nur sicher, dass Sie denselben Benutzernamen aktualisieren, wenn Sie die Benutzer unten zu MySQL hinzufügen.

.

[mysqld]# GENERAL #datadir =/var/lib/mysqluser =mysql# PROTOKOLLIERUNG ## log-error =/var/log/mysql/error.log# log-queries-not-using-indexes =1# slow-query-log =1# slow-query-log-file =/var/log/mysql/mysql-slow.log # DATENSPEICHER #default_storage_engine =InnoDBbinlog_format =ROW# CLUSTERKONFIGURATION #wsrep_cluster_name =mysql_clstr01wsrep_cluster_address =gcomm://192.0 .2.11,192.0.2.12wsrep_node_address =192.0.2.11wsrep_node_name =mysql-node-01wsrep_provider =/usr/lib64/libgalera_smm.so# STATE SNAPSHOT TRANSFER #wsrep_sst_method =xtrabackup-v2wsrep_sst_auth ="sst-sync-passwort:"# MyISAM-Datenbankreplikation ## Die MyISAM-Speicher-Engine wird derzeit nur experimentell unterstützt. ## wsrep_replicate_myisam =1# Settings / Tunning Options #innodb_locks_unsafe_for_binlog =1 innodb_autoinc_lock_mode =2 # innodb_flush_log_at_trx_commit =2# innodb_flush_method =O_DIRECT# innodb_file_per_table =1# innodb_buffer_pool_size =1386971136# innodb_buffer_pool_size =6G# innodb_log_file_size =256M# key_buffer =208045670# max_allowed_packet =67108864# thread_stack =192K# thread_cache_size =10# query_cache_limit =1M# query_cache_size =16M

Viele dieser Konfigurationseinstellungen sind auskommentiert. Sie sind enthalten, falls Sie die Datenbankleistung optimieren und/oder debuggen möchten. Wenn Sie fertig sind, speichern Sie die Datei und beenden Sie.

Wir sind jetzt bereit, den primären Knoten im Cluster zu „booten“.

Bootstrapping bezieht sich darauf, den anfänglichen Clusterknoten zu initialisieren und auszuführen. Durch Bootstrapping definieren wir, welcher Knoten die ursprünglichen Informationen hat und mit welchem ​​alle anderen Knoten synchronisiert werden sollen (über SST). Im Falle eines clusterweiten Absturzes (oder Herunterfahrens) funktioniert das Bootstrapping des Primärknotens auf die gleiche Weise:Indem wir den Anfangsknoten auswählen, entscheiden wir im Wesentlichen, welcher Clusterknoten die Datenbank enthält, mit der wir fortfahren möchten.

Die Clustermitgliedschaft wird nicht durch diese Einstellung definiert, sondern durch die Knoten, die dem Cluster mit dem richtigen wsrep_cluster_name beitreten Variableneinstellung.

.

/etc/init.d/mysql bootstrap-pxc

Wir sollten auch sicherstellen, dass wir die MySQL-Dienste so einstellen, dass sie beim Neustart des Servers automatisch gestartet werden.

chkconfig mysql ein

Unser erster Knotendatenbankdienst ist jetzt betriebsbereit.

Wir sind jetzt bereit, Ihre MySQL-Datenbankinstallation zu sichern. Standardmäßig ist eine Erstinstallation einer MySQL-Datenbank nicht mit einem Passwort gesichert. Um unsere MySQL-Installation zu sichern, führen wir den folgenden Befehl aus und folgen den Inline-Eingabeaufforderungen. Während dieses Vorgangs werden wir aufgefordert, ein Root-Passwort einzugeben. Verwenden Sie während dieses Vorgangs das MySQL-Root-Passwort von oben. Wir können die Eingabetaste drücken, um die Standardeinstellungen für die verbleibenden Eingabeaufforderungen zu akzeptieren, um die sichere Installation abzuschließen.

/usr/bin/mysql_secure_installation

Nachdem wir unseren Datenbankserver gesichert haben, müssen wir einige Nutzerkonten einrichten. Das erste Konto wird für die SST-Synchronisierungsdienste und das zweite Konto für das Keepalived-Dienstprüfskript verwendet.

Melden Sie sich bei der MySQL-CLI-Konsole an.

mysql -u root -p

Als Nächstes müssen wir die Benutzerkonten erstellen und den Konten Sicherheitsberechtigungen erteilen.

ERSTELLEN SIE BENUTZER 'sst-sync-user'@'localhost', IDENTIFIZIERT DURCH '<%sst generiertes Passwort%>';Grant RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sst-sync-user'@' localhost';CREATE USER 'keepalived'@'%' IDENTIFIED BY '<%keepalived selected password%>';FLUSH PRIVILEGES;

Wir sind jetzt bereit, diesen Knoten so einzurichten, dass er direkt auf MySQL-Verbindungen antwortet, die vom Keepalived-Lastausgleichsserver empfangen werden. In einem Linux Virtual Server (LVS)-Setup mit direktem Routing muss der LVS-Router (Ihr Keepalived-Server) die eingehenden MySQL-Verbindungsanfragen empfangen und sie dann zur Verarbeitung an den richtigen realen Server senden. Die echten Server müssen dann direkt Übermitteln der Antwortdaten zurück an den Client, der die Daten anfordert. Um direktes Routing zu konfigurieren, muss jeder reale Server die VIP-Adresse (virtuelle IP) auf dem Host konfiguriert haben, aber nicht auf ARP-Anfragen im lokalen Netzwerk antworten.

Zuerst richten wir den Server so ein, dass er nicht auf ARP-Anfragen für die VIP-Adresse antwortet.

echo "net.ipv4.conf.lo.arp_ignore =1">> /etc/sysctl.confecho "net.ipv4.conf.lo.arp_announce =2">> /etc/sysctl.confsysctl -p 

Erstellen Sie als Nächstes eine VIP-Adresse auf dem Loopback-Adapter. Wir erstellen den lo:1 Interface-Konfigurationsdatei und stellen Sie sie so ein, dass sie beim Booten automatisch startet.

nano /etc/sysconfig/network-scripts/ifcfg-lo:1

Fügen Sie die folgende Konfiguration in die Schnittstellenkonfiguration ein. Achten Sie darauf, die Beispiel-VIP-Adresse durch die Adresse zu ersetzen, die Sie verwenden werden.

DEVICE=lo:1BOOTPROTO=staticONBOOT=yesIPADDR=192.0.2.10NETMASK=255.255.255.255

Sobald wir die Konfigurationsdatei gespeichert haben, können wir die VIP-Adresse aufrufen.

ifup lo:1

Unser erster MySQL-Cluster-Knoten ist nun fertiggestellt.
.

3 – MySQL-Knoten Nr. 2:Konfiguration

Stellen Sie auch hier sicher, dass Sie die MySQL-Benutzerkennwörter (oben im Abschnitt „Voraussetzungen“ erwähnt) für die folgenden Schritte griffbereit haben.

Jetzt müssen wir die /etc/my.cnf erstellen Konfigurationsdatei mit den Clustering-Konfigurationseinstellungen.

nano /etc/my.cnf

Kopieren Sie als Nächstes diese grundlegenden Konfigurationseinstellungen und fügen Sie sie in unsere Konfigurationsdatei ein.

Hinweis: In den Abschnitten „CLUSTER-KONFIGURATION“ und „STATUS-SNAPSHOT-ÜBERTRAGUNG“ unten müssen Sie die für Ihr Netzwerk/Ihre Konfiguration relevanten Werte ersetzen:

  • wsrep_cluster_name – Der Clustername muss auf allen Knoten gleich sein, aber Sie können ihn durch Ihre eigene Namenskonvention ersetzen.
  • wsrep_cluster_address – Verwenden Sie die IP-Adressen aller teilnehmenden Knoten (einschließlich dieses Hosts). Ihm muss „gcomm://“ vorangestellt werden.)
  • wsrep_node_address – Verwenden Sie die IP-Adresse für diesen Host.
  • wsrep_node_name – Sie können Ihre eigene Namenskonvention verwenden.
  • wsrep_sst_auth – Ersetzen Sie das SST-Benutzerkonto-Passwort von oben nach dem Benutzernamen und dem Doppelpunkt in diesem Feld. Sie können den SST-Benutzer auch durch Ihre eigene Namenskonvention ersetzen – stellen Sie nur sicher, dass Sie denselben Benutzernamen aktualisieren, wenn Sie die Benutzer unten zu MySQL hinzufügen.

.

[mysqld]# GENERAL #datadir =/var/lib/mysqluser =mysql# PROTOKOLLIERUNG ## log-error =/var/log/mysql/error.log# log-queries-not-using-indexes =1# slow-query-log =1# slow-query-log-file =/var/log/mysql/mysql-slow.log # DATENSPEICHER #default_storage_engine =InnoDBbinlog_format =ROW# CLUSTERKONFIGURATION #wsrep_cluster_name =mysql_clstr01wsrep_cluster_address =gcomm://192.0 .2.11,192.0.2.12wsrep_node_address =192.0.2.12wsrep_node_name =mysql-node-02wsrep_provider =/usr/lib64/libgalera_smm.so# STATE SNAPSHOT TRANSFER #wsrep_sst_method =xtrabackup-v2wsrep_sst-auth ="sst-sync-passwort:"# MyISAM-Datenbankreplikation ## Die MyISAM-Speicher-Engine wird derzeit nur experimentell unterstützt. ## wsrep_replicate_myisam =1# Settings / Tunning Options #innodb_locks_unsafe_for_binlog =1 innodb_autoinc_lock_mode =2 # innodb_flush_log_at_trx_commit =2# innodb_flush_method =O_DIRECT# innodb_file_per_table =1# innodb_buffer_pool_size =1386971136# innodb_buffer_pool_size =6G# innodb_log_file_size =256M# key_buffer =208045670# max_allowed_packet =67108864# thread_stack =192K# thread_cache_size =10# query_cache_limit =1M# query_cache_size =16M

Viele dieser Konfigurationseinstellungen sind auskommentiert. Sie sind enthalten, falls Sie die Datenbankleistung optimieren und/oder debuggen möchten. Wenn Sie fertig sind, speichern Sie die Datei und beenden Sie.

Wir sind jetzt bereit, den zweiten Knoten im Cluster zu starten. Wir sollten auch sicherstellen, dass wir die MySQL-Dienste so einstellen, dass sie beim Neustart des Servers automatisch gestartet werden.

service mysql start chkconfig mysql on

Während des ersten Starts startet der zweite Server den Synchronisationsprozess mit dem primären Knoten. Nach ein paar Minuten sind die MySQL-Dienste unseres zweiten Knotens betriebsbereit.

Wie oben beim primären Knoten richten wir diesen Knoten jetzt so ein, dass er direkt auf MySQL-Verbindungen antwortet, die vom Keepalived-Load-Balancing-Server empfangen werden. Zuerst richten wir den Server so ein, dass er nicht auf ARP-Anfragen für die VIP-Adresse antwortet.

echo "net.ipv4.conf.lo.arp_ignore =1">> /etc/sysctl.confecho "net.ipv4.conf.lo.arp_announce =2">> /etc/sysctl.confsysctl -p 

Als nächstes erstellen wir eine VIP-Adresse auf dem Loopback-Adapter. Erstellen Sie lo:1 Interface-Konfigurationsdatei und stellen Sie sie so ein, dass sie beim Booten automatisch startet.

nano /etc/sysconfig/network-scripts/ifcfg-lo:1

Fügen Sie die folgende Konfiguration in die Schnittstellenkonfigurationsdatei ein. Achten Sie darauf, die Beispiel-VIP-Adresse durch die Adresse zu ersetzen, die Sie verwenden werden.

DEVICE=lo:1BOOTPROTO=staticONBOOT=yesIPADDR=192.0.2.10NETMASK=255.255.255.255

Sobald wir die Konfigurationsdatei gespeichert haben, können wir die VIP-Adresse aufrufen.

ifup lo:1

Unser zweiter MySQL-Cluster-Knoten ist jetzt fertiggestellt.

Wir werden jetzt überprüfen, ob beide Server betriebsbereit und synchronisiert sind. Führen Sie von jedem Knoten aus den folgenden Befehl aus (wir benötigen unser MySQL-Root-Passwort):

mysql -h localhost -u root -p -e "STATUS ANZEIGEN;" | grep "wsrep_ready"

Wir sollten die Antwort „ON“ erhalten. Wenn wir eine andere Antwort erhalten, ist der Knoten kein Mitglied des Clusters.
.

4 – Keepalived-Knoten Nr. 3:Installation aus dem Repository

Dieser Abschnitt behandelt die Installation von Keepalived aus dem CentOS-Repository. Diese Version von Keepalived hinkt der neuesten Version mehrere Iterationen hinterher. Es funktioniert zwar für einfache Bereitstellungen, aber wenn Sie glauben, dass Sie die neueste Version und die darin enthaltenen Support-Fixes benötigen (z. B. verbesserte Unterstützung für IPv6 und VRRPv3), werfen Sie einen Blick auf das Änderungsprotokoll. Anweisungen zum Kompilieren der neuesten Version aus den Quellen finden Sie unten.

Erstens, wenn Sie die iptables-Firewall-Dienste ausführen (in den meisten CentOS 6.x-Installationen standardmäßig aktiviert ), müssen Sie die MySQL-Konnektivität aktivieren.

iptables -I INPUT 5 -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPTservice iptables save

Hinweis: Diese Befehle fügen jede dieser Firewall-Regeln direkt nach den Standard-INPUT-Regeln in Zeile 5 ein. Wenn Sie vor diesem Schritt Änderungen an Ihren iptables-Regeln vorgenommen haben, stellen Sie sicher, dass Sie diese Befehle mit den für Ihre iptables-Konfiguration relevanten Zeilennummern anpassen . Sehen Sie sich unseren Artikel über grundlegende IPTables an, wenn Sie Hilfe oder eine Auffrischung benötigen.

.

Jetzt können wir das Keepalived-Paket installieren.

yum installiere Keepalived

Als nächstes erstellen wir eine neue /etc/keepalived/keepalived.conf Konfigurationsdatei. Sie können die installierte Standardkonfiguration löschen oder sie in eine Sicherungsdatei verschieben, um später darauf zurückgreifen zu können, wenn Sie möchten. Ist dies ein Beispiel, verschieben wir es in eine Sicherungsdatei.

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.baknano /etc/keepalived/keepalived.conf

Kopieren Sie nun die folgende Konfiguration und fügen Sie sie in die keepalived.conf ein Datei.

Achten Sie darauf, die folgenden Beispiel-IP-Adressen durch die virtuellen und realen IP-Adressen zu ersetzen, die Sie in den obigen Schritten konfiguriert haben. Außerdem müssen Sie Ihr Keepalive-Benutzerkennwort von oben an der angegebenen Stelle hinzufügen.

.

! Konfigurationsdatei für keepalivedglobal_defs { router_id LVS_MYSQL_CLSTR1}### Virtuelle VRRP-IP-Konfiguration vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass keepalived } virtual_ipaddress { 192.0.2.10 }}### LVS Configurationvirtual_server 192.3.3 { delay_loop 2 ## LB Mode :Round-Robin lb_algo rr ## Direct Routing Response lb_kind DR protocol TCP # Real Server zum Hinzufügen, wenn alle real_server ausgefallen sind # sorry_server   real_server 192.0.2.11 3306 { weight 10 MISC_CHECK { misc_path "/etc/keepalived/check_scripts/check_db 192.0.2.11 keepalived <%keepalived password%>" misc_timeout 5 misc_dynamic } } real_server 192.0.2.12 3306 { weight 10 MISC_CHECK { misc_path "/etc/keepalived/check_scripts/check_db 192.0.2.12 keepalived <%Keepalived Passwo rd%>" misc_timeout 5 misc_dynamic } }}

Wir werden jetzt den MISC_CHECK erstellen Skript, das diese Konfiguration aufruft (es ist standardmäßig nicht vorhanden). Zuerst erstellen wir das Verzeichnis, dann erstellen wir die Skriptdatei und setzen den Dateimodus auf ausführbar.

mkdir -p /etc/keepalived/check_scriptstouch /etc/keepalived/check_scripts/check_dbchmod +x /etc/keepalived/check_scripts/check_dbnano /etc/keepalived/check_scripts/check_db

Kopieren Sie nun den unten stehenden Bash-Code und fügen Sie ihn in die Datei check_db ein .

#!/bin/bashmysql_host="${1}";mysql_user="${2}";mysql_pass="${3}";node_response=$(mysql -h ${mysql_host} -u ${ mysql_user} -p${mysql_pass} -e "SHOW GLOBAL VARIABLES;" | grep "wsrep_node_address" | awk '{ print $2 }');if [ "${node_response}" =="${mysql_host}" ]then # echo "Hostname stimmt überein"; exit 0;else # echo "Hostname not matched"; Ausfahrt 1;fi

Speichern Sie die Datei und beenden Sie sie.

Wir sind jetzt bereit, die Keepalived-Dienste zu starten. Wir werden sie auch so einstellen, dass sie bei einem Systemneustart automatisch gestartet werden.

chkconfig keepalived on/etc/init.d/keepalived start

Unser Keepalived-Server ist jetzt betriebsbereit. Ausführliche Anweisungen zum Anpassen Ihrer Keepalived-Konfiguration finden Sie im Benutzerhandbuch.

Wir sollten jetzt einen voll funktionsfähigen Multi-Master-MySQL-Cluster mit einem einzigen VIP für die Konnektivität haben. Wir können Client-Verbindungen auf unsere VIP-Adresse (192.0.2.10) verweisen und die Verbindung wird im Round-Robin-Modus an jeden echten Server in unserem Cluster weitergeleitet.

Da wir Keepalived mit einer VRRP-VIP-Konfiguration verwendet haben, können Sie ganz einfach einen zweiten Keepalived-Server zum Netzwerk hinzufügen, um eine vollständige Redundanz Ihres Load-Balancer-Setups und Ihres MySQL-Clusters bereitzustellen.
.

Keepalived-Knoten Nr. 3:(Optional) Kompilieren aus der Quelle

Wenn wir die neueste Version von Keepalived wollen, müssen wir die notwendigen Tools installieren, um das Keepalived-Paket aus den Quellen zu erstellen.

yum install -y kernel-headers kernel-devel gcc make popt-devel openssl-devel ipvsadm net-snmp-devel git mysql;
  • popt-devel :Wird für das Parsen der Befehlszeile verwendet
  • OpenSSL :Diese Bibliothek wird für MD5- und SSL-Unterstützung benötigt
  • ipvsadm :Wird verwendet, um die virtuelle Servertabelle im Linux-Kernel zu verwalten oder zu überprüfen
  • net-snmp :Bietet SNMP-Überwachung

.
Da die Abhängigkeiten jetzt vorhanden sind, müssen wir die neueste Version des Quellcodes herunterladen. Wir können die neueste Version auf der Download-Seite von Keepalived.org finden, oder wir können das GIT-Repository verwenden, um den neuesten Build herunterzuladen. Für diese Installation verwenden wir das GIT-Repository.

mkdir -p /tmp/keepalivedgit-Klon https://github.com/acassen/keepalived.git /tmp/keepalivedcd /tmp/keepalived

Nachdem wir den Quellcode heruntergeladen und extrahiert haben, können wir das Keepalived-Paket für unseren Linux-Kernel kompilieren.

./configure --enable-snmpmakemake install

Nach jedem Befehl sollten wir die Ausgabe noch einmal überprüfen, um sicherzustellen, dass während jedes Prozesses keine Fehler aufgetreten sind. Sobald alles korrekt kompiliert ist, können wir die erforderlichen Symlinks erstellen.

ln -s /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ln -s /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/ln -s /usr/local/etc/keepalived/ /etc/keepalived

Als nächstes müssen wir /etc/init.d/keepalived aktualisieren Startup-Skript, um den richtigen Pfad für den Daemon aufzurufen.

nano /etc/init.d/keepalived

Ersetzen Sie hier die Anwendungsaufrufzeile daemon keepalived mit dem vollständigen Pfad zur Anwendung, wie unten.

#!/bin/sh## Startskript für den Keepalived-Daemon#...start() { echo -n $"Starting $prog:" daemon /usr/local/sbin/keepalived ${KEEPALIVED_OPTIONS} RETVAL=$? echo [ $RETVAL -eq 0 ] &&touch /var/lock/subsys/$prog}...

Jetzt sollten wir in der Lage sein, den Keepalived-Daemon zu starten und die Konfiguration wie oben fortzusetzen.

Atlantic.Net

Atlantic.net bietet VPS-Hosting sowie verwaltete Server-Hosting-Dienste an, die eine Schicht von geschäftswichtigen verwalteten Diensten zu Ihren Hosting-Paketen beinhalten. Kontaktieren Sie uns noch heute für weitere Informationen.


Linux
  1. So erstellen Sie eine Datenbank in MySQL mit MySQL Workbench

  2. So installieren Sie Lighttpd mit PHP5 FastCGI und MySQL auf Fedora 16

  3. So installieren Sie Nginx mit PHP-FPM und MySQL auf Fedora 16 „Verne“

  4. So installieren Sie Lighttpd mit PHP5 FastCGI und MySQL unter openSUSE 12.1

  5. So installieren Sie Nginx mit PHP-FPM und MySQL unter openSUSE 12.1

So installieren Sie Lighttpd mit PHP-FPM 7 und MySQL 5.7 auf Ubuntu 18.04 LTS

So installieren Sie Lighttpd mit PHP-FPM und MySQL unter Ubuntu 20.04 LTS

So richten Sie Percona-Cluster mit HAproxy Loadbalancer unter CentOS 7 ein

So erstellen Sie einen Aktiv-Aktiv-Aktiv-Cluster mit RHEL 8 und Percona MySQL

So stellen Sie eine PHP-Anwendung mit Nginx und MySQL mit Docker und Docker Compose bereit

So installieren und konfigurieren Sie WordPress mit Ansible