Informationen zur Verwendung von Keepalived zum Erreichen eines automatischen Neustarts von Nginx und einer hohen Verfügbarkeit von Dual Active Hot Standby

Informationen zur Verwendung von Keepalived zum Erreichen eines automatischen Neustarts von Nginx und einer hohen Verfügbarkeit von Dual Active Hot Standby

1. Übersicht

Zuvor haben wir Keepalived verwendet, um eine hohe Verfügbarkeit von Nginx-Diensten im Dual-Machine-Aktiv-Standby-Modus zu erreichen, aber es gab mehrere Probleme, die nicht gelöst werden konnten. Lassen Sie uns diese heute gemeinsam besprechen.

1) Wenn beim Dual-Machine-Active-Standby-Mechanismus der Keepalived-Dienst ausfällt, wird die Standby-Maschine automatisch aktiviert, um Dienste bereitzustellen. Wenn der Nginx-Dienst jedoch aufgrund übermäßiger Belastung ausfällt, zeigt die virtuelle IP nicht auf die Standby-Maschine.

2) Das Merkmal des Dual-Machine-Active-Standby besteht darin, dass nur eine Maschine Dienste bereitstellt und die Standby-Maschine erst dann Dienste bereitstellt, wenn der Keepalived-Dienst der Host-Maschine ausfällt, was zu einer enormen Ressourcenverschwendung führt.

3) Derzeit ist es beliebt, Cloud-Server zu mieten, um die Produkte des Unternehmens zu betreiben. Unterstützt der Cloud-Server virtuelle IPs?

Heute werden wir die drei oben genannten Fragen erklären.

2. Verwenden Sie Keepalived, um Nginx automatisch neu zu starten

2.1 Nginx mit Shell-Skript neu starten

Keepalived kann Nginx nicht direkt starten, aber Shell-Skripte ausführen. Deshalb müssen wir Nginx hier mit der Hilfe von Shell-Skripten starten.

Erstellen Sie im Verzeichnis /etc/keepalived ein neues Skript check_nginx.sh. Der spezifische Inhalt des Skripts ist wie folgt:

#!/bin/bash

# Führen Sie den Befehl aus, um den Nginx-Prozess anzuzeigen und ihn in die Variable A einzufügen A=`ps -C nginx --no-header | wc -l`

# Stellen Sie fest, ob es ausgefallen ist. Wenn es ausgefallen ist, versuchen Sie, es neu zu starten. Wenn der Neustart fehlschlägt, stoppen Sie Keepalived
wenn [ $A -eq 0 ];dann
    /usr/local/nginx/sbin/nginx
    Schlaf 3
    wenn [ `ps -C nginx --no-header | wc -l` -eq 0 ];dann
        alles töten, am Leben bleiben

    fi
fi

Das Skript stammt aus dem Internet

2.2 Erteilen Sie dem Skript Ausführungsberechtigungen

# chmod +x /etc/keepalived/check_nginx.sh

2.3 Konfiguration zur Keepalived-Konfigurationsdatei hinzufügen

Öffnen Sie die Keepalived-Konfigurationsdatei, # vi /etc/keepalived/keepalived.conf

Ändern Sie die Konfigurationsdatei und fügen Sie die Konfiguration von vrrp_script und track_script hinzu. Die Konfiguration lautet wie folgt:

global_defs {
   
   # Global eindeutige Hostkennung router_id server_a
   
}

vrrp_script check_nginx {
    Skript "/etc/keepalived/check_nginx.sh"
    Intervall 3 # Führt das Shell-Skript alle 3 Sekunden aus. Gewicht 10 # Wenn das Skript erfolgreich ausgeführt wird, erhöht sich das Gewicht um 10
}

vrrp_instance VI_1 {

    # Gibt an, ob es sich um einen Master-Knoten oder einen Backup-Knoten handelt. Der Wert ist MASTER oder BACKUP
    Zustand MASTER
    #Gebundene Netzwerkkartenschnittstelle ens33
    # Virtuelle Router-ID, stellen Sie sicher, dass die primären und Backup-Knoten konsistent sind virtual_router_id 51
    # Gewichtspriorität 100
    # Synchrone Prüfzeit, das Standardintervall beträgt 1 Sekunde advert_int 1
    # Passwort für Authentifizierung und Autorisierung. Alle aktiven und Standby-Server müssen die gleiche Authentifizierung haben {
        Authentizitätstyp PASS
        Auth_Passwort 1111
    }

    Titel_Skript {
        check_nginx
    }

    # Virtuelle IP
    virtuelle_IP-Adresse {
        192.168.1.88
    }
}

