Lorsque les entreprises résolvent des problèmes de concurrence élevée, elles ont généralement deux stratégies de traitement, logicielle et matérielle, un équilibreur de charge est ajouté pour distribuer un grand nombre de requêtes. Sur le logiciel, un équilibreur de charge peut être ajouté en même temps. Goulot d'étranglement à forte concurrence : base de données + serveur Web, parmi lesquels la solution la plus couramment utilisée pour ajouter de la charge sur la couche avant du serveur Web consiste à utiliser nginx pour réaliser l'équilibrage de charge.
1. Le rôle de l'équilibrage de charge
1. Selon un certain algorithme [pondération, sondage] transmet les requêtes des clients à différents serveurs d'applications, réduisant ainsi la pression sur un seul serveur et augmentant la concurrence du système.
2. Suppression des défauts
Utilisez la détection des battements de cœur pour déterminer si le serveur d'applications peut actuellement fonctionner normalement. Si le serveur tombe en panne, la demande sera automatiquement envoyée à d'autres serveurs d'applications.
3. Restaurer et ajouter
(apprentissage recommandé :
tutoriel nginx) S'il est détecté que le serveur d'applications défaillant a repris son travail, il sera ajouté automatiquement. Rejoignez l'équipe qui gère les demandes des utilisateurs.
2. Nginx implémente l'équilibrage de chargeUtilise également deux tomcats pour simuler deux serveurs d'applications, les numéros de port sont 8080 et 8081.
1. La stratégie de distribution de charge de Nginx
L'amont de Nginx prend actuellement en charge l'algorithme de distribution :
1), interrogation - traitement 1:1 à tour de rôle Requêtes (par défaut)Chaque requête est attribuée à un serveur d'applications différent une par une dans l'ordre chronologique. Si le serveur d'applications tombe en panne, il sera automatiquement éliminé et les autres continueront d'être interrogées.
2), poids - vous pouvez augmenterEn configurant le poids, spécifiez la probabilité d'interrogation, le poids est proportionnel au taux d'accès, qui est utilisé lorsque les performances du serveur d'applications ne sont pas bonnes dans la moyenne.
3), algorithme ip_hashChaque requête est allouée en fonction du résultat de hachage de l'IP accédée, afin que chaque visiteur ait un accès fixe à un serveur d'application, ce qui peut résoudre les problèmes partagés de la session.
2. Configurez la stratégie d'équilibrage de charge et de distribution de Nginx
Cela peut être réalisé en ajoutant des paramètres spécifiés après l'adresse IP du serveur d'application ajoutée dans les paramètres en amont, tels que :
upstream tomcatserver1 { server 192.168.72.49:8080 weight=3; server 192.168.72.49:8081; } server { listen 80; server_name 8080.max.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://tomcatserver1; index index.html index.htm; } }
Réussi La configuration ci-dessus peut être réalisée. Lors de l'accès au site Web
8080.max.com, en raison de la configuration de l'adresse proxy_pass, toutes les requêtes passeront d'abord par le serveur proxy inverse nginx. , puis le serveur Lorsque la demande est transmise à l'hôte de destination, lira l'adresse en amont de tomcatsever1, lira la politique de distribution et configurera le poids de tomcat1 sur 3, donc nginx enverra la plupart des requêtes à tomcat1 sur le serveur 49, qui est le port 8080 ; un nombre plus petit sera envoyé à tomcat1 sur le serveur 49, qui est le port 8080 ; pour obtenir un équilibrage de charge conditionnel. Bien entendu, cette condition est la capacité de traitement des demandes d'index matériel des serveurs 1 et 2.
3. Autres configurations de nginx
upstream myServer { server 192.168.72.49:9090 down; server 192.168.72.49:8080 weight=2; server 192.168.72.49:6060; server 192.168.72.49:7070 backup; }
1) down
signifie que le serveur frontal unique ne participera pas temporairement au chargement
2) Poids
La valeur par défaut est 1. Plus le poids est important, plus le poids de la charge est important.
3) max_fails
Le nombre d'échecs de requêtes autorisés est de 1 par défaut. Lorsque le nombre maximum est dépassé, l'erreur définie par le module proxy_next_upstream est renvoyée
4) fail_timeout
Temps de pause après les échecs max_fails.
5) Sauvegarde
Lorsque toutes les autres machines non sauvegardées sont en panne ou occupées, demandez la machine de sauvegarde. Cette machine aura donc le moins de pression.
3. Haute disponibilité à l'aide de NginxEn plus d'atteindre la haute disponibilité du site Web, c'est-à-dire de fournir n plusieurs serveurs pour publier le même service et ajouter un équilibrage de charge Le serveur distribue les requêtes pour garantir que chaque serveur peut traiter des requêtes relativement saturées dans des conditions de concurrence élevée. De même, le serveur d'équilibrage de charge doit également être hautement disponible pour éviter que les serveurs d'applications suivants ne soient perturbés et incapables de fonctionner si le serveur d'équilibrage de charge raccroche.
Une solution pour atteindre la haute disponibilité : ajouter de la redondance. Ajoutez n serveurs nginx pour éviter le point de défaillance unique ci-dessus.
4. RésuméPour résumer, l'équilibrage de charge, qu'il s'agisse d'une variété de solutions logicielles ou matérielles, distribue principalement un grand nombre de requêtes simultanées selon certaines règles. . Laissez différents serveurs le gérer, réduisant ainsi la pression instantanée sur un certain serveur et améliorant la capacité anti-concurrence du site Web. L'auteur estime que la raison pour laquelle nginx est largement utilisé dans l'équilibrage de charge est due à sa configuration flexible. Un fichier nginx.conf résout la plupart des problèmes, qu'il s'agisse de nginx créant un serveur virtuel, d'un serveur proxy inverse nginx ou de nginx présenté dans cet article. L'équilibrage de charge est presque toujours effectué dans ce fichier de configuration. Le serveur est uniquement responsable de la configuration de nginx et de son exécution. De plus, il est léger et permet d’obtenir de meilleurs résultats sans occuper trop de ressources du serveur.
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!