Keepalived+Nginx+Tomcat-Beispielcode zur Implementierung eines hochverfügbaren Webclusters

Keepalived+Nginx+Tomcat-Beispielcode zur Implementierung eines hochverfügbaren Webclusters

Keepalived+Nginx+Tomcat zur Erzielung eines hochverfügbaren Webclusters

1. Nginx-Installationsprozess

1. Laden Sie das Nginx-Installationspaket herunter und installieren Sie das abhängige Umgebungspaket

(1) Installieren Sie die C ++ - Kompilierungsumgebung

yum -y installiere gcc #C++

(2) PCRE installieren

yum -y installiere pcre-devel

(3) Installieren Sie zlib

yum -y installiere zlib-devel

(4) Installieren Sie Nginx

Suchen Sie den Speicherort der Nginx-Dekomprimierungsdatei und führen Sie den Kompilierungs- und Installationsbefehl aus

[root@localhost nginx-1.12.2]# pwd
/usr/local/nginx/nginx-1.12.2
[root@localhost nginx-1.12.2]# ./konfigurieren && make && make install

(5) Starten Sie Nginx

Suchen Sie nach Abschluss der Installation zunächst den Verzeichnisspeicherort, an dem die Installation abgeschlossen ist

[root@localhost nginx-1.12.2]# whereis nginx
nginx: /usr/local/nginx
[root@localhost nginx-1.12.2]#

Wechseln Sie in das Nginx-Unterverzeichnis sbin und starten Sie Nginx

[root@localhost sbin]# ls
nginx
[root@localhost sbin]# ./nginx &
[1] 5768
[root@localhost sbin]

Überprüfen Sie, ob Nginx gestartet ist

Oder überprüfen Sie den Nginx-Startstatus über den Prozess

[root@localhost sbin]# ps -aux|grep nginx
root 5769 0,0 0,0 20484 608 ? Ss 14:03 0:00 nginx: Masterprozess ./nginx
niemand 5770 0,0 0,0 23012 1620 ? S 14:03 0:00 nginx: Arbeitsprozess
root 5796 0,0 0,0 112668 972 Punkte/0 R+ 14:07 0:00 grep --color=auto nginx
[1]+ Abgeschlossen ./nginx
[root@localhost sbin]

An diesem Punkt ist Nginx erfolgreich installiert und gestartet.

(6) Nginx-Schnellstart und Bootkonfiguration

Bearbeiten Sie das Nginx-Schnellstartskript [ Achten Sie auf den Nginx-Installationspfad , Sie müssen ihn entsprechend Ihrem eigenen NGINX-Pfad ändern ]

[root@localhost init.d]# vim /etc/rc.d/init.d/nginx
#!/bin/sh
#
# nginx - dieses Skript startet und stoppt den nginx-Daemon
#
# chkconfig: -85 15
# Beschreibung: Nginx ist ein HTTP(S)-Server, HTTP(S) Reverse \
# Proxy und IMAP/POP3-Proxyserver
# Prozessname: nginx
# Konfiguration: /etc/nginx/nginx.conf
# Konfiguration: /usr/local/nginx/conf/nginx.conf
# pid-Datei: /usr/local/nginx/logs/nginx.pid
 
# Quellfunktionsbibliothek.
. /etc/rc.d/init.d/Funktionen
 
# Quellnetzwerkkonfiguration.
. /etc/sysconfig/netzwerk
 
