L'équilibrage de charge Web (Load Balancing), en termes simples, consiste à allouer des « tâches de travail » à notre cluster de serveurs, et l'utilisation de méthodes d'allocation appropriées est très importante pour protéger les serveurs Web back-end.
Équilibrage de charge du proxy inverse
Le travail principal du service de proxy inverse consiste principalement à transmettre les requêtes HTTP, jouant le rôle de le navigateur et le rôle de relais du serveur web backend. Parce qu'il fonctionne au niveau de la couche HTTP (couche application), qui est la septième couche de la structure réseau à sept couches, il est également appelé « équilibrage de charge à sept couches ». Il existe de nombreux logiciels qui peuvent être utilisés comme proxy inverse, et l'un des plus courants est Nginx.
Nginx est un logiciel de proxy inverse très flexible qui peut librement personnaliser les stratégies de transfert, allouer le poids du trafic du serveur, etc. Dans le proxy inverse, un problème courant concerne les données de session stockées par le serveur Web, car la stratégie générale d'équilibrage de charge alloue les requêtes de manière aléatoire. Il n'y a aucune garantie que les requêtes du même utilisateur connecté seront allouées à la même machine Web, ce qui entraînera le problème d'une session introuvable.
Il existe deux solutions principales :
Configurer les règles de redirection du reverse proxy pour que les requêtes d'un même utilisateur doivent tomber sur la même machine (en analysant les cookies) , les règles de transfert complexes consommeront plus de CPU et augmenteront la charge du serveur proxy.
Il est recommandé d'utiliser un service indépendant pour stocker des informations telles que la session, comme redis/memchache.
Le service de proxy inverse peut également activer la mise en cache, s'il est activé, cela augmentera la charge du proxy inverse et doit être utilisé avec prudence. Cette stratégie d'équilibrage de charge est très simple à mettre en œuvre et à déployer, et ses performances sont relativement bonnes. Cependant, il présente le problème du « point de défaillance unique ». S'il se bloque, cela causera beaucoup de problèmes. De plus, à mesure que le nombre de serveurs Web continue d'augmenter au cours des étapes ultérieures, il peut lui-même devenir un goulot d'étranglement du système.
Exemple de fichier de configuration :
#user nobody; worker_processes 1; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream www.hcoder.net { server 192.168.1.188:80 weight=5; server 192.168.1.158:80; } server { listen 80; server_name www.hcoder.net; location / { proxy_pass http://www.hcoder.net; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!