Maison > développement back-end > tutoriel php > Hôte virtuel Apache : équilibreur de charge

Hôte virtuel Apache : équilibreur de charge

Susan Sarandon
Libérer: 2024-10-11 10:10:30
original
747 Les gens l'ont consulté

L'

Apache Virtual Host: Load Balancer

L'équilibrage de charge est une excellente stratégie pour répartir les requêtes sur plusieurs serveurs backend, améliorant ainsi l'évolutivité et la disponibilité du système. Apache peut être configuré comme un équilibreur de charge à l'aide du module mod_proxy_balancer.

Voici un guide complet pour implémenter l'équilibrage de charge dans Apache :

Activer les modules requis

Tout d'abord, activez les modules requis dans Apache :

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
Copier après la connexion

Redémarrez Apache pour charger les modules :

sudo systemctl restart apache2
Copier après la connexion
Copier après la connexion

Configurer l'hôte virtuel avec l'équilibrage de charge

Maintenant, modifiez le fichier de configuration de votre hôte virtuel pour ajouter les directives d'équilibrage de charge.

Ouvrez le fichier de configuration :

sudo your_editor /etc/apache2/sites-available/php.conf
Copier après la connexion

Ajoutez le bloc de code suivant pour configurer l'équilibrage de charge sur plusieurs serveurs backend :

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName php.info

    # Load balancer configuration
    <Proxy "balancer://meucluster">
        BalancerMember http://localhost:8080
        BalancerMember http://localhost:8081
        BalancerMember http://localhost:8082
        ProxySet lbmethod=byrequests
    </Proxy>

    ProxyPreserveHost On
    ProxyPass / balancer://meucluster/
    ProxyPassReverse / balancer://meucluster/

    <Directory /var/www/html/php/>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/php_error_http.log
    CustomLog ${APACHE_LOG_DIR}/php_access_http.log combined
</VirtualHost>
Copier après la connexion

Explication des éléments ci-dessus :

  • BalancerMember : définit les serveurs backend. Dans ce cas, nous configurons trois serveurs en écoute sur les ports 8080, 8081 et 8082. Vous pouvez remplacer ces valeurs par vos serveurs réels.
  • lbmethod=byrequests : Définit la méthode d'équilibrage. byrequests répartit les requêtes de manière égale entre les serveurs. D'autres méthodes incluent :
    • bytraffic : distribue en fonction de la quantité de trafic.
    • bybusyness : distribue en fonction du nombre de connexions actives.
    • battement de coeur : utilise une approche avancée de surveillance de la santé.

Ajouter des serveurs back-end

Dans l'exemple ci-dessus, je suppose que trois services backend sont exécutés sur localhost sur les ports 8080, 8081 et 8082. Assurez-vous que ces services sont en cours d'exécution.

Sinon, vous pouvez configurer des serveurs backend avec les ports appropriés ou utiliser des conteneurs Docker pour simuler plusieurs services.

Activer le module SSL pour HTTPS

Si vous souhaitez équilibrer la charge via HTTPS, ajoutez également l'hôte virtuel SSL (/etc/apache2/sites-available/php-le-ssl.conf) pour équilibrer la charge sur les serveurs backend HTTPS :

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerAdmin webmaster@localhost
        ServerName php.info
        DocumentRoot /var/www/meu_projeto

        # Configuração do Balanceador de Carga
        <Proxy "balancer://meucluster">
            BalancerMember http://localhost:8080
            BalancerMember http://localhost:8081
            BalancerMember http://localhost:8082
            ProxySet lbmethod=byrequests
        </Proxy>

        ProxyPreserveHost On
        ProxyPass / balancer://meucluster/
        ProxyPassReverse / balancer://meucluster/

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/php.info/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/php.info/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

        ErrorLog ${APACHE_LOG_DIR}/php_error_https.log
        CustomLog ${APACHE_LOG_DIR}/php_access_https.log combined
    </VirtualHost>
</IfModule>
Copier après la connexion

Options de configuration avancées

Définir les poids du serveur

Vous pouvez définir différentes pondérations pour les serveurs, ce qui signifie que certains serveurs reçoivent plus de trafic que d'autres. Exemple :

BalancerMember http://localhost:8080 loadfactor=1
BalancerMember http://localhost:8081 loadfactor=2
BalancerMember http://localhost:8082 loadfactor=1
Copier après la connexion

Dans ce cas, le serveur localhost:8081 recevra deux fois plus de requêtes que les autres.

Définir les délais d'attente et les tentatives d'échec

Vous pouvez définir des délais d'attente et des tentatives pour détecter les pannes sur les serveurs backend :

<Proxy "balancer://mycluster">
BalancerMember http://localhost:8080 retry=5 timeout=10
BalancerMember http://localhost:8081 retry=5 timeout=10
BalancerMember http://localhost:8082 retry=5 timeout=10
ProxySet lbmethod=byrequests
</Proxy>
Copier après la connexion

Surveiller et gérer l'équilibreur de charge

Pour surveiller l'état de l'équilibreur de charge et gérer dynamiquement les membres actifs/inactifs, lancez l'interface Balancer Manager :

<Location "/balancer-manager">
SetHandler balancer-manager
Require host localhost
</Location>
Copier après la connexion

Vous pouvez désormais accéder à http://php.info/balancer-manager pour consulter l'état de santé de l'équilibreur de charge et ajuster les paramètres en temps réel.

Redémarrez Apache

Après avoir apporté les modifications de configuration, redémarrez Apache pour que les modifications prennent effet :

sudo systemctl restart apache2
Copier après la connexion
Copier après la connexion

Tester l'équilibrage de charge

Désormais, lorsque vous accédez à http://php.info, Apache répartira les requêtes entre les serveurs backend définis.

Mettre en œuvre des contrôles de santé (facultatif)

Vous pouvez configurer Apache pour vérifier la santé des serveurs backend et les supprimer automatiquement du pool s'ils sont en panne. Pour ce faire, vous pouvez utiliser le module mod_proxy_hcheck.

Tout d'abord, activez le module :

sudo a2enmod proxy_hcheck
sudo systemctl restart apache2
Copier après la connexion

Ensuite, ajoutez la configuration suivante à votre bloquer :

<Proxy "balancer://meucluster">
    BalancerMember http://localhost:8080 hcheck=on hcmethod=HEAD
    BalancerMember http://localhost:8081 hcheck=on hcmethod=HEAD
    BalancerMember http://localhost:8082 hcheck=on hcmethod=HEAD
    ProxySet lbmethod=byrequests
</Proxy>
Copier après la connexion

Apache vérifiera désormais automatiquement les serveurs backend et les supprimera du pool en cas de panne.

Conclusion

Avec Apache configuré comme équilibreur de charge, vous pouvez répartir le trafic sur plusieurs serveurs backend, garantissant ainsi l'évolutivité et la redondance. L'utilisation de SSL et de contrôles de santé supplémentaires permet de maintenir l'environnement sécurisé et robuste.

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!

source:dev.to
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal