Position actuelle: Accueil> Derniers articles> Explication détaillée des solutions de configuration d'équilibrage de charge Nginx et de reprise après sinistre

Explication détaillée des solutions de configuration d'équilibrage de charge Nginx et de reprise après sinistre

M66 2025-07-03

Principes de base et configuration de l'équilibrage de la charge

L'équilibrage de la charge consiste à augmenter les performances et la disponibilité de votre application en distribuant le trafic vers plusieurs serveurs. Nginx utilise différents algorithmes pour gérer le trafic de demande, y compris le sondage, le hachage IP et les connexions minimales.

(1) Round Robin : Il s'agit de la stratégie d'équilibrage de charge par défaut de Nginx et les demandes sont allouées dans l'ordre du serveur.

(2) IP Hash : Cette stratégie détermine le serveur cible demandé en fonction de l'adresse IP du client, en veillant à ce que la demande de même IP soit toujours traitée par le même serveur.

(3) Connexion le moins : cette stratégie attribue les demandes au serveur avec le plus faible nombre de connexions à l'heure actuelle.

Voici un exemple de configuration d'équilibrage de charge Nginx simple:

 http { 
    Backend en amont { 
        serveur backend1.example.com; 
        serveur backend2.example.com; 
        serveur backend3.example.com; 
    } 
    serveur { 
        Écoutez 80; 
        emplacement / { 
            proxy_pass http: // backend; 
        } 
    } 
}

Dans cette configuration, nous définissons un bloc en amont contenant trois serveurs backend et transférons la demande au serveur backend via la directive Proxy_Pass.

Plan de reprise après sinistre

Le plan de reprise après sinistre garantit que le système peut toujours fournir des services lorsqu'un serveur échoue. L'utilisation de l'équilibrage de la charge de Nginx peut réaliser une reprise après sinistre de la manière suivante:

(1) Vérification de la santé : Nginx peut vérifier régulièrement l'état de santé du serveur backend. Si un serveur ne répond pas ou ne renvoie pas une erreur, Nginx transmet automatiquement le trafic vers d'autres serveurs sains.

Voici un exemple de configuration d'un contrôle de santé:

 http { 
    Backend en amont { 
        serveur backend1.example.com max_fails = 2 fail_timeout = 30s; 
        server backend2.example.com max_fails = 2 fail_timeout = 30s; 
        serveur backend3.example.com max_fails = 2 fail_timeout = 30s; 
        Vérifier l'intervalle = 3000 Rise = 2 chute = 5 Timeout = 1000; 
        check_http_send "Head / Check http / 1.0"; 
        check_http_expect_alive http_2xx http_3xx; 
    } 
    serveur { 
        Écoutez 80; 
        emplacement / { 
            proxy_pass http: // backend; 
        } 
    } 
}

Dans cette configuration, nous définissons le nombre maximum de défaillances (Max_Fails) et le délai de panne (FAIL_TIMEOUT) pour chaque serveur backend. Lorsqu'un serveur échoue en continu pour plus qu'un nombre prédéterminé de fois, Nginx le marque comme indisponible.

(2) Serveur de sauvegarde : lorsque tous les serveurs principaux ne sont pas disponibles, Nginx transmetra le trafic vers le serveur de sauvegarde préconfiguré.

Voici un exemple de configuration d'un serveur de sauvegarde:

 http { 
    Backend en amont { 
        serveur backend1.example.com BACKUP; 
        serveur backend2.example.com; 
        serveur backend3.example.com; 
    } 
    serveur { 
        Écoutez 80; 
        emplacement / { 
            proxy_pass http: // backend; 
        } 
    } 
}

Dans cet exemple, Backend1.example.com est configuré comme serveur de sauvegarde.

Configuration automatisée

Pour simplifier la gestion de la configuration de Nginx, les outils d'automatisation et les scripts peuvent nous aider à générer et à mettre à jour automatiquement les fichiers de configuration. Voici deux méthodes d'automatisation courantes:

(1) Nginx Plus : Nginx Plus est la version commerciale officielle, qui fournit des fonctions avancées telles que la gestion de la configuration dynamique, la détection des défauts, l'équilibrage de la charge, etc., et peut être intégré aux passerelles API, caches et autres systèmes.

(2) Utilisation de Scripts LUA : NGINX prend en charge la génération de fichiers de configuration via les scripts LUA, qui fournit un moyen flexible d'automatiser la configuration.

Voici un exemple d'utilisation du script LUA pour générer une configuration Nginx:

 - generate_backend.lua 
backend_servers local = { 
    "backend1.example.com", 
    "backend2.example.com", 
    "backend3.example.com" 
} 
Local Upstream = "Backend en amont {\ n" 
pour i, serveur dans ipairs (backend_servers) 
    Upstream = en amont .. "Server" .. Server .. "; \ n" 
fin 
en amont = en amont .. "} \ n" 
Imprimer (en amont)

Dans cet exemple, le script LUA génère un bloc en amont contenant trois serveurs backend.

Vous pouvez exécuter le script et générer le fichier de configuration via la commande suivante:

 $ lua generate_backend.lua> nginx.conf

Grâce à une configuration raisonnable et à une gestion automatisée, la fonction d'équilibrage de charge de Nginx peut non seulement améliorer les performances de l'application, mais également améliorer les capacités de reprise après sinistre et la maintenabilité du système.