Vorbereitung: 192.168.16.128 192.168.16.129 Zwei virtuelle Maschinen. Installieren Sie Nginx Installieren Sie Nginx Aktualisieren Sie die Yum-Quelldatei: rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo Installieren Sie Nginx: yum -y installiere nginx Betriebsbefehl: systemctl start nginx; #Nginx starten systemctl stop nginx; #Stoppen Sie Nginx Was ist Hochverfügbarkeit? Hohe Verfügbarkeit (HA) ist einer der Faktoren, die beim Entwurf einer verteilten Systemarchitektur berücksichtigt werden müssen. Normalerweise bezieht es sich auf die Reduzierung der Zeit, in der das System durch Design keine Dienste bereitstellen kann. Wenn ein System jederzeit Dienste bereitstellen kann, liegt die Verfügbarkeit bei 100 %, aber Unfälle passieren. Wir können die Serviceausfälle also nur so weit wie möglich reduzieren. Problem gelöst? In Produktionsumgebungen wird Nginx häufig als Reverse-Proxy verwendet, um externe Dienste bereitzustellen. Eines Tages wird es bei Nginx jedoch unvermeidlich zu Ausfällen kommen, beispielsweise zu Serverausfallzeiten. Wenn Nginx ausfällt, sind alle externen Schnittstellen unzugänglich. Obwohl wir nicht garantieren können, dass der Server zu 100 % verfügbar ist, müssen wir einen Weg finden, diese Tragödie zu vermeiden. Heute verwenden wir Keepalived, um Nginx zu implementieren Hohe Verfügbarkeit. Hot-Standby-Lösung für zwei Maschinen Diese Lösung ist die häufigste Hochverfügbarkeitslösung bei inländischen Unternehmen. Dual-Machine-Hot-Standby bedeutet eigentlich, dass ein Server einen Dienst bereitstellt, während der andere sich für einen bestimmten Dienst im Standby-Status befindet. Wenn ein Server nicht verfügbar ist, übernimmt der andere seinen Platz. Was ist Keepalived? Die Keepalived-Software wurde ursprünglich für die LVS-Lastausgleichssoftware entwickelt, um den Status jedes Serviceknotens im LVS-Clustersystem zu verwalten und zu überwachen. Später wurde die VRRP-Funktion (Virtual Router Redundancy Protocol) hinzugefügt, um eine hohe Verfügbarkeit zu erreichen. Daher kann Keepalived neben der Verwaltung von LVS-Software auch als Hochverfügbarkeitslösungssoftware für andere Dienste (wie Nginx, Haproxy, MySQL usw.) verwendet werden. Failover-Mechanismus Die Failover-Übertragung zwischen Keepalived-Hochverfügbarkeitsdiensten wird durch VRRP erreicht. Wenn der Keepalived-Dienst normal funktioniert, sendet der Haupt-Masterknoten kontinuierlich (Multicast-)Heartbeat-Nachrichten an den Backup-Knoten, um dem Backup-Knoten mitzuteilen, dass er noch aktiv ist. Wenn der Haupt-Masterknoten ausfällt, kann er keine Heartbeat-Nachrichten senden und der Backup-Knoten kann den Heartbeat vom Haupt-Masterknoten nicht mehr erkennen. Daher ruft er sein eigenes Übernahmeprogramm auf, um die IP-Ressourcen und -Dienste des Haupt-Masterknotens zu übernehmen. Wenn der Haupt-Masterknoten wiederhergestellt ist, gibt der Backup-Knoten die IP-Ressourcen und -Dienste frei, die er beim Ausfall des Hauptknotens übernommen hat, und kehrt zu seiner ursprünglichen Backup-Rolle zurück. Implementierungsprozess Installieren Sie Keepalived Sie können es direkt mit yum installieren, wodurch Abhängigkeiten automatisch installiert werden: yum -y installiere Keepalived Ändern Sie die Keepalived-Konfigurationsdatei des Hosts (192.168.16.128) Die von yum installierte Konfigurationsdatei wird unter /etc/keepalived generiert: vi keepalived.conf keepalived.conf: #Erkennungsskript vrrp_script chk_http_port { Skript "/usr/local/src/check_nginx_pid.sh" #Heartbeat-Ausführungsskript, um festzustellen, ob Nginx gestartet ist. Intervall 2 #(das Intervall zwischen den Skriptausführungen in Sekunden) Gewicht 2 #Gewicht} #vrrp Instanzdefinitionsabschnitt vrrp_instance VI_1 { state MASTER #Geben Sie die Keepalived-Rolle an, MASTER ist die Hauptrolle, BACKUP ist die Sicherungsrolleinterface ens33 #Die Netzwerkschnittstellenkarte, die derzeit VRRP-Kommunikation ausführt (derzeit die Netzwerkkarte von CentOS). Verwenden Sie ifconfig, um Ihre spezifische Netzwerkkarte anzuzeigenvirtual_router_id 66 #Virtuelle Router-ID, Master und Slave sollten immer gleich seinpriority 100 #Priorität, je größer der Wert, desto höher die Priorität beim Abrufen der Verarbeitungsanforderungenadvert_int 1 #Überprüfen Sie das Intervall, der Standardwert ist 1 s (VRRP-Multicast-Zyklus in Sekunden) #Zugriffsauthentifizierung autorisieren { auth_type PASS #Legen Sie den Authentifizierungstyp und das Passwort fest. MASTER und BACKUP müssen für die normale Kommunikation dasselbe Passwort verwenden auth_pass 1111 } Titel_Skript { chk_http_port # (Anruferkennungsskript) } virtuelle_IP-Adresse { 192.168.16.130 # Virtuelle IP (VIP) definieren, mehrere Einstellungen sind erlaubt, eine pro Zeile} }
Die Schnittstelle muss entsprechend der Server-Netzwerkkarte eingestellt werden. Normalerweise ist die Anzeigemethode IP-Adresse Die Authentifizierungskonfiguration für den Zugriff auf die Backup-Maschine erfordert ebenfalls die gleiche Konfiguration Ändern Sie die Keepalived-Konfigurationsdatei der Standby-Maschine (192.168.16.129). keepalived.conf: #Erkennungsskript vrrp_script chk_http_port { Skript "/usr/local/src/check_nginx_pid.sh" #Heartbeat-Ausführungsskript zum Erkennen, ob Nginx gestartet wurde, Intervall 2 #(Ausführungsintervall des Erkennungsskripts) Gewicht 2 #Gewicht} #vrrp Instanzdefinitionsabschnitt vrrp_instance VI_1 { status BACKUP #Geben Sie die Keepalived-Rolle an, MASTER ist die Hauptrolle, BACKUP ist die Backup-Rolle interface ens33 #Die Netzwerkschnittstellenkarte, die derzeit VRRP-Kommunikation ausführt (derzeit die Netzwerkkarte von centos). Verwenden Sie ifconfig, um Ihre spezifische Netzwerkkarte anzuzeigen virtual_router_id 66 #Virtuelle Router-ID, Master und Slave sollten immer priority 99 #Priorität sein, je größer der Wert, desto höher die Priorität beim Abrufen der Verarbeitungsanforderungen advert_int 1 #Überprüfen Sie das Intervall, der Standardwert ist 1 s (VRRP-Multicast-Zyklus in Sekunden) #Zugriffsauthentifizierung autorisieren { auth_type PASS #Legen Sie den Authentifizierungstyp und das Passwort fest. MASTER und BACKUP müssen für die normale Kommunikation dasselbe Passwort verwenden auth_pass 1111 } Titel_Skript { chk_http_port # (Anruferkennungsskript) } virtuelle_IP-Adresse { 192.168.16.130 # Virtuelle IP (VIP) definieren, mehrere Einstellungen sind erlaubt, eine pro Zeile} } Erkennungsskript: #!/bin/bash #Überprüfen Sie, ob nginx gestartet ist A=`ps -C nginx --no-header |wc -l` if [ $A -eq 0 ];then #Wenn nginx nicht gestartet ist, starte nginx systemctl start nginx #Nginx neu starten if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #Wenn der Neustart von nginx fehlschlägt, stoppen Sie den Keepalived-Dienst und übertragen Sie VIP killall keepalived fi fi Skriptautorisierung: chmod 775 check_nginx_pid.sh Hinweis: Das Skript muss autorisiert sein, sonst gibt es keine Berechtigung, darauf zuzugreifen. Hier müssen wir zwei Server ausführen, Nginx-Fehler simulieren: Ändern Sie zur Unterscheidung die Nginx-HTML-Seite, auf die die beiden Server standardmäßig zugreifen. Besuchen Sie zunächst Zu diesem Zeitpunkt führt systemctl stop nginx; #Stoppen Sie nginx Besuchen Sie vip ( Fahren Sie nun den Server Es gibt viele andere Funktionen in Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Lösung für MySQL-Fehlercode 1862 Ihr Passwort ist abgelaufen
>>: React-Tipps zeigen Ihnen, wie Sie Probleme mit Hook-Abhängigkeiten beseitigen
In diesem Artikel wird der spezifische JavaScript...
Inhaltsverzeichnis Demo1 Fragment erstellen Svelt...
In diesem Artikel wird der spezifische Code der m...
Dieser Artikel stellt hauptsächlich ein Beispiel ...
HTML-Formulare werden häufig verwendet, um Benutz...
Im Test wurde festgestellt, dass wenn die Seitende...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis 2. Stapelanalyse mit pt-pmap 3...
Plattformbereitstellung 1. JDK installieren Schri...
Docker wird in immer mehr Szenarien verwendet. Fü...
In diesem Artikel wird der spezifische Code von v...
Inhaltsverzeichnis 1.Bereitstellung der serversei...
Vorwort Wie wir alle wissen, ist JavaScript im Ke...
1. Der in der Schaltfläche verwendete Wert bezieht...
1. Textformatierung: Dieses Beispiel zeigt, wie T...