Maison > Opération et maintenance > Nginx > Quelles sont les méthodes de mise en œuvre de l'équilibrage de charge nginx ?

Quelles sont les méthodes de mise en œuvre de l'équilibrage de charge nginx ?

青灯夜游
Libérer: 2019-06-17 17:12:55
original
3529 Les gens l'ont consulté

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. L'équilibrage de charge permet de sélectionner un serveur dans la liste des serveurs backend définie par le module "upstream" pour accepter les demandes des utilisateurs.

Quelles sont les méthodes de mise en œuvre de l'équilibrage de charge nginx ?

Plusieurs méthodes courantes d'équilibrage de charge

1 Interrogation (par défaut)

Chaque requête Ils sont attribués. vers différents serveurs back-end un par un dans l'ordre chronologique. Si le serveur back-end tombe en panne, il peut être automatiquement éliminé.

upstream backserver {
    server 192.168.0.14;
    server 192.168.0.15;
}
Copier après la connexion

2. Weight

spécifie la probabilité d'interrogation. Le poids est proportionnel au taux d'accès et est utilisé lorsque les performances du serveur back-end sont inégales.

upstream backserver {
    server 192.168.0.14 weight=3;
    server 192.168.0.15 weight=7;
}
Copier après la connexion

Plus le poids est élevé, plus la probabilité d'être accédé est grande. Comme dans l'exemple ci-dessus, ils sont respectivement de 30% et 70%.

3. ip_hash

Un problème avec la méthode ci-dessus est que dans le système d'équilibrage de charge, si l'utilisateur se connecte sur un certain serveur, alors lorsqu'il fait une deuxième demande, car nous sont un système d'équilibrage de charge. Chaque requête sera redirigée vers un certain cluster de serveurs. Si un utilisateur connecté à un serveur est redirigé vers un autre serveur, ses informations de connexion seront perdues.

Nous pouvons utiliser l'instruction ip_hash pour résoudre ce problème. Si le client a déjà visité un certain serveur, lorsque l'utilisateur reviendra, la demande sera automatiquement localisée sur le serveur via l'algorithme de hachage.

Chaque requête est allouée en fonction du résultat de hachage de l'IP d'accès, de sorte que chaque visiteur ait un accès fixe à un serveur back-end, ce qui peut résoudre le problème de session.

upstream backserver {
    ip_hash;
    server 192.168.0.14:88;
    server 192.168.0.15:80;
}
Copier après la connexion

4. équitable (tiers)

Les requêtes sont allouées en fonction du temps de réponse du serveur backend, et celles avec des temps de réponse courts sont allouées en premier.

upstream backserver {
    server server1;
    server server2;
    fair;
}
Copier après la connexion

5. url_hash (tiers)

Distribuez les requêtes en fonction du résultat de hachage de l'URL consultée, afin que chaque URL soit dirigée vers le même serveur back-end. lorsque le serveur back-end est mis en cache.

upstream backserver {
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
}
Copier après la connexion

Le statut de chaque appareil est réglé sur :

1), down signifie que le serveur devant le single ne participe temporairement pas au chargement

2) , le poids par défaut est 1. Le poids dépasse Plus il est grand, plus le poids de la charge est important.

3), max_fails : Le nombre d'échecs de requêtes autorisés est par défaut de 1. Lorsque le nombre maximum est dépassé, l'erreur définie par le module proxy_next_upstream est renvoyée

4), fail_timeout : Après max_fails les échecs, le temps.

5), sauvegarde : lorsque toutes les autres machines autres que de sauvegarde sont en panne ou occupées, demandez la machine de sauvegarde. Cette machine aura donc le moins de pression.

Exemple de configuration :

#user  nobody;
worker_processes  4;
events {
    # 最大并发数
    worker_connections  1024;
}
http{
    # 待选服务器列表
    upstream myproject{
        # ip_hash指令,将同一用户引入同一服务器。
        ip_hash;
        server 125.219.42.4 fail_timeout=60s;
        server 172.31.2.183;
        }
    server{
                # 监听端口
                listen 80;
                # 根目录下
                location / {
                    # 选择哪个服务器列表
                    proxy_pass http://myproject;
                }
            }
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal