Kapitel 1: Einführung in Keepalived Der Zweck des VRRP-Protokolls besteht darin, das Single Point Failure-Problem des statischen Routings zu lösen. Kapitel 2: So funktioniert Keepalived 2.1 Hochverfügbarkeitsfunktion (Failover) als Systemnetzwerkdienst Das Grundprinzip der Keepalived-Hochverfügbarkeitsfunktion ist: Wenn der Host mit der Master-Rolle ausfällt oder eine Fehlfunktion aufweist, übernimmt der Host mit der Backup-Rolle automatisch die gesamte Arbeit des Master-Hosts, einschließlich der Übernahme von VIP-Ressourcen und entsprechenden Ressourcendiensten. Wenn der Fehler des Hosts mit der Rolle des Masters behoben ist, übernimmt dieser automatisch die Arbeit, die er ursprünglich erledigt hat. Der Host mit der Rolle des Backups gibt auch die Arbeit frei, die er übernommen hat, als der Master-Host ausgefallen ist. Zu diesem Zeitpunkt kehren die beiden Hosts zum Zeitpunkt des Starts zu ihren ursprünglichen Rollen und Arbeitszuständen zurück. 2.2 Was ist VRRP VRRP implementiert die Funktion eines virtuellen Routers über einen Auswahlmechanismus. Alle Protokollnachrichten werden in Form von IP-Multicast-Paketen gesendet (Standard-Multicast-Adresse 224.0.0.18). In einer Gruppe virtueller Router sendet immer nur der VRRP-Router, der der Master ist, VRRP-Broadcast-Pakete. Zu diesem Zeitpunkt wird der Backup dem Master nicht den Vortritt lassen. 2.3 Was man in einem Vorstellungsgespräch sagen sollte <br /> Antwort: Kapitel 3: VRRP-Protokoll VIP-Voraussetzungen: Kapitel 4: Keepalived-Installation und -Konfiguration 1. Installieren Sie Keepalived yum installiere keepalived -y 2. Erläuterung der Konfigurationsdatei global_defs { router_id lb01 #Legen Sie die Routing-ID fest, jeder Host ist anders} vrrp_instance VI_1 { #VRRP-Gruppennamen festlegen, derselbe Gruppenname state MASTER #Rollenstatus festlegen, unterteilt in MASTER BACKUP Schnittstelle eth0 #An VIP gebundene Netzwerkkarte virtual_router_id 50 #Virtuelle Router-ID, gleich für dieselbe Gruppe Priorität 150 #Gewicht, je höher das Gewicht, desto höher die Priorität advert_int 1 #Intervall zum Senden der Multicast-Authentifizierung { #Authentifizierung festlegen, das Kennwort ist im Klartext auth_type PASS Auth_Passwort 1111 } virtual_ipaddress { #Virtuelle IP festlegen. Diese virtuelle IP muss vorhanden und gültig sein und darf nicht verwendet werden. 10.0.0.3 } } 3.lb01-Konfiguration [root@lb01 ~]# cat /etc/keepalived/keepalived.conf global_defs { Router-ID lb01 } vrrp_instance VI_1 { Zustand MEISTER Schnittstelle eth0 virtuelle_Router_ID 50 Priorität 150 Anzeige_int 1 Authentifizierung Authentizitätstyp PASS Auth_Passwort 1111 } virtuelle_IP-Adresse { 10.0.0.3 } } 4.lb02-Konfiguration [root@lb02 ~]# cat /etc/keepalived/keepalived.conf global_defs { Router-ID lb02 } vrrp_instance VI_1 { Status BACKUP Schnittstelle eth0 virtuelle_Router_ID 50 Priorität 100 Anzeige_int 1 Authentifizierung Authentizitätstyp PASS Auth_Passwort 1111 } virtuelle_IP-Adresse { 10.0.0.3 } } 5. Inbetriebnahme systemctl start keepalived 6. Führen Sie einen Test durch, indem Sie eine beliebige Maschine herunterfahren und beobachten, ob die VIP zum Master zurückkehrt und ob die BACKUP-VIP verschwindet. Kapitel 5: Split-Brain-Phänomen 1. Installieren Sie das Paketerfassungstool yum installiere tcpdump -y 2.lb02 Paketerfassung und -anzeige tcpdump -nn -i beliebiger Host 224.0.0.18 3. lb02 Öffnen Sie ein neues Terminal und schalten Sie die Firewall ein systemctl starte firewalld.service 4.lb02 beobachtet das Paketerfassungsphänomen, um festzustellen, ob auf beiden Seiten VIPs vorhanden sind 5. Release-Regeln hinzufügen Firewall-Befehl --direct --permanent --add-rule IPv4-Filter INPUT 0 --in-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT Firewall-Befehl --direct --permanent --add-rule IPv4-Filter INPUT 0 --in-interface eth1 --destination 224.0.0.18 --protocol vrrp -j AKZEPTIEREN systemctl neu laden firewalld 6.lb02 Beobachten Sie das Paketerfassungsphänomen, um festzustellen, ob auf beiden Seiten VIPs vorhanden sind Kapitel 6: Keepalived-Dual-Master-Experiment [root@lb01 ~]# cat /etc/keepalived/keepalived.conf global_defs { Router-ID lb01 } vrrp_instance VI_1 { Zustand MEISTER Schnittstelle eth0 virtuelle_Router_ID 50 Priorität 150 Anzeige_int 1 Authentifizierung Authentizitätstyp PASS Auth_Passwort 1111 } virtuelle_IP-Adresse { 10.0.0.3 } } vrrp_instance VI_2 { Status BACKUP Schnittstelle eth0 virtuelle_Router_ID 51 Priorität 100 Anzeige_int 1 Authentifizierung Authentizitätstyp PASS Auth_Passwort 2222 } virtuelle_IP-Adresse { 10.0.0.4 } } 2.lb02 Konfigurationsdatei [root@lb02 ~]# cat /etc/keepalived/keepalived.conf global_defs { Router-ID lb02 } vrrp_instance VI_1 { Status BACKUP Schnittstelle eth0 virtuelle_Router_ID 50 Priorität 100 Anzeige_int 1 Authentifizierung Authentizitätstyp PASS Auth_Passwort 1111 } virtuelle_IP-Adresse { 10.0.0.3 } } vrrp_instance VI_2 { Zustand MEISTER Schnittstelle eth0 virtuelle_Router_ID 51 Priorität 150 Anzeige_int 1 Authentifizierung Authentizitätstyp PASS Auth_Passwort 2222 } virtuelle_IP-Adresse { 10.0.0.4 } } 3. Starten Sie Keepalived neu und beobachten Sie das Phänomen systemctl Neustart keepalived Kapitel 7: Keepalived kombiniert mit Nginx Reverse Proxy Load Balancing 1. Sichern Sie die ursprüngliche Konfiguration mkdir /sicherung cd /etc/nginx/conf.d mv * /Sicherung 2. Schreiben Sie die Nginx-Konfigurationsdatei [root@lb01 /etc/nginx/conf.d]# cat proxy.conf Upstream-Webpools { Server 172.16.1.7; Server 172.16.1.8; } Server { hören Sie 80; Servername (www|bbs).mysun.com; Standort / { Proxy-Passwort http://Webpools; Proxy-Parameter einschließen; } } 3. Testen und starten Sie nginx neu nginx -t systemctl startet nginx neu Keepalived-Konfiguration des lb-Servers: 1.lb01 Keepalived-Konfiguration [root@lb01 ~]# cat /etc/keepalived/keepalived.conf global_defs { Router-ID lb01 } vrrp_instance VI_1 { Zustand MEISTER Schnittstelle eth0 virtuelle_Router_ID 50 Priorität 150 Anzeige_int 1 Authentifizierung Authentizitätstyp PASS Auth_Passwort 1111 } virtuelle_IP-Adresse { 10.0.0.3 } } 2.lb02 Keepalived-Konfiguration [root@lb02 ~]# cat /etc/keepalived/keepalived.conf global_defs { Router-ID lb02 } vrrp_instance VI_1 { Status BACKUP Schnittstelle eth0 virtuelle_Router_ID 50 Priorität 100 Anzeige_int 1 Authentifizierung Authentizitätstyp PASS Auth_Passwort 1111 } virtuelle_IP-Adresse { 10.0.0.3 } } Webserver-Konfiguration: Beachten! Die beiden Webserver haben die gleiche Konfiguration 1. Nginx-Konfiguration [root@web01 ~]# cat /etc/nginx/conf.d/www.conf Server { hören Sie 80; Servername www.mysun.com; Standort / { Wurzel /Code; inhaltsverzeichnis www.html; } } 2. Testdateien schreiben echo "$(Hostname)" >/code/index.html Kapitel 8: Split-Brain-Präventionsskript 1. Problemphänomen: 2. Ideen:
2.keepalived ruft dieses Skript regelmäßig auf 3. Umsetzung: 1. So implementieren Sie den Befehl systemctl starte nginx 2. Überprüfen Sie den Nginx-Prozess [root@lb01 ~]# ps -ef|grep nginx|grep -v "grep" root 1210 1 0 11:21 ? 00:00:00 nginx: Masterprozess /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx 1211 1210 0 11:21 ? 00:00:00 nginx: Arbeitsprozess [root@lb01 ~]# ps -ef|grep nginx|grep -v "grep"|wc -l 2 [root@lb01 ~]# ps -ef|grep nginx|grep -v "grep"|wc -l 0 Skriptinhalt: [root@lb01 ~]# cat check_web.sh !/bin/bash nginx_status=$(ps -C nginx --no-header|wc -l) wenn [[ ${nginx_status} == 0 ]] Dann systemctl start nginx &> /dev/null Schlaf 1 nginx_status=$(ps -C nginx --no-header|wc -l) wenn [[ ${nginx_status} == 0 ]] Dann systemctl stop keepalived fi fi Keepalived ruft das Skript auf: [root@lb01 ~]# cat /etc/keepalived/keepalived.conf global_defs { Router-ID lb01 } vrrp_script check_web { Skript "/server/scripts/check_web.sh" Intervall 5 Gewicht 50 } vrrp_instance VI_1 { Zustand MEISTER Schnittstelle eth0 virtuelle_Router_ID 50 Priorität 150 Anzeige_int 1 Authentifizierung Authentizitätstyp PASS Auth_Passwort 1111 } virtuelle_IP-Adresse { 10.0.0.3 } Titel_Skript { check_web } } 4. Das zweite Problem: Split-Brain-Problem <br /> Beide Seiten haben VIPs Phänomen: Der Nginx des anderen MASTER ist noch am Leben curl -I -s -w "%{http_code}\n" -o /dev/null 10.0.0.5 Aber ich habe wieder VIP ip a |grep "10.0.0.3"|wc -l Ich werde mich umbringen systemctl stoppt nginx systemctl stop keepalived Skriptinhalt: [root@lb02 /server/scripts]# cat check_vip.sh #!/bin/bash master_status=$(curl -I -s -w "%{http_code}\n" -o /dev/null 10.0.0.5) mein_vip=$(ip a |grep "10.0.0.3"|wc -l) wenn [ ${master_status} == 200 -a ${my_vip} == 1 ] Dann systemctl stoppt nginx systemctl stop keepalived fi Keepalived-Konfiguration: [root@lb02 ~]# cat /etc/keepalived/keepalived.conf global_defs { Router-ID lb02 } vrrp_script check_web { Skript "/server/scripts/check_web.sh" Intervall 5 Gewicht 50 } vrrp_script check_vip { Skript "/server/scripts/check_vip.sh" Intervall 5 Gewicht 50 } vrrp_instance VI_1 { Status BACKUP Schnittstelle eth0 virtuelle_Router_ID 50 Priorität 100 Anzeige_int 1 Authentifizierung Authentizitätstyp PASS Auth_Passwort 1111 } virtuelle_IP-Adresse { 10.0.0.3 } Titel_Skript { check_web check_vip } } Dies ist das Ende dieses Artikels über den Beispielcode zur Implementierung des Nginx-Lastausgleichs und der Hochverfügbarkeit mit Keepalived. Weitere verwandte Inhalte zum Nginx-Lastausgleich und zur Hochverfügbarkeit mit Keepalived 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:
|
<<: VSCode-Entwicklung UNI-APP Konfigurations-Tutorial und Plugin
>>: MySQL-Passwort ist korrekt, aber keine lokale Anmeldung möglich -1045
Inhaltsverzeichnis 1. charAt Grammatik Parameter ...
Inhaltsverzeichnis Jenkins-Installation Installie...
Hintergrund Haben Sie sich jemals gefragt, wie Si...
Erstens: 4 Möglichkeiten, CSS einzuführen Es gibt...
Inhaltsverzeichnis Was ist das Linux-System, das ...
Überprüfen Sie zunächst, ob das Festplattengerät ...
Wenn wir über den Ausnahmefilter von Nestjs sprec...
Reverse-Proxy Unter Reverse-Proxy versteht man de...
Erstellen Sie einen MySQL-Benutzer und autorisier...
Sie wissen, dass der Browser ohne diese Option bei...
Vor kurzem hatte ich zufällig Kontakt mit dem Pro...
Erstellen des Images Es gibt zwei Hauptmethoden z...
Inhaltsverzeichnis 1. Die Richtung davon in der F...
Wir wissen, dass wir beim Verwenden von HTML im N...
1. Die Größe des durch den HTML-Hyperlink geöffne...