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.
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
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.
Hallo Welt wird nicht mehr angezeigt
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.
Zu diesem Zeitpunkt wurde die neue Version von Nginx beendetDas 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!