À l'ère du cloud computing, il est très important de s'assurer que les services Web ont une haute disponibilité et des performances élevées. La mise à l'échelle élastique est une solution efficace pour s'adapter aux changements de trafic en étendant dynamiquement les ressources. La combinaison de Docker et Nginx nous fournit une puissante solution architecturale pour un équilibrage de chargement facile et des capacités de mise à l'échelle élastiques des services Web.
Tout d'abord, nous devons créer un service Web simple à tester. Ici, nous utilisons les frameworks Node.js et Express.js pour créer une application simple "Hello World". Voici le code de l'application:
const Express = require ('express'); const app = express (); app.get ('/', (req, res) => { res.send («Bonjour, monde!»); }); app.Listen (3000, () => { console.log ('Server s'exécute sur le port 3000'); });
Ensuite, nous devons conteneuriser cette application à l'aide de Docker. Créez un dockerfile dans le répertoire racine du projet, avec le contenu suivant:
# Dockerfile De Node: Alpine WorkDir / App Copier le package * .json ./ Exécuter l'installation de NPM Copie. . Exposer 3000 Cmd ["nœud", "app.js"]
Ce dockerfile définit la version alpine de l'image Node.js, configurez le répertoire de travail, installez les dépendances et exécutez l'application Node.js lorsque le conteneur démarre.
Construisez et exécutez le conteneur Docker avec la commande suivante:
$ docker build -t myapp. $ docker run -dp 3000: 3000 myapp
Après l'exécution, le conteneur cartographiera 3000 ports, qui peuvent accéder à l'application via l'adresse IP de l'hôte.
Afin d'atteindre l'équilibrage de charge et la mise à l'échelle élastique des services Web, nous devons configurer Nginx en tant que serveur proxy inversé. Installez d'abord Nginx et modifiez son fichier de configuration:
$ sudo apt-get updat $ sudo apt-get install nginx $ sudo nano /etc/nginx/conf.d/default.conf
Dans le fichier de configuration Nginx, ajoutez ce qui suit:
# /etc/nginx/conf.d/default.conf APP_SERVERS en amont { # Remplissez ici vos informations IP et port de conteneur Docker, et il peut y avoir plusieurs serveurs<CONTAINER_IP> : 3000; } serveur { Écoutez 80; emplacement / { proxy_pass http: // app_servers; proxy_set_header host $ host; proxy_set_header x-real-ip $ Remote_addr; } }
Ici, nous définissons un groupe "app_servers" pour contenir des instances de conteneur Docker. Nginx sera proxy demandes à ces instances de conteneurs, réalisant ainsi l'équilibrage de la charge.
Après enregistrer et sortir le fichier de configuration, redémarrez le service Nginx pour appliquer la nouvelle configuration:
$ sudo service nginx redémarrer
En configurant l'équilibrage de charge pour Nginx, l'expansion des conteneurs devient très simple. Lorsque vous devez ajouter une instance de conteneur, vous n'avez qu'à exécuter une nouvelle instance de conteneur Docker, et Nginx reconnaîtra et distribuera automatiquement le trafic vers le nouveau conteneur.
En contenant des applications Web et en configurant un serveur proxy NGINX, nous pouvons implémenter une architecture de mise à l'échelle élastique hautement disponible et haute performance. La combinaison de Docker et Nginx nous fournit non seulement une solution conteneurisée simple, mais rend également l'équilibrage de charge et la gestion du trafic plus flexible et efficace. J'espère que cet article vous aidera à comprendre comment configurer le serveur proxy Nginx dans des conteneurs Docker pour améliorer les capacités de mise à l'échelle élastiques des services Web.