Kontakta oss

info@serverion.com

NGINX Config for DevOps: Serverions trick to Zero-Downtime Deployments

NGINX Config for DevOps: Serverions trick to Zero-Downtime Deployments

Noll driftstopp innebär att du uppdaterar din applikation utan att avbryta tjänsten – ett måste för företag där även ett kortvarigt avbrott kan kosta miljoner. NGINX gör detta möjligt med sin master-worker-processmodell och smarta signaler som USR2 (starta nya processer) och HUP (ladda om konfiguration). Här är nyckeln:

  • Hur det fungerar: NGINX flyttar trafik från gamla arbetare till uppdaterade utan att tappa anslutningar.
  • Viktiga steg: Använd signaler (USR2, HUP, etc.), konfigurera nginx.conf korrekt och validera ändringar innan du laddar om.
  • Tekniker: Kombinera NGINX med metoder som blågröna distributioner eller Docker för sömlösa uppdateringar.
  • Hälsokontroller: Se till att endast friska servrar hanterar trafik, med hjälp av NGINX:s passiva eller aktiva hälsokontroller.

Med rätt konfiguration kan du hålla dina tjänster igång smidigt under uppdateringar, skydda intäkter och behålla kundernas förtroende.

Grunderna i NGINX för driftsättningar utan driftstopp

Nginx

Noll nedetid distribution förklaras

NGINX använder en master-worker-modell för att hantera uppdateringar utan att avbryta tjänsten. Huvudprocessen övervakar konfiguration och kontroll, medan arbetsprocesser hanterar klientanslutningar. Denna inställning tillåter trafik att sömlöst skifta från gamla arbetare till nya under uppdateringar, vilket säkerställer oavbruten service.

NGINX Connection Management

NGINX förlitar sig på specifika signaler för att styra processer under uppgraderingar eller konfigurationsändringar:

  • USR2: Startar nya master- och arbetsprocesser.
  • VINSCH: Stoppar gamla arbetarprocesser graciöst.
  • HUP: Laddar om konfigurationen och ersätter arbetare.
  • SLUTA: Stänger av befälhavaren och arbetarna graciöst.

Vid omladdning flyttar NGINX det gamla masterprocess-ID till /run/nginx.pid.oldbin, skriver det nya huvudprocessens ID till /run/nginx.pid, och låter gamla arbetare slutföra aktiva förfrågningar innan de stängs av.

Moderna app-distributioner: Hur man använder NGINX och JFrog för att ...

JFrog

Ställa in NGINX för kontinuerlig drift

För att hålla anslutningarna aktiva under omladdningar, dra fördel av NGINX:s master-worker-arkitektur med följande inställningar.

Viktiga NGINX-konfigurationssteg

Sätta på multi_accept för att låta arbetare hantera flera anslutningar per händelse. Här är ett exempel på konfiguration nginx.conf:

worker_processes auto; pid /run/nginx.pid; events { worker_connections 1024; multi_accept on; } http { upstream backend { server backend1.example.com:8080; server backend2.example.com:8080; keepalive 32; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Anslutning ""; proxy_set_header Värd $host; proxy_set_header X-Real-IP $remote_addr; } } }  Behöver du en specifik konfigurationskommando? 

Laddar om konfiguration utan driftstopp

  1. Ladda om de nuvarande arbetarna för att tillämpa ändringar:
    nginx -s ladda om 
  2. Kontrollera det uppdaterade huvudprocess-ID:t:
    cat /run/nginx.pid 
  3. Utför en binär uppgradering utan att stoppa trafiken:
    kill -USR2 $(cat /run/nginx.pid) kill -WINCH $(cat /run/nginx.pid.oldbin) 

Dessa steg gör att trafiken kan övergå smidigt mellan gamla och nya arbetare, vilket säkerställer oavbruten service.

Distributionsmetoder med NGINX

Du kan använda NGINX för att uppnå driftstopp utan driftstopp genom att utnyttja tekniker som blågröna inställningar eller containerbaserade tillvägagångssätt.

