Hvordan eksponere flere containerapplikasjoner på samme port med belastningsbalansering

Hvordan eksponere flere containerapplikasjoner på samme port med belastningsbalansering
Docker Compose Command Line Utility of Docker Solution lar oss utføre flere containere -applikasjoner og andre mikroservices i separate containere. Men det er umulig å direkte utføre mer enn en beholder på samme port. For dette formålet bruker Docker -brukere forskjellige teknikker, for eksempel noe rutingsskjema, so_reuseport eller omvendt proxy/lastbalansering.

Denne bloggen vil illustrere hvordan du kan eksponere og distribuere flere containerapplikasjoner på samme port ved hjelp av belastningsbalansering.

Hvordan eksponere flere containerapplikasjoner på samme port med belastningsbalansering?

Lastbalansering eller omvendt proxy er en teknikk for å fordele trafikk fra forskjellige containere på en server. Lastbalansering kan bruke forskjellige rutingsalgoritmer, for eksempel den runde Robin -algoritmen, for å tildele tidsspam til å kjøre den første beholderen, deretter den andre beholderen, og bytt igjen tilbake til den første beholderen, og så videre. Dette kan øke applikasjonens tilgjengelighet, evne og pålitelighet.

Bruk den nevnte prosedyren for illustrasjonen.

Trinn 1: Lag dockerfile

Først må du lage en DockerFile for å containeres applikasjonen. For eksempel har vi definert instruksjonene for å containere "hoved-.gå”App:

Fra Golang: 1.8
Workdir/go/src/app
Kopier Main.gå .
Run Go Build -o Webserver .
INNGANGSPUNKT ["./Internett server"]

Her har vi to forskjellige “hoved-.gå”Programmer i to forskjellige kataloger. I vårt scenario vil det første programmet bruke DockerFile for å konfigurere tjenesten:

Det andre programmet har også samme dockerfile i sin katalog. Ved hjelp av denne filen har vi bygget det nye Docker -bildet "Go1-Image”Det vil bli brukt til å konfigurere den andre tjenesten i komponeringsfilen. For å lage eller bygge bildet, kan du gå gjennom vår tilknyttede artikkel:

Trinn 2: Opprett komponeringsfil

Deretter oppretter du en komponeringsfil som heter "Docker-Compose.yml”Fil som inneholder følgende instruksjoner:

  • tjenester”Konfigurer de tre forskjellige tjenestene”Web”,“Web1”, Og“nginx”. "Web" -tjenesten vil utføre det første programmet, "Web1" -tjenesten vil utføre det andre programmet, og "nginx”Vil kjøre som belastningsbalanse for å balansere eller administrere trafikken fra forskjellige containere.
  • “Web” vil bruke Dockerfile for å containerisere tjenesten. Imidlertid vil "Web1" -tjenesten bruke bildet "Go1-img”For å containere det andre programmet.
  • Volum”Nøkkel brukes til å knytte Nginx.Conf -fil til Nginx -beholderen for å øke tjenestene.
  • kommer an på”Key spesifiserer at“nginx”Tjenesten avhenger av“ Web ”og“ Web1 ”-tjenester.
  • Porter”Key definerer eksponeringsporten til Nginx Load Balancer der oppstrøms tjenester vil utføre:
Versjon: "Alpine"
tjenester:
Web:
bygge: .
Web1:
Bilde: Go1-img
nginx:
Bilde: Nginx: Siste
Volum:
- ./nginx.Conf:/etc/nginx/nginx.Conf: Ro
kommer an på:
- Web
- Web1
Porter:
- 8080: 8080

Trinn 3: Lag “Nginx.Conf ”-fil

Etter det, lag "nginx.konf”Fil og konfigurere oppstrømsjenestene, lytteport av lastbalansen og definere proxy”http: // alle/”For å administrere oppstrømstjenestene:

bruker nginx;
arrangementer
WORKER_CONNECTIONS 1000;

http
oppstrøms alle
Server Web: 8080;
Server Web1: 8080;

server
Lytt 8080;
plassering /
proxy_pass http: // all/;


Trinn 4: Fire opp containerne

Utfør “Docker-Compose Up”Kommanderer om å skyte opp tjenestene i separate containere. Her “-skala”Alternativ brukes til å generere de to kopiene fra den første eller“Web" service:

Docker -Compose Up -Sal Web = 2

For verifiseringen, gå til utsettelseshavnen til “nginx”Service container og bekrefte om den godtar strømmen fra spesifiserte tjenester eller ikke:

Fra ovennevnte utgang kan det observeres at vi har utført flere containere eller tjenester på samme port.

Konklusjon

For å utføre eller eksponere flere containerapplikasjoner på samme port ved hjelp av en belastningsbalanse/omvendt proxy, først, opprette en "nginx.konf”Fil for å konfigurere konfigurasjonene for belastningsbalanser som oppstrøms tjenester, lytteporter og fullmakt til oppstrøms tjenesten. Konfigurer deretter belastningsbalansetjenesten i komponeringsfilen. Denne bloggen har demonstrert hvordan du kan eksponere og kjøre flere containere eller tjenester på samme port.