# Überprüfen Sie, ob das Netzwerk aktiv ist.
[ "$NETWORKING" = "nein" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(Basisname $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
 
make_dirs() {
 # erforderliche Verzeichnisse erstellen
 Benutzer=`$nginx -V 2>&1 | grep "Argumente konfigurieren:" | sed 's/[^*]*--Benutzer=\([^ ]*\).*/\1/g' -`
 wenn [ -z "`grep $user /etc/passwd`" ]; dann
 useradd -M -s /bin/nologin $user
 fi
 Optionen=`$nginx -V 2>&1 | grep 'Argumente konfigurieren:'`
 für Opt-in $options; tun
 wenn [ `echo $opt | grep '.*-temp-path'` ]; dann
 Wert=`echo $opt | cut -d "=" -f 2`
 wenn [ ! -d "$wert" ]; dann
 # echo "erstellen" $value
 mkdir -p $Wert && chown -R $Benutzer $Wert
 fi
 fi
 Erledigt
}
 
Start() {
 [ -x $nginx ] || beenden 5
 [ -f $NGINX_CONF_FILE ] || beenden 6
 make_dirs
 echo -n $"$prog wird gestartet: "
 Daemon $nginx -c $NGINX_CONF_FILE
 retval=$?
 Echo
 [ $retval -eq 0 ] && touch $lockfile
 Rückgabewert $retval
}
 
stoppen() {
 echo -n $"$prog wird gestoppt: "
 killproc $prog -QUIT
 retval=$?
 Echo
 [ $retval -eq 0 ] && rm -f $lockfile
 Rückgabewert $retval
}
 
neu starten() {
 #configtest || return $?
 stoppen
 Schlaf 1
 Start
}
 
neu laden() {
 #configtest || return $?
 echo -n $"Lade $prog neu: "
 killproc $nginx -HUP
 RETVAL=$?
 Echo
}
 
force_reload() {
 Neustart
}
 
konfigurationtest() {
 $nginx -t -c $NGINX_CONF_FILE
}
 
rh_status() {
 Status $prog
}
 
rh_status_q() {
 rh_status >/dev/null 2>&1
}
 
Fall "$1" in
Start)
rh_status_q und beenden 0
1 Dollar
;;
stoppen)
 
rh_status_q || beenden 0
1 Dollar
;;
Neustart|Konfigurationstest)
1 Dollar
;;
neu laden
rh_status_q || Ausgang 7
1 Dollar
;;
erzwungenes Neuladen
erzwingen_neuladen
;;
Status)
rh_status
;;
condrestart|versuchen Sie einen Neustart)
rh_status_q || beenden 0
;;
*)
echo $"Verwendung: $0 {Start|Stopp|Status|Neustart|Condrestart|Neustartversuch|Neuladen|Neuladen erzwingen|Configtest}"
Ausfahrt 2
esac

Autorisieren Sie das Startskript und fügen Sie es zum Startskript hinzu.

[root@localhost init.d]# chmod -R 777 /etc/rc.d/init.d/nginx 
[root@localhost init.d]# chkconfig nginx

Starten Sie Nginx

[root@localhost init.d]# ./nginx start

Fügen Sie Nginx zu den Systemumgebungsvariablen hinzu

[root@localhost init.d]# echo 'export PATH=$PATH:/usr/local/nginx/sbin' >>/etc/profile && Quelle /etc/profile

Nginx-Befehl [service nginx (start|stop|restart)]

[root@localhost init.d]# Dienst nginx start
Nginx starten (über systemctl): [ OK ]

Tipps: Schnellbefehle

Dienst nginx (starten|stoppen|neu starten)

2. KeepAlived Installation und Konfiguration

1. Installieren Sie die Keepalived-Abhängigkeitsumgebung

yum install -y popt-devel  
yum install -y ipvsadm
yum install -y libnl*
yum install -y libnf*
yum install -y openssl-devel

2. Keepalived kompilieren und installieren

[root@localhost keepalived-1.3.9]# ./konfigurieren
[root@localhost keepalived-1.3.9]# make && make install

3. Installieren Sie Keepalive als Systemdienst

[root@localhost usw.]# mkdir /etc/keepalived
[root@localhost usw.]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

Kopieren Sie die Standardkonfigurationsdatei manuell in den Standardpfad

[root@localhost usw.]# mkdir /etc/keepalived
[root@localhost usw.]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@localhost usw.]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

Erstellen Sie einen Softlink für Keepalived

[root@localhost sysconfig]# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/

Stellen Sie Keepalived so ein, dass es beim Booten automatisch startet

[root@localhost sysconfig]# chkconfig keepalived on
HINWEIS: Weiterleitungsanforderung an „systemctl enable keepalived.service“.
Symlink von /etc/systemd/system/multi-user.target.wants/keepalived.service nach /usr/lib/systemd/system/keepalived.service erstellt.