2.4 Keepalived-Dienst neu starten

Nach dem Neustart stellte ich fest, dass Nginx kurz nach dem Stoppen automatisch startete.

3. Aufbau eines Dual-Active-Hot-Standby

3.1 Übersicht über Dual Active Hot Standby

Aufgrund des Dual-Machine-Master-Slave-Mechanismus stellt immer nur ein Server Dienste für die Außenwelt bereit und die Konfigurationen der Master- und Backup-Maschinen sind identisch, was zu einer enormen Ressourcenverschwendung führt.

Dual-Active Hot Standby löst dieses Problem. Das Prinzip von Dual-Active Hot Standby besteht darin, dass zwei Server Keepalived verwenden, um sich gegenseitig als aktives Backup zu dienen, sodass zwei virtuelle IPs erforderlich sind. Anschließend wird mithilfe der DNS-Polling-Konfiguration ein Domänenname im Round-Robin-Verfahren an die beiden virtuellen IPs weitergeleitet, wodurch letztendlich eine hohe Verfügbarkeit erreicht wird.

3.2 Szenariobeschreibung

Virtuelle IP1: 192.168.1.88

Virtuelle IP2: 192.168.1.66

Eine Server-IP (primär): 192.168.1.144

B-Server-IP (Backup): 192.168.1.22

3.3 Ändern der A-Serverkonfiguration

Die Konfiguration ist wie folgt:

! Konfigurationsdatei für Keepalived

global_defs {
   
   # Global eindeutige Hostkennung router_id server_a
   
}

vrrp_instance VI_1 {

    # Gibt an, ob es sich um einen Master-Knoten oder einen Backup-Knoten handelt. Der Wert ist MASTER oder BACKUP
    Zustand MEISTER
    #Gebundene Netzwerkkartenschnittstelle ens33
    # Virtuelle Router-ID, stellen Sie sicher, dass die primären und Backup-Knoten konsistent sind virtual_router_id 51
    # Gewichtspriorität 100
    # Synchrone Prüfzeit, das Standardintervall beträgt 1 Sekunde advert_int 1
    # Passwort für Authentifizierung und Autorisierung. Alle aktiven und Standby-Server müssen die gleiche Authentifizierung haben {
        Authentizitätstyp PASS
        Auth_Passwort 1111
    }
    # Virtuelle IP
    virtuelle_IP-Adresse {
        192.168.1.88
    }
}

vrrp_instance VI_2 {

    # Gibt an, ob es sich um einen Master-Knoten oder einen Backup-Knoten handelt. Der Wert ist MASTER oder BACKUP
    Status BACKUP
    #Gebundene Netzwerkkartenschnittstelle ens33
    # Virtuelle Router-ID, stellen Sie sicher, dass die primären und Backup-Knoten konsistent sind virtual_router_id 52
    # Gewichtspriorität 80
    # Synchrone Prüfzeit, das Standardintervall beträgt 1 Sekunde advert_int 1
    # Passwort für Authentifizierung und Autorisierung. Alle aktiven und Standby-Server müssen die gleiche Authentifizierung haben {
        Authentizitätstyp PASS
        Auth_Passwort 1111
    }
    # Virtuelle IP
    virtuelle_IP-Adresse {
        192.168.1.66
    }
}

3.4 Ändern Sie die B-Serverkonfiguration

Die Konfiguration ist wie folgt:

! Konfigurationsdatei für Keepalived

global_defs {
   
   Router-ID Server_b
   
}

vrrp_instance VI_1 {
    
    # Auf Sicherungsstatus BACKUP setzen
    Schnittstelle ens33
    virtuelle_Router_ID 51
    # Das Gewicht ist niedriger eingestellt als die Hostpriorität 90
    Anzeige_int 1
    Authentifizierung
        Authentizitätstyp PASS
        Auth_Passwort 1111
    }
    # Die virtuelle IP muss für den primären und den Backup-Server auf die gleiche virtuelle IP-Adresse eingestellt werden.
        192.168.1.88
    }
}

vrrp_instance VI_2 {
    
    # Auf Masterstatus MASTER setzen
    Schnittstelle ens33
    virtuelle_Router_ID 52
    # Das Gewicht ist niedriger als die Hostpriorität 100 eingestellt
    Anzeige_int 1
    Authentifizierung
        Authentizitätstyp PASS
        Auth_Passwort 1111
    }
    # Die virtuelle IP muss für den primären und den Backup-Server auf die gleiche virtuelle IP-Adresse eingestellt werden.
        192.168.1.66
    }
}

3.5 Keepalived auf beiden Servern neu starten

Starten Sie Keepalived einfach neu.

