Come esporre più applicazioni di container sulla stessa porta con bilanciamento del carico

Come esporre più applicazioni di container sulla stessa porta con bilanciamento del carico
Docker composi l'utilità della riga di comando della soluzione Docker ci consente di eseguire più applicazioni di contenitori e altri microservizi in contenitori separati. Ma è impossibile eseguire direttamente più di un contenitore sulla stessa porta. A tale scopo, gli utenti Docker utilizzano tecniche diverse, come alcuni schemi di routing, SO_REUSEPORT o Bilanciamento del proxy/carico inverso.

Questo blog illustrerà come esporre e distribuire più applicazioni di container sulla stessa porta utilizzando il bilanciamento del carico.

Come esporre più applicazioni di container sulla stessa porta con bilanciamento del carico?

Il bilanciamento del carico o il proxy inverso è una tecnica per distribuire il traffico da diversi contenitori su un server. Il bilanciamento del carico può utilizzare diversi algoritmi di routing, come l'algoritmo rotondo di Robin, per allocare il tempo spam per eseguire il primo contenitore, quindi il secondo contenitore, e tornare al primo contenitore, e così via. Ciò può aumentare la disponibilità, la capacità e l'affidabilità dell'applicazione.

Per l'illustrazione, utilizzare la procedura menzionata.

Passaggio 1: crea Dockerfile

Innanzitutto, crea un fikerfile per containerizzare l'applicazione. Ad esempio, abbiamo definito le istruzioni per il contenitore "principale.andare"App:

Da golang: 1.8
Workdir/go/src/app
Copia principale.andare .
Esegui GO Build -O Webserver .
PUNTO D'ENTRATA ["./server web"]

Qui, abbiamo due diversi "principale.andare"Programmi in due diverse directory. Nel nostro scenario, il primo programma utilizzerà Dockerfile per configurare il servizio:

Il secondo programma ha anche lo stesso Dockerfile nella sua directory. Utilizzando questo file, abbiamo creato la nuova immagine Docker "image go1"Verrà utilizzato per configurare il secondo servizio nel file compose. Per creare o costruire l'immagine, puoi passare attraverso il nostro articolo associato:

Passaggio 2: creare un file di commento

Successivamente, crea un file di composizione chiamato "docker-compose.YML"File che contiene le seguenti istruzioni:

  • "Servizi"Configura i tre diversi servizi"ragnatela","Web1", E "nginx". Il servizio "Web" eseguirà il primo programma, il servizio "Web1" eseguirà il secondo programma e "nginx"Funzionerà come saldo del carico per bilanciare o gestire il traffico da diversi contenitori.
  • "Web" utilizzerà Dockerfile per containerizzare il servizio. Tuttavia, il servizio "Web1" utilizzerà l'immagine "go1-img"Per containerizzare il secondo programma.
  • "volumi"La chiave viene utilizzata per collegare NGINX.Conf file al contenitore Nginx per montare i servizi.
  • "dipende da"La chiave specifica che il"nginxIl servizio "dipende dai servizi" Web "e" Web1 ".
  • "porti"Il tasto definisce la porta di esposizione del bilanciamento del carico Nginx dove verranno eseguiti i servizi a monte:
Versione: "Alpine"
Servizi:
ragnatela:
costruire: .
Web1:
Immagine: go1-img
nginx:
Immagine: nginx: ultimo
Volumi:
- ./nginx.conf:/etc/nginx/nginx.conf: ro
dipende da:
- ragnatela
- Web1
Porte:
- 8080: 8080

Passaggio 3: crea “nginx.FILE CONF ”

Dopodiché, crea il "nginx.conf"File e configurare i servizi a monte, la porta di ascolto del bilanciamento del carico e definire il proxy"http: // all/"Per gestire i servizi a monte:

utente nginx;
eventi
worker_connections 1000;

http
a monte tutto
Server Web: 8080;
Server Web1: 8080;

server
Ascolta 8080;
posizione /
proxy_pass http: // all/;


Passaggio 4: accendi i contenitori

Eseguire il "Docker-Opse Up"Comando per accendere i servizi in contenitori separati. Qui "-scala"L'opzione viene utilizzata per generare le due repliche del primo o"ragnatela" servizio:

Docker -Opse Up -Scale Web = 2

Per la verifica, vai alla porta esponente del "nginx"Container di servizio e verifica se accetta il flusso dai servizi specificati o meno:

Dall'output sopra offerto, si può osservare che abbiamo eseguito con successo più contenitori o servizi sulla stessa porta.

Conclusione

Per eseguire o esporre le applicazioni di più contenitori sulla stessa porta utilizzando un bilanciamento del carico/proxy inverso, prima, creare un "nginx.conf"File per configurare le configurazioni del bilanciamento del carico come servizi di upstreaming, porte di ascolto e proxy per montare il servizio. Quindi, configurare il servizio di bilanciamento del carico nel file di composizione. Questo blog ha dimostrato come esporre ed eseguire più contenitori o servizi sulla stessa porta.