Lassen Sie uns heute über eine Situation sprechen, die in der tatsächlichen Produktionsumgebung eines Unternehmens häufig auftritt: das Upgrade von Nginx auf eine neue Version und das Zurücksetzen auf die alte Version. 1. Umgebung Einführung Die beiden heute vorbereiteten Nginx-Versionen sind wie folgt: [root@nginx ~]# cd /download/nginx/ [root@nginx nginx]# ll gesamt 1952 -rw-r--r-- 1 root root 981687 17. Oktober 2017 nginx-1.12.2.tar.gz -rw-r--r-- 1 root root 1015384 4. Dez. 09:58 nginx-1.14.2.tar.gz 2. Kompilieren und installieren Sie die alte und neue Version Kompilieren und installieren Sie nginx-1.12.2 [root@nginx nginx]# tar zxf nginx-1.12.2.tar.gz [root@nginx nginx]# cd nginx-1.12.2 [root@nginx nginx-1.12.2]# ./configure --prefix=/usr/local/nginx-1.12.2 [root@nginx nginx-1.12.2]# echo $? 0 [root@nginx nginx-1.12.2]# make && make install [root@nginx nginx-1.12.2]# echo $? 0 [root@nginx nginx-1.12.2]# ll /usr/local/nginx-1.12.2/ gesamt 0 drwxr-xr-x 2 root root 333 1. März 09:01 conf drwxr-xr-x 2 root root 40 1. März 09:01 html drwxr-xr-x 2 root root 6 1. März 09:01 Protokolle drwxr-xr-x 2 root root 19 Mär 1 09:01 sbin Kompilieren und installieren Sie nginx-1.14.2 [root@nginx ~]# cd /download/nginx/ [root@nginx nginx]# tar zxf nginx-1.14.2.tar.gz [root@nginx nginx]# cd nginx-1.14.2 [root@nginx nginx-1.14.2]# ./configure --prefix=/usr/local/nginx-1.14.2 [root@nginx nginx-1.14.2]# echo $? 0 [root@nginx nginx-1.14.2]# make && make install [root@nginx nginx-1.14.2]# echo $? 0 [root@nginx nginx-1.14.2]# ls -l /usr/local/nginx-1.14.2/ gesamt 0 drwxr-xr-x 2 root root 333 1. März 09:03 conf drwxr-xr-x 2 root root 40 1. März 09:03 html drwxr-xr-x 2 root root 6 1. März 09:03 Protokolle drwxr-xr-x 2 root root 19 Mär 1 09:03 sbin Zu diesem Zeitpunkt wurden zwei Versionen der Nginx-Software bereitgestellt. 3. Starten Sie die alte Version von nginx [root@nginx ~]# /usr/local/nginx-1.12.2/sbin/nginx -t nginx: die Syntax der Konfigurationsdatei /usr/local/nginx-1.12.2/conf/nginx.conf ist in Ordnung nginx: Test der Konfigurationsdatei /usr/local/nginx-1.12.2/conf/nginx.conf ist erfolgreich [root@nginx ~]# /usr/local/nginx-1.12.2/sbin/nginx [root@nginx ~]# ps -ef|grep nginx root 6324 1 0 09:06 ? 00:00:00 nginx: Masterprozess /usr/local/nginx-1.12.2/sbin/nginx niemand 6325 6324 0 09:06 ? 00:00:00 nginx: Arbeitsprozess root 6327 1244 0 09:06 Punkte/0 00:00:00 grep --color=auto nginx [root@nginx ~]# lsof -i :80 BEFEHL PID BENUTZER FD TYP GERÄTEGRÖSSE/AUS KNOTENNAME nginx 6324 root 6u IPv4 26324 0t0 TCP *:http (HÖREN) nginx 6325 niemand 6u IPv4 26324 0t0 TCP *:http (HÖREN) 4. Upgrade auf die neueste Version Bei einem Versionsupgrade handelt es sich eigentlich um ein Upgrade für Binärdateien. Der Vorgang läuft wie folgt ab: [root@nginx ~]# /usr/local/nginx-1.12.2/sbin/nginx -v Nginx-Version: nginx/1.12.2 [root@nginx ~]# cd /usr/local/nginx-1.12.2/sbin/ [root@nginx sbin]# mv nginx nginx-1.12.2 #Sichern Sie zuerst die ursprüngliche alte Version der Nginx-Binärdatei [root@nginx sbin]# cp /usr/local/nginx-1.14.2/sbin/nginx ./ #Kopieren Sie die neue Version der Binärdatei in das aktuelle Verzeichnis Führen Sie als Nächstes einen reibungslosen Upgrade-Vorgang durch [root@nginx ~]# ps -ef|grep nginx root 6324 1 0 09:06 ? 00:00:00 nginx: Masterprozess /usr/local/nginx-1.12.2/sbin/nginx niemand 6325 6324 0 09:06 ? 00:00:00 nginx: Arbeitsprozess root 6338 1244 0 09:11 Punkte/0 00:00:00 grep --color=auto nginx [root@nginx ~]# kill -USR2 6324 [root@nginx ~]# ps -ef|grep nginx root 6324 1 0 09:06 ? 00:00:00 nginx: Masterprozess /usr/local/nginx-1.12.2/sbin/nginx niemand 6325 6324 0 09:06 ? 00:00:00 nginx: Arbeitsprozess root 6340 6324 0 09:12 ? 00:00:00 nginx: Masterprozess /usr/local/nginx-1.12.2/sbin/nginx niemand 6341 6340 0 09:12 ? 00:00:00 nginx: Arbeitsprozess root 6343 1244 0 09:12 pts/0 00:00:00 grep --color=auto nginx Zu diesem Zeitpunkt wurde der neue Masterprozess normal gestartet, aber der alte Arbeitsprozess existiert noch. Daher verwenden wir den folgenden Befehl, um dem alten Arbeitsprozess zu signalisieren, dass er reibungslos gestoppt werden soll: [root@nginx ~]# kill -WINCH 6324 [root@nginx ~]# ps -ef|grep nginx root 6324 1 0 09:06 ? 00:00:00 nginx: Masterprozess /usr/local/nginx-1.12.2/sbin/nginx root 6340 6324 0 09:12 ? 00:00:00 nginx: Masterprozess /usr/local/nginx-1.12.2/sbin/nginx niemand 6341 6340 0 09:12 ? 00:00:00 nginx: Arbeitsprozess root 6346 1244 0 09:14 pts/0 00:00:00 grep --color=auto nginx An diesem Punkt wurde der alte Worker-Prozess gestoppt. Als nächstes testen wir, ob er normal aufgerufen werden kann: Der Zugriff ist normal möglich. Tatsächlich ist dieses reibungslose Upgrade für die zugreifenden Benutzer völlig unbemerkt, sodass die Hot-Bereitstellung von Nginx abgeschlossen ist. [root@nginx ~]# /usr/local/nginx-1.12.2/sbin/nginx -v Nginx-Version: nginx/1.14.2 Überprüfen Sie die Version. Es handelt sich um die neuste Version. Das Upgrade ist abgeschlossen. Hinweis: Wenn nach Abschluss des Versions-Upgrades keine Probleme auftreten und Sie den alten Master-Prozess beenden müssen, können Sie den folgenden Befehl verwenden: töten -QUIT old_master_PID 5. Versions-Rollback Der schwierigste Teil des Upgrades ist nicht das Upgrade, sondern das Rollback, da in der tatsächlichen Produktionsumgebung die Möglichkeit eines Rollbacks besteht. Beispielsweise ist die neue Version aufgrund unbekannter Fehler nicht mit der vorhandenen Anwendung kompatibel oder der Betrieb wird instabil usw. Daher ist für Betriebs- und Wartungsingenieure die Fehlerbehebung der entscheidende Punkt. In den obigen Ergebnissen können wir auch sehen, dass der alte Masterprozess immer existiert. Er wird nicht von selbst heruntergefahren, es sei denn, er wird manuell heruntergefahren. Dieses Design ist vorteilhaft. Der Vorteil besteht darin, dass nach dem Upgrade auf die neue Version bei Problemen zeitnah und schnell auf die vorherige stabile Version zurückgesetzt werden kann. [root@nginx ~]# ps -ef|grep nginx root 6324 1 0 09:06 ? 00:00:00 nginx: Masterprozess /usr/local/nginx-1.12.2/sbin/nginx root 6340 6324 0 09:12 ? 00:00:00 nginx: Masterprozess /usr/local/nginx-1.12.2/sbin/nginx niemand 6341 6340 0 09:12 ? 00:00:00 nginx: Arbeitsprozess root 6350 1244 0 09:23 Punkte/0 00:00:00 grep --color=auto nginx [root@nginx ~]# cd /usr/local/nginx-1.12.2/sbin/ [root@nginx sbin]# mv nginx nginx-1.14.2 [root@nginx sbin]# mv nginx-1.12.2 nginx [root@nginx sbin]# kill -USR1 6324 [root@nginx sbin]# ps -ef|grep nginx root 6324 1 0 09:06 ? 00:00:00 nginx: Masterprozess /usr/local/nginx-1.12.2/sbin/nginx root 6340 6324 0 09:12 ? 00:00:00 nginx: Masterprozess /usr/local/nginx-1.12.2/sbin/nginx niemand 6341 6340 0 09:12 ? 00:00:00 nginx: Arbeitsprozess root 6355 1244 0 09:24 pts/0 00:00:00 grep --color=auto nginx [root@nginx sbin]# ./nginx -v Nginx-Version: nginx/1.12.2 Aus den obigen Ergebnissen können wir erkennen, dass die vorherige Version problemlos zurückgesetzt wurde. Als Nächstes testen wir, ob normal darauf zugegriffen werden kann: Der normale Zugriff ist weiterhin möglich, so dass auch der Rollback-Vorgang für den Benutzer nicht wahrnehmbar ist. 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:
|
>>: Beispiel für die Verwendung von CASE WHEN beim Sortieren in MySQL
Inhaltsverzeichnis nächstesTick Syntaxvereinfachu...
Viele Unternehmen bieten derzeit Sonderaktionen m...
Bezüglich einiger MySQL-Spezifikationen haben man...
Vorwort Nach einem Failover sind Synchronisierung...
Inhaltsverzeichnis Ziehen Sie das Rocketmq-Image ...
Fehlerszenario Beim Aufrufen von JDBC zum Einfüge...
Wie unten dargestellt: #!/usr/bin/env python3.5 p...
Was ist der Eingabetyp="Datei"? Ich glau...
1. Projektstruktur 2. Rufen Sie Tomcat.java auf P...
1. Führen Sie die .sh-Datei aus Sie können es dir...
Beim Schreiben gespeicherter Prozeduren werden hä...
Installieren Sie schnell die Tensorflow-Umgebung ...
Da die Version, die ich beim Lernen verwendet hab...
Docker ist ein Open-Source-Projekt, das Entwickle...
Ein Port ändert sich In Version 3.2.0 beträgt der...