Qu'est-ce qu'un équilibreur de charge ? ? Un équilibreur de charge est un moyen efficace de répartir le trafic réseau entre différents serveurs principaux. Il est également appelé batterie de serveurs ou pool de serveurs. Il distribue les demandes des clients ou la charge du réseau aux serveurs Web cibles. Les équilibreurs de charge fonctionnent selon le concept du tourniquet, ce qui garantit une fiabilité et une disponibilité élevées.
Un scénario
Vous disposez d'un serveur Web capable de gérer 100 clients à la fois. Soudain, les requêtes adressées à ce serveur particulier augmentent de 100 %. Il est probable que le site Web tombe en panne ou soit fermé. Pour éviter cette situation, configurez un serveur Web cible. Dans ce scénario, le client n'accède jamais au serveur Web cible. Au lieu de cela, leur demande est envoyée au serveur maître, et le serveur maître envoie la demande au serveur Web cible. Lorsque le serveur Web cible répond au serveur Web maître, appelé proxy inverse.
[ Vous pourriez également aimer : Transformer un déploiement Kubernetes en un service Knative ]
Utiliser HAProxy comme proxy
Le port sur le serveur Web principal est appelé le port frontal. HAProxy est un équilibreur de charge HTTP qui peut être configuré en tant que proxy inverse. Ici, nous allons voir comment j'ai configuré HAProxy à l'aide d'un playbook Ansible.
Vérifiez le système sur lequel vous devez configurer HAProxy
HAProxy n'est pas installé sur ce système. Vous pouvez le confirmer avec la commande suivante :
rpm -q haproxy
Étapes pour configurer HAProxy
Étape 1 - Installer HAProxy
Pour installer HAProxy, vous devez utiliser un package module où vous donnez le nom du service que vous souhaitez installer :
- name: "Configure Load balancer"
package:
name: haproxy
Étape 2 - Copiez le fichier de configuration du proxy inverse
Copiez le fichier de configuration afin de pouvoir le modifier :
cp /etc/haproxy/haproxy.cfg /root/ws1/haproxy.cfg
Étape 3 :Modifier le port frontal et attribuer des adresses IP principales
Par défaut, le frontend est lié au port 5000. J'ai changé le numéro de port en 8080. J'ai également appliqué un for
boucle pour configurer l'adresse IP principale. Vous pouvez désormais lancer autant de serveurs Web que vous le souhaitez, et il n'est pas nécessaire de configurer manuellement l'adresse IP dans /etc/httpd/httpd.conf
. Il récupèrera automatiquement l'adresse IP à partir de l'inventaire.
backend app
balance roundrobin
{% for i in groups ["web"] %}
server app1{{ loop.index }} {{ i}}:80 check
{% endfor %}
Étape 4 - Copiez haproxy.cfg sur le nœud géré
Utiliser le modèle mode, copiez le fichier de configuration pour HAProxy du nœud contrôleur vers le nœud géré :
- template:
dest: "/etc/haproxy/haproxy.cfg"
src: "/root/ws1/haproxy.cfg"
Étape 5 - Démarrer le service
Utiliser le service module pour démarrer le service HAProxy :
- service:
name: "haproxy"
state: restarted
Vérifiez le système sur lequel vous devez installer le serveur Web httpd
Pour tester la configuration de HAProxy, vous configurerez également httpd
sur votre nœud cible à l'aide d'Ansible. Pour vérifier que vous n'avez pas déjà httpd
sur votre système, utilisez la commande suivante :
rpm -q httpd
Étape 1 - Installer httpd
Le forfait module est utilisé pour installer httpd
sur le nœud géré :
- name: "HTTPD CONFIGURE"
package:
name: httpd
Étape 2 - Copiez la page Web
Le modèle module est utilisé pour copier votre page Web de la source vers la destination :
- template:
dest: "/var/www/html/index.html"
src: "/root/ws1/haproxy.html"
Étape 3 - Démarrer le service
Le service module est utilisé pour démarrer le httpd
service :
- service:
name: "haproxy"
state: restarted
Compléter le playbook pour configurer le proxy inverse
Dans ce playbook, vous avez deux hôtes différents avec deux groupes différents. Un groupe est pour le serveur Web et un autre pour l'équilibreur de charge :
---
- hosts: web
tasks:
- name: "HTTPD CONFIGURE"
package:
name: httpd
- template:
dest: "/var/www/html/index.html"
src: "/root/ws1/haproxy.html"
- service:
name: "httpd"
state: restarted
- hosts: lb
tasks:
- name: "Configure Load balancer"
package:
name: haproxy
- template:
dest: "/etc/haproxy/haproxy.cfg"
src: "/root/ws1/haproxy.cfg"
- service:
name: "haproxy"
state: restarted
Exécuter le playbook
ansible-playbook haproxy.yml
Sortie
Le playbook s'exécute correctement et les deux serveurs Web cibles sont accessibles par le serveur Web principal à l'aide d'un équilibreur de charge.
[ Vous souhaitez en savoir plus sur l'automatisation du système ? Démarrez avec The Automated Enterprise, un livre gratuit de Red Hat. ]
Conclusion
L'équilibreur de charge et le proxy inverse ont maintenant été configurés par Ansible. Vous pouvez ajouter une couche de protection et de disponibilité à vos services Web en ajoutant HAProxy à votre infrastructure. Assurez-vous de consulter la documentation de votre cible spécifique pour en savoir plus.