Blue-Green Deployment Setup

Med NGINX kan du hantera trafik mellan två miljöer – vanligtvis kallade blå och grön. Dessa miljöer är identiska, men bara en är aktiv åt gången. Så här fungerar det:

  • Distribuera den uppdaterade versionen till den inaktiva miljön (t.ex. grön).
  • Kör hälsokontroller för att säkerställa att den nya versionen fungerar korrekt.
  • När verifierad, uppdatera NGINX-konfiguration för att dirigera trafik till den uppdaterade miljön.
  • Ladda om konfigurationen med hjälp av HUP signal för att undvika att några aktiva anslutningar tappas.

Denna metod säkerställer en smidig övergång utan serviceavbrott.

Docker och NGINX Integration

Att använda Docker med NGINX effektiviserar driftsättningen genom att upprätthålla konsekventa miljöer för både dina applikations- och proxylager. Så här kan du få uppdateringar utan driftstopp:

  • Starta den nya behållaren bredvid den nuvarande aktiva.
  • Utför hälsokontroller för att bekräfta att den nya behållaren är klar.
  • Ändra NGINX uppströmskonfigurationen för att inkludera den nya behållaren.
  • Ladda om konfigurationen med HUP signal, vilket gör att de gamla arbetarna kan avsluta behandlingen innan de lämnar.

Detta tillvägagångssätt säkerställer oavbruten service medan du uppdaterar din applikation.

Testning och verifiering

Konfigurera hälsokontroller

NGINX hälsokontroller hjälper till att säkerställa att endast fungerande servrar hanterar trafik. Dessa kontroller fungerar tillsammans med uppströmskonfiguration och blågrön routing. NGINX erbjuder två typer av hälsokontroller: passiv (tillgänglig i NGINX Open Source) och aktiv (exklusivt för NGINX Plus).

För passiva hälsokontroller i NGINX Open Source, ställ in ditt uppströmsblock så här:

uppströms backend { server backend1.serverion.com:8080 max_fails=3 fail_timeout=30s; server backend2.serverion.com:8080 max_fails=3 fail_timeout=30s; zon backend 64k; } 

Om du använder NGINX Plus kan du aktivera aktiva hälsokontroller genom att lägga till hälsokontroll direktiv tillsammans med a match blockera:

plats / { proxy_pass http://backend; health_check interval=5s misslyckas=3 passerar=2 obligatoriska ihållande; match health_check { status 200; header Innehållstyp = application/json; body ~ '"status":"UPP"'; } } 

Var noga med att validera dessa konfigurationer innan du laddar om NGINX.

Validera konfiguration

Testa alltid att din NGINX-konfiguration är korrekt innan du laddar om. Använd följande kommando:

nginx -t -c /sökväg/till/din/nginx.conf 

Noll nedetid distribution Essentials

Att uppnå driftsättningar utan driftstopp är beroende av noggrann NGINX-konfiguration och gedigen infrastrukturplanering. Dessa element samverkar för att säkerställa att uppdateringar sker utan avbrott.

Här är nyckelfaktorerna för framgång:

  • Processkontroll och konfigurationsvalidering: Dra full nytta av NGINX:s arkitektur samtidigt som du håller dig till grundliga testprotokoll.
  • Infrastrukturens stabilitet: Bibehåll konsekvent prestanda och håll säkerheten tät under hela distributionsprocessen.

För detaljer om hälsokontroller och återställningssteg, kolla in Testning och verifiering avsnitt.

Serverions plattform stödjer dessa ansträngningar med pålitlig stabilitet och säkerhet. Dess globala datacenter Håll prestanda stabil under uppdateringar och inbyggt DDoS-skydd säkerställer att säkerheten förblir intakt.

Börja i det små genom att använda funktionsknappar på icke-kritiska tjänster. Skala upp gradvis, samtidigt som regelbunden testning, noggrann övervakning och tydliga återställningsplaner står i centrum för din strategi.

Relaterade blogginlägg

sv_SE