Starten Sie den Keepalived-Dienst

[root@localhost keepalived]# keepalived -D -f /etc/keepalived/keepalived.conf

Beenden Sie den Keepalived-Dienst

[root@localhost keepalived]# killall keepalived

3. Clusterplanung und -aufbau

Umweltvorbereitung:

CentOS 7.2

Keepalived Version 1.4.0 – 29. Dezember 2017

Nginx-Version: nginx/1.12.2

Tomcat Version:8

Checkliste für die Clusterplanung

Virtuelle Maschinen IP veranschaulichen
Keepalived+Nginx1[Meister] 192.168.43.101 Nginx Server 01
Keeepalived+Nginx[Backup] 192.168.43.102 Nginx Server 02
Tomcat01 192.168.43.103 Tomcat Web Server01
Tomcat02 192.168.43.104 Tomcat Web Server02
VIP 192.168.43.150 Virtuelle Drift-IP

1. Ändern Sie die Tomcat-Standard-Willkommensseite, um den Wechsel zum Web zu identifizieren

Ändern Sie die ROOT/index.jsp-Informationen des Knotens TomcatServer01, fügen Sie die Tomcat-IP-Adresse hinzu und fügen Sie den Nginx-Wert hinzu, d. h. ändern Sie die Informationen des Knotens 192.168.43.103 wie folgt:

<div id="asf-box">
 <h1>${pageContext.servletContext.serverInfo}(192.168.224.103)<%=request.getHeader("X-NGINX")%></h1>
</div>

Ändern Sie die ROOT/index.jsp-Informationen des Knotens TomcatServer02, fügen Sie die Tomcat-IP-Adresse hinzu und fügen Sie den Nginx-Wert hinzu, d. h. ändern Sie die Informationen des Knotens 192.168.43.104 wie folgt:

<div id="asf-box">
 <h1>${pageContext.servletContext.serverInfo}(192.168.224.104)<%=request.getHeader("X-NGINX")%></h1>
</div>

2. Starten Sie den Tomcat-Dienst und überprüfen Sie die IP-Informationen des Tomcat-Dienstes. Zu diesem Zeitpunkt ist Nginx nicht gestartet, daher enthält der Anforderungsheader keine Nginx-Informationen.

3. Konfigurieren Sie die Nginx-Proxy-Informationen

1. Konfigurieren Sie die Proxy-Informationen des Masterknotens [192.168.43.101]

