Position actuelle: Accueil> Derniers articles> Nginx Load Balancing Principe de l'algorithme équitable et guide pratique

Nginx Load Balancing Principe de l'algorithme équitable et guide pratique

M66 2025-10-22

Introduction à l'équilibrage de charge Nginx et à l'algorithme Fair

Dans les systèmes distribués, l'équilibrage de charge est un maillon important pour garantir la stabilité du service et des performances élevées. En tant que serveur Web hautes performances et serveur proxy inverse, Nginx prend en charge une variété d'algorithmes d'équilibrage de charge, parmi lesquels l'algorithme Fair est une stratégie de planification d'équilibrage basée sur le poids.

Principe d'algorithme équitable

L'idée centrale de l'algorithme Fair est d'attribuer les requêtes en fonction du poids du serveur afin que la charge de chaque serveur reste relativement équilibrée. Les étapes de mise en œuvre sont les suivantes :

  • Générez une liste de serveurs basée sur le poids de chaque serveur.
  • Lorsqu'une requête arrive, le serveur ayant le poids actuel le plus élevé est sélectionné pour le traitement.
  • Après avoir traité la requête, soustrayez le plus grand diviseur commun du poids total du poids du serveur.
  • La liste de serveurs mise à jour est utilisée pour la prochaine allocation de requêtes.

Cette méthode peut raisonnablement allouer les requêtes en fonction des différences de performances du serveur et réaliser un équilibrage de charge.

Implémentation de l'algorithme Fair dans Nginx

Nginx ne fournit pas de prise en charge directe de l'algorithme Fair par défaut, mais cela peut être réalisé via une configuration personnalisée. L'exemple suivant montre comment configurer l'algorithme Fair dans Nginx :

 http{
    backend en amont {
        équitable;
        poids du serveur backend1.example.com = 3 ;
        poids du serveur backend2.example.com = 2 ;
        serveur backend3.example.com poids=1 ;
    }

    serveur {
        écoutez 80 ;
        nom_serveur exemple.com ;

        emplacement/{
            proxy_pass http://backend;
        }
    }
}

Dans la configuration, la liste des serveurs est définie via la directive en amont et le poids de chaque serveur est défini viaweight . Les serveurs avec des poids plus élevés traiteront plus de requêtes et utiliseront pleinement les ressources.

Exemple de code de l'algorithme Fair

Afin de comprendre l'algorithme Fair de manière plus intuitive, voici un exemple d'implémentation Python :

 importer des mathématiques

serveurs = [
    {'nom' : 'backend1.example.com', 'poids' : 3},
    {'nom' : 'backend2.example.com', 'poids' : 2},
    {'nom' : 'backend3.example.com', 'poids' : 1},
]

total_weight = sum(server['weight'] pour le serveur dans les serveurs)
gcd = math.gcd(*[server['weight'] pour le serveur dans les serveurs])

pour le serveur dans les serveurs :
    serveur['current_weight'] = serveur['poids']

tandis que Vrai :
    best_server = Aucun
    meilleur_poids = 0

    pour le serveur dans les serveurs :
        serveur['current_weight'] += serveur['weight']
        si serveur['current_weight'] > best_weight :
            meilleur_serveur = serveur
            best_weight = serveur['current_weight']

    best_server['current_weight'] -= poids_total

    print('Demande envoyée à : %s' % best_server['name'])

Dans le code, en calculant le poids actuel du serveur, le serveur le plus approprié est sélectionné dynamiquement pour traiter la demande, et le poids est mis à jour après chaque allocation pour réaliser l'équilibrage de charge.

Résumer

L'algorithme Fair est une stratégie d'équilibrage de charge basée sur le poids qui peut raisonnablement allouer les requêtes en fonction des performances du serveur et améliorer la stabilité et l'efficacité du système. Grâce à la configuration Nginx et à des exemples de code simples, les développeurs peuvent implémenter de manière flexible l'algorithme Fair et ajuster le poids en fonction des performances réelles du serveur pour obtenir des performances système optimales.