Ubuntu erstellt Mysql+Keepalived-Hochverfügbarkeitsimplementierung (Dual-Active Hot Standby)

Ubuntu erstellt Mysql+Keepalived-Hochverfügbarkeitsimplementierung (Dual-Active Hot Standby)

Mysql5.5 Dual-Maschine-Hot-Standby

Durchführung

Installieren Sie zwei Mysql

Installieren Sie MySQL 5.5

sudo apt-get update

apt-get install aptitude
Eignungsinstallation MySQL-Server-5.5
oder sudo apt-cache search mariadb-server
apt-get install -y mariadb-server-5.5

Deinstallieren

sudo apt-get entfernen mysql-*
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

Konfigurieren von Berechtigungen

vim /etc/mysql/my.cnf
#Bind-Adresse = 127.0.0.1

mysql -u root -p
gewähre alles auf *.* an root@'%', identifiziert durch 'root' mit Berechtigungsoption;
Berechtigungen leeren;

Konfigurieren Sie zwei MySQL-Server für die Master-Master-Synchronisierung

Knoten 1 konfigurieren

vim /etc/mysql/my.cnf

Server-ID = 1 #Knoten-ID
log_bin = mysql-bin.log #logbinlog_format = "ROW" #Logformat auto_increment_increment = 2 #ID-Intervall automatisch erhöhen (= Anzahl der Knoten, um ID-Konflikte zu vermeiden)
auto_increment_offset = 1 #Startwert der Auto-Increment-ID (Knoten-ID)
binlog_ignore_db=mysql #Nicht synchronisierte Datenbank binlog_ignore_db=information_schema
binlog_ignore_db=Leistungsschema

Starten Sie MySQL neu

Dienst MySQL Neustart
mysql -u root -p

Notieren Sie die Binlog-Protokollposition von Knoten 1

Masterstatus anzeigen;
mysql-bin.000001 245 mysql, Informationsschema, Leistungsschema

Knoten 2 konfigurieren

vim /etc/mysql/my.cnf

Server-ID = 2
log_bin = mysql-bin.log                    
relay_log = mysql-relay-bin.log #Relay-Protokoll log_slave_updates = ON #Nachdem das Relay-Protokoll ausgeführt wurde, werden die Änderungen im Protokoll aufgezeichnet read_only = 0
binlog_format = "ZEILE"
auto_increment_increment = 2
auto_increment_offset = 2
binlog_ignore_db=mysql
binlog_ignore_db=Informationsschema
binlog_ignore_db=Leistungsschema
replicate_ignore_db=mysql
replicate_ignore_db=Informationsschema
replicate_ignore_db=Leistungsschema

Konfigurieren von Master und Slave

mysql -u root -p

ÄNDERN SIE MASTER IN 
       MASTER_HOST='192.168.1.21', 
       MASTER_USER='root', 
       MASTER_PASSWORD='root', 
       MASTER_LOG_FILE='mysql-bin.000001', 
       MASTER_LOG_POS=245;

#Synchronisation starten, Slave starten

#Überprüfen Sie den Synchronisierungsstatus Slave_IO_Running und Slave_SQL_Running, beide müssen Ja sein       
Slave-Status anzeigen;  

Notieren Sie die Binlog-Protokollposition von Knoten 2

Masterstatus anzeigen;

mysql-bin.000001 1029 mysql, Informationsschema, Leistungsschema

Konfigurieren Sie den Master (Knoten 1)

vim /etc/mysql/my.cnf

relay_log = mysql-relay-bin.log
log_slave_updates = EIN
schreibgeschützt = 0
replicate_ignore_db=mysql
replicate_ignore_db=Informationsschema
replicate_ignore_db=Leistungsschema

Synchronisierung aktivieren

mysql -u root -p

ÄNDERN SIE MASTER IN 
       MASTER_HOST='192.168.1.20', 
       MASTER_USER='root', 
       MASTER_PASSWORD='root', 
       MASTER_LOG_FILE='mysql-bin.000001', 
       MASTER_LOG_POS=1029;

#Synchronisation starten, Slave starten

#Überprüfen Sie den Synchronisierungsstatus Slave_IO_Running und Slave_SQL_Running, beide müssen Ja sein       
Slave-Status anzeigen;

Ausnahmebehandlung

Die Master-Infostruktur konnte nicht initialisiert werden, weitere Fehlermeldungen finden sich im MySQL-Fehlerlog
Lösung: Slave zurücksetzen

Installieren und Konfigurieren von Keepalived

Installieren Sie Keepalived

#Hängt ab von sudo apt-get install -y libssl-dev
sudo apt-get install -y openssl 
sudo apt-get install -y libpopt-dev
sudo apt-get install -y libnl-dev libnl-3-dev libnl-genl-3.dev
apt-get-Installations-Daemon
apt-get installiere libc-dev
apt-get installiere libnfnetlink-dev
apt-get installiere libnl-genl-3.dev

#installieren Sie apt-get install keepalived

#Kompilieren und installieren Sie cd /usr/local
wget https://www.keepalived.org/software/keepalived-2.2.2.tar.gz
tar -zxvf keepalived-2.2.2.tar.gz 
mv keepalived-2.2.2 keepalived
./configure --prefix=/usr/local/keepalived
sudo make und make install

#Öffnen Sie das Protokoll sudo vim /etc/rsyslog.d/50-default.conf 

*.=Info;*.=Hinweis;*.=Warnung;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none -/var/log/nachrichten
        
sudo service rsyslog Neustart 
tail -f /var/log/messages

sudo mkdir /etc/sysconfig
sudo cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
sudo cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
sudo cp /usr/local/keepalived/sbin/keepalived /sbin/
sudo mkdir /etc/keepalived
sudo cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

Konfigurieren der Knoteninformationen

Knoten 1 192.168.1.21

vim /etc/keepalived/keepalived.conf

global_defs {
   router_id MYSQL_HA #Aktueller Knotenname}
vrrp_instance VI_1 {    
    Status BACKUP #Beide Konfigurationsknoten sind BACKUP
    Schnittstelle eth0 #Netzwerkschnittstelle zum Binden der virtuellen IP virtual_router_id 51 #VRRP-Gruppenname, die Einstellungen beider Knoten müssen identisch sein, um anzuzeigen, dass jeder Knoten zur selben VRRP-Gruppe gehört Priorität 101 #Priorität des Knotens, ändern Sie die Priorität des anderen Knotens auf eine niedrigere advert_int 1 #Sendeintervall für Multicast-Informationen, die Einstellungen beider Knoten müssen identisch sein nopreempt #Nicht preempten, nur auf Maschinen mit hoher Priorität einstellen und nicht auf Maschinen mit niedriger Priorität einstellen Authentifizierung { #Authentifizierungsinformationen festlegen, beide Knoten müssen konsistent sein auth_type PASS
        Auth_Passwort 123456
    }
    virtual_ipaddress { #Geben Sie die virtuelle IP an, beide Knoten müssen auf die gleiche Adresse eingestellt sein: 192.168.1.111
    }
}
virtual_server 192.168.1.111 3306 { #Konfiguration des virtuellen Linux-Servers (LVS) delay_loop 2 #alle 2 Sekunden den Status des realen Servers prüfen lb_algo wrr #LVS-Planungsalgorithmus, rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind DR #LVS-Clustermodus, NAT|DR|TUN
    persistence_timeout 60 #Sitzungshaltezeit Protokoll TCP #Ist das verwendete Protokoll TCP oder UDP

    real_server 192.168.1.21 3306 {
        Gewicht 3 #Gewicht notify_down /usr/local/bin/mysql.sh #Skript, das ausgeführt wird, nachdem ein Dienstausfall erkannt wurde TCP_CHECK {
            connect_timeout 10 #Verbindungs-Timeout nb_get_retry 3 #Anzahl der Wiederverbindungen delay_before_retry 3 #Wiederverbindungsintervall connect_port 3306 #Integritätscheck-Port}
    }    
}

Knoten 2 192.168.1.20

vim /etc/keepalived/keepalived.conf

global_defs {
   router_id MYSQL_HA #Aktueller Knotenname}
vrrp_instance VI_1 {
    Status BACKUP #Beide Konfigurationsknoten sind BACKUP
    Schnittstelle eth0 #Netzwerkschnittstelle zum Binden der virtuellen IP virtual_router_id 51 #VRRP-Gruppenname, die Einstellungen beider Knoten müssen identisch sein, um anzuzeigen, dass jeder Knoten zur selben VRRP-Gruppe gehört Priorität 100 #Knotenpriorität, die andere Priorität sollte niedriger sein advert_int 1 #Sendeintervall für Multicast-Informationen, die Einstellungen beider Knoten müssen identisch sein nopreempt #Nicht preempten, nur auf Maschinen mit hoher Priorität einstellen und nicht auf Maschinen mit niedriger Priorität einstellen Authentifizierung { #Authentifizierungsinformationen festlegen, beide Knoten müssen konsistent sein auth_type PASS
        Auth_Passwort 123456
    }
    virtual_ipaddress { #Geben Sie die virtuelle IP an, beide Knoten müssen auf die gleiche Adresse eingestellt sein: 192.168.1.111
    }
}
virtual_server 192.168.1.111 3306 { #Konfiguration des virtuellen Linux-Servers (LVS) delay_loop 2 #alle 2 Sekunden den Status des realen Servers prüfen lb_algo wrr #LVS-Planungsalgorithmus, rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind DR #LVS-Clustermodus, NAT|DR|TUN
    persistence_timeout 60 #Sitzungshaltezeit Protokoll TCP #Ist das verwendete Protokoll TCP oder UDP

    real_server 192.168.1.20 3306 {
        Gewicht 3 #Gewicht notify_down /usr/local/bin/mysql.sh #Skript, das ausgeführt wird, nachdem ein Dienstausfall erkannt wurde TCP_CHECK {
            connect_timeout 10 #Verbindungs-Timeout nb_get_retry 3 #Anzahl der Wiederverbindungen delay_before_retry 3 #Wiederverbindungsintervall connect_port 3306 #Integritätscheck-Port}
    }
}