3.6 DNS-Round-Robin einrichten

Wenden Sie sich an Ihren Netzbetreiber, um das Problem zu beheben.

4. Lastausgleich für Cloud-Server

Heutzutage entscheiden sich viele Unternehmen für die Anmietung von Cloud-Servern zum Betrieb ihrer Produkte, da dies kostengünstiger und stabiler ist und Fachleute für Betrieb und Wartung zuständig sind.

Allerdings unterliegen Sie bei der Nutzung eines Cloud-Servers den Beschränkungen des Cloud-Dienstbetreibers.

Nehmen wir als Beispiel die virtuelle IP. Einige Cloud-Dienstbetreiber unterstützen sie nicht.

Wenn die virtuelle IP nicht unterstützt wird, kann nur auf die Keepalived-Lösung verzichtet werden.

Aber auch wenn Keepalived nicht verwendet werden kann, gibt es immer noch Lösungen für die hohe Verfügbarkeit von Nginx. Viele Cloud-Dienstanbieter haben ihre eigenen Lastausgleichsdienste eingeführt (z. B. Lastausgleichs-SLB von Alibaba Cloud und Lastausgleichs-CLB von Tencent Cloud). Wir können es einfach direkt mieten und müssen es nicht selbst konfigurieren.

5. Übersicht

Heute habe ich über den automatischen Neustart von Nginx durch KeepAlived, den Aufbau der Dual-Active-Hot-Standby-Hochverfügbarkeit von Keepalived und die Lastausgleichslösung für Cloud-Server gesprochen. Ich hoffe, es wird für alle hilfreich sein.

Dies ist das Ende dieses Artikels über die Verwendung von Keepalived zur Implementierung des automatischen Neustarts von Nginx und der Dual-Active-Hot-Standby-Hochverfügbarkeit. Weitere Informationen dazu, wie Keepalived den automatischen Neustart von Nginx implementieren kann, 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:
  • Beispiel für die Implementierung eines Master-Slave-Hot-Standby mit Docker+keepalived+nginx
  • Nginx + Keepalived realisiert Hot-Standby von Dual-Maschinen
  • Konfigurationsmethode für Keepalived Dual-Machine Hot Standby Nginx
  • Nginx implementiert den Aufbau eines Clusters mit hoher Verfügbarkeit (Keepalived+Haproxy+Nginx)
  • Keepalived implementiert Nginx-Lastausgleich und Beispielcode für hohe Verfügbarkeit
  • So implementieren Sie Dual-Machine-Master und Backup mit Nginx+Keepalived
  • Detaillierte Erläuterung der hochverfügbaren Master-Slave-Konfiguration von nginx+keepalived

<<:  Der Unterschied zwischen dem Wissen von Frontend-Entwicklern und Künstlern in der Website-Entwicklung

>>:  Kleines Problem mit dem Abstand zwischen Label und Eingabe im Google Browser

Artikel empfehlen

CSS zum Implementieren von QQ-Browserfunktionen

Code Wissenspunkte 1. Kombinieren Sie fullpage.js...

Lösung für MySql-Fehler 1698 (28000)

1. Problembeschreibung: MysqlERROR1698 (28000)-Lö...

JavaScript implementiert das Klassenlotterie-Applet

In diesem Artikel wird der spezifische JavaScript...

Docker-Fallanalyse: Erstellen eines Redis-Dienstes

Inhaltsverzeichnis 1 Mount-Verzeichnisse und Date...

So verwenden Sie die Debouce-Anti-Shake-Funktion in Vue

Inhaltsverzeichnis 1. Anti-Shake-Funktion 2. Verw...

So verhindern Sie, dass sich vsftpd-Benutzer über SSH anmelden

Vorwort vsftp ist eine benutzerfreundliche und si...

So visualisieren Sie skizzierte Diagramme in Vue.js mit RoughViz

einführen Ein Diagramm ist eine grafische Darstel...

4 Möglichkeiten zur Implementierung von Routing-Übergangseffekten in Vue

Vue-Router-Übergänge sind eine schnelle und einfa...

Erläuterung verschiedener Möglichkeiten zum Ausführen von Tomcat unter Linux

Tomcat unter Linux starten und herunterfahren Sta...

Stellen Sie IE8 so ein, dass Code im IE7-Stil verwendet wird

<meta http-equiv="x-ua-kompatibel" co...

MySQL verwendet Ereignisse, um geplante Aufgaben abzuschließen

Ereignisse können die Ausführung von SQL-Code ein...

Vue integriert Tencent Map zur Implementierung der API (mit DEMO)

Inhaltsverzeichnis Hintergrund zum Schreiben Proj...