Dans le cluster de serveurs, Nginx joue le rôle d'un serveur proxy (c'est-à-dire un proxy inverse). Afin d'éviter une pression excessive sur un seul serveur, il transmet les requêtes des utilisateurs vers différents serveurs.
Stratégie d'équilibrage de charge Nginx
L'équilibrage de charge est utilisé à partir de la liste des serveurs backend définis depuis le "amont" module Sélectionnez un serveur pour accepter la demande de l'utilisateur. Un module en amont le plus basique ressemble à ceci. Le serveur dans le module est la liste de serveurs :
#动态服务器组 upstream dynamic_zuoyu { server localhost:8080; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082; #tomcat 8.5 server localhost:8083; #tomcat 9.0 }
Une fois la configuration du module en amont terminée, vous devez inverser le proxy pour l'accès spécifié à la liste de serveurs :
#其他页面反向代理到tomcat容器 location ~ .*$ { index index.jsp index.html; proxy_pass http://dynamic_zuoyu; }
Il s'agit de l'instance d'équilibrage de charge la plus basique, mais elle ne suffit pas à répondre aux besoins réels
Actuellement, le module amont du serveur Nginx prend en charge 6 modes de distribution :
Round La méthode de requête est la stratégie d'équilibrage de charge par défaut du module en amont. Chaque requête est distribuée à un serveur backend différent une par une dans l'ordre chronologique.
Méthode de pondération, spécifiez la probabilité d'interrogation en fonction de la stratégie d'interrogation.
ip_hash, spécifie la méthode d'allocation de l'équilibreur de charge basée sur l'adresse IP du client. Cette méthode garantit que les requêtes du même client sont toujours envoyées au même serveur pour garantir les sessions de session. De cette manière, chaque visiteur dispose d'un accès fixe à un serveur back-end, ce qui peut résoudre le problème de l'impossibilité de la session à traverser les serveurs.
least_conn, transférez la demande au serveur backend avec moins de connexions. L'algorithme d'interrogation transmet les requêtes à chaque backend de manière uniforme afin que leurs charges soient à peu près les mêmes ; cependant, certaines requêtes prennent beaucoup de temps, ce qui entraînera une charge plus élevée du backend où elles se trouvent. Dans ce cas, less_conn peut obtenir un meilleur effet d'équilibrage de charge.
La mise en œuvre de stratégies d'équilibrage de charge tierces nécessite l'installation de plug-ins tiers.
équitable, attribuez les requêtes en fonction du temps de réponse du serveur, et celles avec des temps de réponse courts seront attribuées en premier.
url_hash, alloue les requêtes en fonction du résultat de hachage de l'URL consultée, de sorte que chaque URL soit dirigée vers le même serveur back-end et doit être utilisée conjointement avec les accès au cache. Plusieurs requêtes pour la même ressource peuvent arriver sur différents serveurs, ce qui entraîne des téléchargements multiples inutiles, de faibles taux d'accès au cache et une perte de temps en matière de ressources. En utilisant url_hash, la même URL (c'est-à-dire la même demande de ressource) peut atteindre le même serveur. Une fois la ressource mise en cache, elle peut être lue depuis le cache lorsqu'une demande est reçue.
Pour plus d'articles techniques liés à Nginx, veuillez visiter la colonne Tutoriel d'utilisation de Nginx pour apprendre !
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!