Upstream-servere og lastbalansering
Konfigurer upstream-blokker i Nginx for å håndtere flere backend-servere og fordele innkommende forespørsler.
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 ettermax_failsforsø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 enlocationtil enupstream-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!
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
- Konfigurering av enkel reverse proxy
- Upstream-servere og lastbalansering
- Proxybufring og hurtigbufring
- Videresending av headere og klient-IP