Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was ist die Methode für ein reibungsloses Upgrade der Nginx-Produktionsumgebung?

Was ist die Methode für ein reibungsloses Upgrade der Nginx-Produktionsumgebung?

WBOY
WBOYnach vorne
2023-05-13 17:58:061326Durchsuche

1. Hintergrund

Ich bin kürzlich auf ein ziemlich peinliches und praktisches Problem gestoßen, nämlich dass der in unserer Produktionsumgebung verwendete Nginx eine Antiquität von Centos6 ist. Geschäftsanforderungen müssen durch Laden eines Nginx-Moduls implementiert werden, aber die Version ist zu alt und benötigt Nginx1.18 oder höher, um sie zu unterstützen, und unsere Version ist Nginx1.12. Dann müssen wir Nginx aktualisieren. Aber in der Produktionsumgebung müssen Sie viele Dinge berücksichtigen. Im Gegensatz zum Testserver stoppt Nginx den Dienst, kompiliert die neue Version neu und startet sie dann erneut. Unsere Online-Dienste müssen unterbrechungsfrei bereitgestellt werden, sonst entstehen wirtschaftliche Verluste für das Unternehmen.

2. Upgrade-Plan

Tatsächlich hat der Beamte bereits genug dafür getan Reibungsloses Upgrade von Nginx Das Grundprinzip besteht darin, einen neuen Nginx-Prozess (Master + Worker) zu starten und dann den Befehl -USER2 an den alten Master-Prozess zu senden, sodass die neue und die alte Version des Prozesses gleichzeitig Verarbeitungsanforderungen empfangen können Zeit. Danach senden wir -WINCH an den alten Prozess, um den funktionierenden Dienst zu stoppen (schließen Sie alle alten Worker-Prozesse, aber der alte Master-Prozess wird nicht geschlossen, um zu verhindern, dass Sie später auf Probleme stoßen). Neues Nginx, dann manuell den alten Master-Prozess beenden, um das reibungslose Upgrade abzuschließen 15181

2 . nginx -V Sehen Sie sich die Kompilierungsparameter der alten Version von nginx an

[root@k8s-master nginx-1.12.2]# ps aux | grep 'nginx' | grep -v '7月' | grep -v 'grep'

root     15180  0.0  0.0  46136   920 ?        Ss   17:22   0:00 nginx: master process ./nginx-1.12.2/sbin/nginx

nobody   15181  0.0  0.1  46584  4344 ?        S    17:22   0:00 nginx: worker process
Wenn make oder ./configure einen Fehler meldet, können Sie versuchen, Folgendes zu installieren: yum install -y gcc-c++

3. Sichern Sie die alte Version des binären Nginx-Programms, mv nginx nginx.old

[root@k8s-master nginx-1.12.2]# nginx-1.12.2/sbin/nginx.old.1.12 -V

nginx version: nginx/1.12.2

built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

built with OpenSSL 1.0.2k-fips  26 Jan 2017

TLS SNI support enabled

configure arguments: --prefix=nginx-1.12.2 --with-pcre=/root/nginx-test/pcre-8.45/ --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-stream

[root@k8s-master nginx-1.12.2]#

4. Zu diesem Zeitpunkt laden wir die neue Version von [nginx1.20.2] herunter und kompilieren sie gemäß den Kompilierungsparametern der alten Version (bzw Fügen Sie selbst ein neues Kompilierungsmodul hinzu. 5. Kopieren Sie das neu generierte binäre Nginx und verschieben Sie es in die vorherige alte Version des Nginx-Pfads Derzeit gibt es 4 Prozesse. 2 alte Nginx-Prozesse.

Die Anfrage wurde zu diesem Zeitpunkt getestet. Die Last wird auf diese beiden Master verteilt.

Die Anfrage wird zweimal gestellt Der Ladevorgang erfolgt auf den neuen Master und der zweite Ladevorgang erfolgt auf den alten Master.

7 Bestätigen Sie, dass das Upgrade erfolgreich ist. Das -WINCH-Signal stoppt die alte Version. Der Master empfängt neue Anforderungen (die alte Version des Nginx-Master-Prozesses ist nicht verfügbar). ist zu diesem Zeitpunkt tot, empfängt aber einfach keine neuen Anfragen mehr.) tritt nicht mehr auf. Was ist die Methode für ein reibungsloses Upgrade der Nginx-Produktionsumgebung?

Hallo Welt wird nicht mehr angezeigt Was ist die Methode für ein reibungsloses Upgrade der Nginx-Produktionsumgebung?

8 Es ist auch sehr einfach, die Version zurückzusetzen, senden Sie einfach kill -HUP 15180 (alter Nginx-Master-Prozess)

Zu diesem Zeitpunkt führen sowohl die alte als auch die neue Version von Nginx einen Lastausgleich durch. Beenden Sie einfach die neue Version von Nginx Master.Was ist die Methode für ein reibungsloses Upgrade der Nginx-Produktionsumgebung?

Zu diesem Zeitpunkt wurde die neue Version von Nginx beendet

Das obige ist der detaillierte Inhalt vonWas ist die Methode für ein reibungsloses Upgrade der Nginx-Produktionsumgebung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen