Comment exposer plusieurs applications de conteneurs sur le même port avec l'équilibrage de la charge

Comment exposer plusieurs applications de conteneurs sur le même port avec l'équilibrage de la charge
Docker Compose Command Line Utility of Docker Solution nous permet d'exécuter plusieurs applications de conteneurs et autres microservices dans des conteneurs séparés. Mais il est impossible d'exécuter directement plus d'un conteneur sur le même port. À cette fin, les utilisateurs de Docker utilisent différentes techniques, telles que certains schéma de routage, SO_REUSEPORT ou proxy inversé / équilibrage de chargement.

Ce blog illustrera comment exposer et déployer plusieurs applications de conteneurs sur le même port en utilisant l'équilibrage de chargement.

Comment exposer plusieurs applications de conteneurs sur le même port avec l'équilibrage de la charge?

L'équilibrage de charge ou le proxy inversé est une technique pour distribuer le trafic à partir de différents conteneurs sur un serveur. L'équilibrage de la charge peut utiliser différents algorithmes de routage, tels que l'algorithme de Round Robin, pour allouer le spam de temps pour exécuter le premier conteneur, puis le deuxième conteneur, et à nouveau revenir au premier conteneur, et ainsi de suite. Cela peut augmenter la disponibilité, la capacité et la fiabilité de l'application.

Pour l'illustration, utilisez la procédure mentionnée.

Étape 1: Créer Dockerfile

Tout d'abord, créez un dockerfile pour conteneuriser l'application. Par exemple, nous avons défini les instructions pour conteneuriser le «principal.aller»App:

De Golang: 1.8
Workdir / go / src / app
Copier principal.aller .
Exécuter Go Build -O Webserver .
POINT D'ACCÈS ["./serveur Web"]

Ici, nous avons deux différents «principal.aller»Programmes dans deux répertoires différents. Dans notre scénario, le premier programme utilisera DockerFile pour configurer le service:

Le deuxième programme a également le même dockerfile dans son répertoire. En utilisant ce fichier, nous avons construit la nouvelle image Docker "IMAGE GO1«Cela sera utilisé pour configurer le deuxième service dans le fichier de composition. Pour créer ou construire l'image, vous pouvez passer par notre article associé:

Étape 2: Créer un fichier composé

Ensuite, créez un fichier composé nommé "composer docker.YML”Fichier qui contient les instructions suivantes:

  • "prestations de service"Configurez les trois services différents"la toile","web1", et "nginx". Le service «Web» exécutera le premier programme, le service «Web1» exécutera le deuxième programme et «nginx»Fonctionnera en tant que balance de charge pour équilibrer ou gérer le trafic à partir de différents conteneurs.
  • «Web» utilisera le dockerfile pour couler le service. Cependant, le service «Web1» utilisera l'image «Go1-IMG”Pour conteneuriser le deuxième programme.
  • "volumes»La touche est utilisée pour fixer le nginx.Fichier Conf au conteneur Nginx pour en amont les services.
  • "dépend de»La clé spécifie que le«nginx«Le service dépend des services« Web »et« web1 ».
  • "ports»La clé définit le port exposant de l'équilibreur de charge Nginx où les services en amont s'exécuteront:
Version: "Alpine"
prestations de service:
la toile:
construire: .
web1:
Image: Go1-IMG
nginx:
Image: Nginx: Dernière
Volumes:
- ./ nginx.conf: / etc / nginx / nginx.conf: ro
dépend de:
- la toile
- web1
PORTS:
- 8080: 8080

Étape 3: Créez «Nginx.Fichier Conf ”

Après cela, créez le «nginx.confli«Fichier et configurer les services en amont, le port d'écoute de l'équilibreur de charge et définir le proxy»http: // tout /«Pour gérer les services en amont:

utilisateur nginx;
événements
Worker_Connections 1000;

http
en amont tout
Web de serveur: 8080;
serveur web1: 8080;

serveur
Écoutez 8080;
emplacement /
proxy_pass http: // all /;


Étape 4: tirez les conteneurs

Exécuter le "secouer docker»Commande de tirer les services dans des conteneurs séparés. Ici "-escalader«L'option est utilisée pour générer les deux répliques du premier ou«la toile" service:

docker-compose up -scale web = 2

Pour la vérification, allez au port d'exposition du «nginx”Contaiteur de service et vérifiez s'il accepte le flux à partir de services spécifiés ou non:

À partir de la sortie ci-dessus, on peut observer que nous avons exécuté avec succès plusieurs conteneurs ou services sur le même port.

Conclusion

Pour exécuter ou exposer les applications de conteneurs multiples sur le même port à l'aide d'un équilibreur de charge / proxy inversé, créez d'abord un «nginx.confli”Fichier pour configurer les configurations d'équilibreur de charge telles que les services d'administration, les ports d'écoute et le proxy pour en amont le service. Ensuite, configurez le service d'équilibrage de charge dans le fichier composé. Ce blog a démontré comment exposer et exécuter plusieurs conteneurs ou services sur le même port.