Schreiben von Skripten zur Ausnahmebehandlung

vim /usr/local/bin/mysql.sh

#!/bin/sh
alles töten, am Leben bleiben

Zuweisen von Berechtigungen

chmod +x /usr/local/bin/mysql.sh
###Testen Sie den Neustart von Keepalived

Dienst Keepalived Neustart

Protokolle anzeigen

tail -f /var/log/messages

Virtuelle IP anzeigen

IP-Adresse # oder IP a oder ifconfig

#Der Masterknoten hat eine virtuelle IP
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast Status UP-Gruppe Standard qlen 1000
    Link/Ether 52:54:9e:17:53:e5 brd ff:ff:ff:ff:ff:ff:ff
    inet 192.168.1.21/24 brd 192.168.1.255 Bereich global eth0
       valid_lft für immer preferred_lft für immer
    inet 192.168.1.111/32 Bereich global eth0
       valid_lft für immer preferred_lft für immer

Beenden Sie den MySQL-Dienst auf dem Masterknoten.

Dienst MySQL stoppen

Protokollinformationen

#Masterknoten 10. Aug 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: TCP-Verbindung zu [192.168.1.20]:3306 fehlgeschlagen!!!
10. August 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: Dienst [192.168.1.20]:3306 wird aus VS [192.168.1.111]:3306 entfernt
10. Aug. 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: Ausführen von [/usr/local/bin/mysql.sh] für Dienst [192.168.1.20]:3306 in VS [192.168.1.111]:3306
10. August 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: Verlorenes Quorum 1-0=1 > 0 für VS [192.168.1.111]:3306
10. August 15:00:30 i-7jaope92 Keepalived_vrrp[4950]: VRRP_Instance(VI_1) sendet 0 Priorität
10. August 15:00:30 i-7jaope92 Kernel: [100918.976041] IPVS: __ip_vs_del_service: eingeben

#Slave-Knoten Aug 10 15:00:31 i-6gxo6kx7 Keepalived_vrrp[718]: VRRP_Instance(VI_1) Übergang in den MASTER-STATUS
10. Aug 15:00:32 i-6gxo6kx7 Keepalived_vrrp[718]: VRRP_Instance(VI_1) wechselt in den MASTER STATE

Die virtuelle IP wandert vom Master-Knoten zum Slave-Knoten

IP-Adresse

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast Status UP-Gruppe Standard qlen 1000
    Link/Ether 52:54:9e:e7:26:5c brd ff:ff:ff:ff:ff:ff:ff
    inet 192.168.1.20/24 brd 192.168.1.255 Bereich global eth0
       valid_lft für immer preferred_lft für immer
    inet 192.168.1.111/32 Bereich global eth0
       valid_lft für immer preferred_lft für immer

Mysql-Verbindungstest

mysql -h 192.168.1.111 -u root -p 

Dies ist das Ende dieses Artikels zum Erstellen von MySQL + Keepalived-Hochverfügbarkeit auf Ubuntu (Dual-Active Hot Standby). Weitere verwandte Inhalte zu MySQL + Keepalived-Hochverfügbarkeit finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Keepalived+HAProxy zur Implementierung einer MySQL-Konfiguration für den hochverfügbaren Lastenausgleich
  • Tutorial zur Verwendung von HAProxy zum Erkennen von MySQL-Replikationsverzögerungen
  • MySQL Master-Slave-Konfiguration und Analyse des Haproxy- und Keepalived-Konstruktionsprozesses

<<:  HTML-Framework_Powernode Java Academy

>>:  Eine allgemeine Methode zur Implementierung eines unendlichen Textkarussells mit nativem CSS

Artikel empfehlen

Tutorial zur Installation von Ubuntu Server in Vmware

In diesem Artikel finden Sie das grafische Tutori...

Ubuntu16.04 Installation mysql5.7.22 Grafik-Tutorial

Installations-Tutorial für VMware12.0+Ubuntu16.04...

Responsive Webdesign lernen (2) — Können Videos responsiv gemacht werden?

Rezension der vorherigen Folge: Gestern haben wir...

Detaillierte Erklärung der Verwendung von overflow:auto

Bevor ich mit dem Haupttext beginne, werde ich ei...

Beispielerklärung für Ausführungskontext und Ausführungsstapel in JavaScript

JavaScript - Prinzipienreihe Wenn wir in der tägl...

Die große Rolle von HTML-Meta

Es gibt zwei Metaattribute: Name und http-equiv. D...

So ersetzen Sie alle Tags im HTML-Text

(?i) bedeutet, dass die Groß-/Kleinschreibung nich...