Upstream-Tomcat {
 Server 192.168.43.103:8080 Gewicht=1;
 Server 192.168.43.104:8080 Gewicht=1;
}
Server{
 Standort / {
  Proxy-Passwort http://Tomcat;
 Proxy_Set_Header X-NGINX "NGINX-1";
 }
 #......Andere ausgelassen}

2. Konfigurieren Sie die Proxy-Informationen des Backup-Knotens [192.168.43.102]

Upstream-Tomcat {
 Server 192.168.43.103:8080 Gewicht=1;
 Server 192.168.43.104:8080 Gewicht=1;
}
Server{
 Standort / {
  Proxy-Passwort http://Tomcat;
 Proxy_Set_Header X-NGINX "NGINX-2";
 }
 #......Andere ausgelassen}

3. Starten Sie den Nginx-Dienst des Masterknotens

[root@localhost init.d]# Dienst nginx start
Nginx starten (über systemctl): [ OK ]

Wenn Sie zu diesem Zeitpunkt 192.168.43.101 besuchen, können Sie sehen, dass die Tcomat-Knoten 103 und 104 abwechselnd angezeigt werden, was darauf hinweist, dass der Nginx-Dienst die Anforderung an zwei Tomcats geladen hat.

4. Konfigurieren Sie auf ähnliche Weise die Backup-Informationen [192.168.43.102] von Nginx. Besuchen Sie nach dem Starten von Nginx 192.168.43.102 und Sie können sehen, dass der Backup-Knoten eine Laderolle gespielt hat.

4. Konfigurieren Sie die Keepalived-Skriptinformationen

1. Fügen Sie die Datei check_nginx.sh zum Verzeichnis /etc/keepalived auf den Master- und Slave-Knoten hinzu, um den Inventarstatus von Nginx zu ermitteln, und fügen Sie die Datei keepalived.conf hinzu

Die Dateiinformationen von check_nginx.sh lauten wie folgt:

#!/bin/bash
#Zeitvariable, wird zum Aufzeichnen von Protokollen verwendet d=`date --date today +%Y%m%d_%H:%M:%S`
# Berechnen Sie die Anzahl der Nginx-Prozesse n=`ps -C nginx --no-heading|wc -l`
#Wenn der Prozess 0 ist, starten Sie nginx und überprüfen Sie die Anzahl der nginx-Prozesse erneut.
#Wenn es immer noch 0 ist, bedeutet dies, dass Nginx nicht gestartet werden kann und Sie Keepalived deaktivieren müssen
wenn [ $n -eq "0" ]; dann
  /etc/rc.d/init.d/nginx starten
  n2=`ps -C nginx --no-heading|wc -l`
  wenn [ $n2 -eq "0" ]; dann
    echo "$d nginx down, keepalived wird gestoppt" >> /var/log/check_ng.log
    systemctl stop keepalived
  fi
fi

Autorisieren Sie nach dem Hinzufügen die Datei check_nginx.sh, damit das Skript Ausführungsberechtigungen erhalten kann.

[root@localhost keepalived]# chmod -R 777 /etc/keepalived/check_nginx.sh

2. Fügen Sie die Datei keepalived.conf im Verzeichnis /etc/keepalived des Masterknotens hinzu. Die spezifischen Informationen lauten wie folgt:

vrrp_script chk_nginx { 
 Skript "/etc/keepalived/check_nginx.sh" //Skriptintervall 2 zum Erkennen des Nginx-Prozesses 
 Gewicht -20 
} 

global_defs { 
 Benachrichtigungs-E-Mail { 
  //Sie können E-Mail-Erinnerungen hinzufügen} 
} 
vrrp_instance VI_1 { 
 state MASTER #Zeigt den Status MASTER und die Backup-Maschine ist BACKUP
 Schnittstelle ens33 #Legen Sie die an die Instanz gebundene Netzwerkkarte fest (überprüfen Sie die IP-Adresse, die Bindung muss entsprechend der persönlichen Netzwerkkarte erfolgen).
 virtual_router_id 51 #Die virtual_router_id muss in derselben Instanz dieselbe sein mcast_src_ip 192.168.43.101 
 Priorität 250 #MASTER hat eine höhere Priorität als BACKUP, zum Beispiel ist BACKUP 240 
 advert_int 1 #Zeitintervall zwischen Synchronisierungsprüfungen zwischen MASTER- und BACKUP-Load Balancern, in Sekunden nopreempt #Nicht-präemptiver Modus authentication { #Authentifizierung festlegen auth_type PASS #Authentifizierungsmethode für Master-Slave-Server auth_pass 123456 
 } 
 Titel_Skript { 
  check_nginx 
 } 
 virtual_ipaddress { #VIP festlegen
  192.168.43.150 #Sie können mehrere virtuelle IPs haben, umbrechen Sie einfach die Zeile} 
}

3. Fügen Sie die Konfigurationsdatei keepalived.conf im Verzeichnis etc/keepalived des Backup-Knotens hinzu

Die Informationen lauten wie folgt:

vrrp_script chk_nginx { 
 Skript "/etc/keepalived/check_nginx.sh" //Skriptintervall 2 zum Erkennen des Nginx-Prozesses 
 Gewicht -20 
} 

global_defs { 
 Benachrichtigungs-E-Mail { 
  //Sie können E-Mail-Erinnerungen hinzufügen} 
} 
vrrp_instance VI_1 { 
 Status BACKUP #Zeigt an, dass der Status MASTER ist und die Backup-Maschine BACKUP ist
 Schnittstelle ens33 #Legen Sie die an die Instanz gebundene Netzwerkkarte fest (Anzeige nach IP-Adresse)
 virtual_router_id 51 #Die virtual_router_id muss in derselben Instanz dieselbe sein mcast_src_ip 192.168.43.102 
 Priorität 240 #MASTER hat eine höhere Priorität als BACKUP. Beispielsweise hat BACKUP die Priorität 240. 
 advert_int 1 #Zeitintervall zwischen Synchronisierungsprüfungen zwischen MASTER- und BACKUP-Load Balancern, in Sekunden nopreempt #Nicht-präemptiver Modus authentication { #Authentifizierung festlegen auth_type PASS #Authentifizierungsmethode für Master-Slave-Server auth_pass 123456 
 } 
 Titel_Skript { 
  check_nginx 
 } 
 virtual_ipaddress { #VIP festlegen
  192.168.43.150 #Sie können mehrere virtuelle IPs haben, umbrechen Sie einfach die Zeile} 
}

Tipps: Einige Hinweise zu Konfigurationsinformationen

  • Status - Der Master-Server muss als MASTER und der Slave-Server als BACKUP konfiguriert werden.
  • Schnittstelle - Dies ist der Name der Netzwerkkarte. Ich verwende VM12.0, daher heißt die Netzwerkkarte hier ens33
  • mcast_src_ip - konfiguriert die tatsächliche IP-Adresse jedes
  • Priorität - Die Priorität des Master-Servers muss höher sein als die des Slave-Servers. Hier ist der Master-Server als 250 und der Slave-Server als 240 konfiguriert.
  • virtual_ipaddress – konfiguriert eine virtuelle IP (192.168.43.150)
  • Authentifizierung - auth_pass muss zwischen dem Master- und dem Slave-Server konsistent sein, Keepalived verlässt sich bei der Kommunikation darauf
  • virtual_router_id - Der Master- und der Slave-Server müssen die gleiche ID haben

5. Überprüfung der Hochverfügbarkeit (HA) des Clusters

Schritt 1 Starten Sie die Keepalived- und Nginx-Dienste auf dem Master-Rechner

[root@localhost keepalived]# keepalived -D -f /etc/keepalived/keepalived.conf
[root@localhost keepalived]# Dienst nginx starten

Dienststartprozess anzeigen

[root@localhost keepalived]# ps -aux|grep nginx
root 6390 0,0 0,0 20484 612 ? Ss 19:13 0:00 nginx: Masterprozess /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
niemand 6392 0,0 0,0 23008 1628 ? S 19:13 0:00 nginx: Arbeitsprozess
root 6978 0,0 0,0 112672 968 Punkte/0 S+ 20:08 0:00 grep --color=auto nginx

Anzeigen des Keepalived-Startvorgangs

[root@localhost keepalived]# ps -aux|grep keepalived
root 6402 0,0 0,0 45920 1016 ? Ss 19:13 0:00 keepalived -D -f /etc/keepalived/keepalived.conf
root 6403 0,0 0,0 48044 1468 ? S 19:13 0:00 keepalived -D -f /etc/keepalived/keepalived.conf
root 6404 0,0 0,0 50128 1780 ? S 19:13 0:00 keepalived -D -f /etc/keepalived/keepalived.conf
root 7004 0,0 0,0 112672 976 Punkte/0 S+ 20:10 0:00 grep --color=auto keepalived

Verwenden Sie ip add, um den Status der virtuellen IP-Bindung zu überprüfen. Wenn die Knoteninformation 192.168.43.150 angezeigt wird, ist sie an den Masterknoten gebunden.

[root@localhost keepalived]# IP hinzufügen
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue status UNBEKANNT qlen 1
 Link/Loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 Bereich Host lo
  valid_lft für immer preferred_lft für immer
 inet6 ::1/128 Bereich Host 
  valid_lft für immer preferred_lft für immer
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast Status UP qlen 1000
 Link/Ether 00:0c:29:91:bf:59 brd ff:ff:ff:ff:ff:ff:ff
 inet 192.168.43.101/24 brd 192.168.43.255 Bereich global ens33
  valid_lft für immer preferred_lft für immer
 inet 192.168.43.150/32 Bereich global ens33
  valid_lft für immer preferred_lft für immer
 inet6 fe80::9abb:4544:f6db:8255/64 Bereichslink 
  valid_lft für immer preferred_lft für immer
 inet6 fe80::b0b3:d0ca:7382:2779/64 Bereichslink vorläufig dadfailed 
  valid_lft für immer preferred_lft für immer
 inet6 fe80::314f:5fe7:4e4b:64ed/64 Bereichslink vorläufig dadfailed 
  valid_lft für immer preferred_lft für immer
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue status DOWN qlen 1000
 Link/Ether 52:54:00:2b:74:aa brd ff:ff:ff:ff:ff:ff:ff
 inet 192.168.122.1/24 brd 192.168.122.255 Bereich global virbr0
  valid_lft für immer preferred_lft für immer
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast Master virbr0 Status DOWN qlen 1000
 Link/Ether 52:54:00:2b:74:aa brd ff:ff:ff:ff:ff:ff:ff

Schritt 2 Starten Sie den Nginx-Dienst und den Keepalived-Dienst auf dem Backup-Knoten und überprüfen Sie den Startstatus des Dienstes. Wenn auf dem Backup-Knoten eine virtuelle IP angezeigt wird, liegt ein Problem mit der Keepalived-Konfigurationsdatei vor. Diese Situation wird als Split-Brain bezeichnet.

[root@localhost keepalived]# löschen
[root@localhost keepalived]# IP hinzufügen
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue status UNBEKANNT qlen 1
 Link/Loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 Bereich Host lo
  valid_lft für immer preferred_lft für immer
 inet6 ::1/128 Bereich Host 
  valid_lft für immer preferred_lft für immer
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast Status UP qlen 1000
 Link/Ether 00:0c:29:14:df:79 brd ff:ff:ff:ff:ff:ff:ff
 inet 192.168.43.102/24 brd 192.168.43.255 Bereich global ens33
  valid_lft für immer preferred_lft für immer
 inet6 fe80::314f:5fe7:4e4b:64ed/64 Bereichslink 
  valid_lft für immer preferred_lft für immer
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue status DOWN qlen 1000
 Link/Ether 52:54:00:2b:74:aa brd ff:ff:ff:ff:ff:ff:ff
 inet 192.168.122.1/24 brd 192.168.122.255 Bereich global virbr0
  valid_lft für immer preferred_lft für immer
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast Master virbr0 Status DOWN qlen 1000
 Link/Ether 52:54:00:2b:74:aa brd ff:ff:ff:ff:ff:ff:ff

Schritt 3 Überprüfen Sie den Dienst

Durchsuchen Sie die Adresse und erzwingen Sie mehrmals eine Aktualisierung: http://192.168.43.150. Sie können sehen, dass 103 und 104 mehrmals abwechselnd angezeigt werden und Nginx-1 angezeigt wird, was darauf hinweist, dass der Masterknoten den Webdienst weiterleitet.

Schritt 4 Schließen Sie den Master-Keepalive-Dienst und den Nginx-Dienst und greifen Sie auf den Webdienst zu, um den Status der Dienstübertragung zu beobachten

[root@localhost keepalived]# killall keepalived
[root@localhost keepalived]# Dienst nginx stoppen

Aktualisieren Sie zu diesem Zeitpunkt 192.168.43.150 zwangsweise und stellen Sie fest, dass die Seite abwechselnd 103 und 104 anzeigt und Nginx-2 anzeigt. Der VIP wurde auf 192.168.43.102 übertragen, was beweist, dass der Dienst automatisch zum Sicherungsknoten wechselt.

Schritt 5 Starten Sie den Master Keepalived-Dienst und den Nginx-Dienst

Zu diesem Zeitpunkt haben wir erneut überprüft, dass der VIP vom Master zurückerobert wurde, und die Seite zeigt abwechselnd 103 und 104 an. Zu diesem Zeitpunkt wird Nginx-1 angezeigt.

4. Präemptiver und nicht präemptiver Keepalived-Modus

Der HA von Keepalived ist in einen präemptiven und einen nicht präemptiven Modus unterteilt. Im präemptiven Modus wird der MASTER nach der Wiederherstellung nach einem Fehler den VIP vom BACKUP-Knoten präemptiv entfernen. Der nicht präemptive Modus bedeutet, dass nach der Wiederherstellung des MASTER der VIP nach dem Upgrade des BACKUP auf den MASTER nicht präemptiv wird.

Konfiguration des nicht präemptiven Modus:

1> Die Anweisung nopreempt wurde zu jedem der beiden Knoten unter dem Block vrrp_instance hinzugefügt, um anzuzeigen, dass kein VIP-Wettbewerb erforderlich ist

2> Der Status der Knoten ist BACKUP. Nachdem beide Keepalived-Knoten gestartet wurden, befinden sie sich standardmäßig im BACKUP-Status. Nach dem Senden der Multicast-Informationen wählen beide Parteien basierend auf der Priorität einen MASTER aus. Da für beide „nopreempt“ konfiguriert ist, wird der MASTER den VIP nach der Wiederherstellung nach einem Fehler nicht vorzeitig beenden. Dadurch werden Serviceverzögerungen vermieden, die durch den VIP-Wechsel entstehen können.

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:
  • Verwenden eines Software-Load-Balancers zum Implementieren eines Webserver-Clusters (iis+nginx)
  • nginx+apache+mysql+php+memcached+squid zum Erstellen einer Cluster-Webumgebung
  • Bringen Sie Ihnen bei, schnell ein Webclusterprojekt basierend auf Nginx zu erstellen

<<:  Erläuterung der Faktoren, die die Datenbankleistung in MySQL beeinflussen

>>:  So installieren Sie MySQL Community Server 5.6.39

Artikel empfehlen

Spezifische Verwendung von Docker Anonymous Mount und Named Mount

Inhaltsverzeichnis Datenvolumen Anonyme und benan...

Detaillierte Erklärung der Kodierungsprobleme bei MySQL-Befehlszeilenoperationen

1. Überprüfen Sie die MySQL-Datenbankkodierung my...

So erstellen Sie manuell ein neues Image mit Docker

In diesem Artikel wird die Methode zum manuellen ...

javascript:void(0) Bedeutung und Anwendungsbeispiele

Einführung in das Schlüsselwort void Zunächst ein...

Erfahren Sie schnell, wie Sie mit der Vuex-Statusverwaltung in Vue3.0 beginnen

Vuex ist ein speziell für Vue.js-Anwendungen entw...

So stellen Sie mit Docker schnell einen Elasticsearch-Cluster bereit

In diesem Artikel werden Docker Container (orches...

Lösen Sie das Problem ungültiger UTF8-Einstellungen in MySQL 5.6

Nach der Dekomprimierung der grünen Version von m...

Einrichten von VMware vSphere in VMware Workstation (Grafisches Tutorial)

VMware vSphere ist die branchenführende und zuver...

Django2.* + Mysql5.7-Entwicklungsumgebung Integrations-Tutorial-Diagramm

Umfeld: MAC_OS 10.12 Python 3.6 MySQL 5.7.25 Djan...

Vue implementiert scrollbaren Popup-Fenstereffekt

In diesem Artikel wird der spezifische Code von V...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.15

In diesem Artikel werden die Installations- und K...

Detailliertes Tutorial zur Tomcat-Installation und -Bereitstellung in Windows 10

Inhaltsverzeichnis 1 Konfiguration der Java-Umgeb...

Tipps zur Verwendung von Vue-Elementen und Nuxt

1. Konvertierung des Übermittlungsformats für die...

HTML-strukturierte Implementierungsmethode

DIV+CSS-Struktur Lernen Sie CSS-Layout? Sie beherr...

Beispielcode zum Zeichnen von Doppelpfeilen in gängigen CSS-Stilen

1. Mehrere Aufrufe eines einzelnen Pfeils Sobald ...