API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) · leksjon

Upstream-servere og lastbalansering

Konfigurer upstream-blokker i Nginx for å håndtere flere backend-servere og fordele innkommende forespørsler.

Leksjon 2 av 411 trinn

Upstream-servere og lastbalansering er en gratis leksjon i API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i API-gateway og reverse proxy (Nginx + Spring Cloud Gateway), og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) inneholder totalt 4 leksjoner.

Skalering av applikasjoner

Etter hvert som webapplikasjonen vokser, er det ikke sikkert at én server er nok til å håndtere alle innkommende forespørsler. Dette kan føre til lange svartider eller til og med krasj.

For å unngå dette bruker vi flere backend-servere til å dele belastningen. Dette forbedrer både ytelsen og påliteligheten.

Introduksjon til upstream-servere

Nginx kan fungere som en reverse proxy som fordeler forespørsler til en gruppe backend-servere. Disse backend-serverne kalles ofte upstream-servere.

  • Skalerbarhet: Håndter mer trafikk ved å legge til flere servere.
  • Høy tilgjengelighet: Hvis én server svikter, kan de andre fortsatt svare.
  • Lastbalansering: Fordel forespørsler effektivt mellom serverne.

`upstream`-blokken

I Nginx definerer du en gruppe backend-servere ved hjelp av upstream-blokken. Denne blokken gir gruppen et navn som du deretter kan referere til i location-blokkene.

Tenk på det som en navngitt ressursgruppe som Nginx kan videresende forespørsler til.

Grunnleggende upstream-konfigurasjon

Slik definerer du en enkel upstream-blokk med navnet my_backends og to servere. Hvert server-direktiv angir adressen (IP-adresse eller vertsnavn) og porten til en backend-server.

upstream my_backends {
  server 192.168.1.100:8080;
  server 192.168.1.101:8080;
}

Koble upstream til `location`

Når en upstream-blokk er definert, kan du bruke den i en location-blokk i Nginx-serverkonfigurasjonen. proxy_pass-direktivet forteller Nginx at forespørsler skal videresendes til den angitte upstream-gruppen.

Legg merke til at vi bruker http://my_backends for å referere til gruppen vi definerte.

http {
  upstream my_backends {
    server 192.168.1.100:8080;
    server 192.168.1.101:8080;
  }

  server {
    listen 80;
    location /app {
      proxy_pass http://my_backends;
    }
  }
}

Standard lastbalansering: Round Robin

Som standard bruker Nginx lastbalanseringsmetoden Round Robin. Det betyr at forespørsler fordeles til upstream-serverne i en roterende, sekvensiell rekkefølge.

  • Forespørsel 1 går til server A.
  • Forespørsel 2 går til server B.
  • Forespørsel 3 går til server A.
  • ... og så videre.

Dette er enkelt og effektivt når belastningen skal fordeles jevnt.

Tilpasse belastningen med `weight`

Hva om noen servere er kraftigere eller bør håndtere mer trafikk? Du kan bruke parameteren weight i server-direktivet til å tildele ulike prioriteringer.

En server med høyere vekt vil motta en tilsvarende større andel av forespørslene.

Eksempel på `weight` i Nginx

I dette eksempelet har server 1 en vekt på 3, mens server 2 har en vekt på 1. Det betyr at server 1 vil motta tre ganger så mange forespørsler som server 2.

Av hver 4. forespørsel går 3 til server 1 og 1 til server 2.

upstream my_backends {
  server 192.168.1.100:8080 weight=3;
  server 192.168.1.101:8080 weight=1;
}

Andre serverdirektiver

I tillegg til weight finnes det andre direktiver som kan finjustere serverens oppførsel:

  • max_fails=N: Antall mislykkede forsøk før Nginx anser serveren som utilgjengelig.
  • fail_timeout=Xs: Hvor lenge serveren anses som utilgjengelig etter max_fails forsøk.
  • backup: Markerer en server som reserve, og den brukes bare når alle primærserverne er nede.
  • down: Markerer en server som permanent utilgjengelig.

Dette hjelper Nginx med å administrere servertilstanden automatisk.

Rask sjekk: upstream og lastbalansering

Se på følgende konfigurasjonsutdrag fra Nginx:

upstream api_servers {
  server backend1.example.com:8080 weight=2;
  server backend2.example.com:8080;
}

server {
  listen 80;
  location /api {
    proxy_pass http://api_servers;
  }
}

Hvis det kommer inn 9 forespørsler til endepunktet /api, hvor mange forespørsler blir sendt til backend1.example.com:8080?

Oppsummering og neste steg

De har lært hvordan Nginx bruker upstream-blokker til å gruppere flere backend-servere, noe som muliggjør lastbalansering og gjør applikasjonen mer robust.

  • upstream-blokk: Definerer en navngitt gruppe med servere.
  • proxy_pass: Kobler en location til en upstream-gruppe.
  • Round Robin: Nginx' standardmetode for lastbalansering.
  • weight-direktiv: Tilpasser fordelingen av forespørsler mellom serverne.

Deretter skal vi se på hvordan Nginx kan forbedre ytelsen med proxy-bufring og caching!

Gratis å komme i gang

Lær deg API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Upstream-servere og lastbalansering» gratis?

Ja – hele teksten i «Upstream-servere og lastbalansering» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-kurset, kan du oppgradere til CoddyKit PRO. Kurset i API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) inneholder totalt 4 leksjoner.

Hva lærer jeg i «Upstream-servere og lastbalansering»?

Konfigurer upstream-blokker i Nginx for å håndtere flere backend-servere og fordele innkommende forespørsler. Du øver på API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)?

Ingen tidligere erfaring er nødvendig. API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Upstream-servere og lastbalansering»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-leksjonen?

Ja. Alle API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Konfigurering av enkel reverse proxy
  2. Upstream-servere og lastbalansering
  3. Proxybufring og hurtigbufring
  4. Videresending av headere og klient-IP
← Tilbake til API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)