Che cos'è un bilanciatore del carico ? Un sistema di bilanciamento del carico è un modo efficiente per distribuire il traffico di rete tra vari server back-end. È anche noto come server farm o pool di server. Distribuisce le richieste dei client o il carico di rete ai server Web di destinazione. I bilanciatori di carico funzionano secondo il concetto round-robin, che garantisce elevata affidabilità e disponibilità.
Uno scenario
Hai un server web in grado di gestire 100 client alla volta. Improvvisamente le richieste a quel particolare server aumentano del 100 percento. È probabile che il sito Web si arresti in modo anomalo o venga chiuso. Per evitare questa situazione, configurare un server Web di destinazione. In questo scenario, il client non va mai al server Web di destinazione. Invece, la loro richiesta va al server principale e il server principale invia la richiesta al server Web di destinazione. Quando il server Web di destinazione risponde al server Web principale, noto come proxy inverso.
[ Potrebbe piacerti anche: Trasforma un'implementazione Kubernetes in un servizio Knative ]
Utilizzo di HAProxy come proxy
La porta sul server Web principale è chiamata porta frontend. HAProxy è un sistema di bilanciamento del carico HTTP che può essere configurato come proxy inverso. Qui vedremo come ho configurato HAProxy utilizzando un playbook Ansible.
Verifica il sistema in cui è necessario configurare HAProxy
HAProxy non è installato su questo sistema. Puoi confermarlo con il seguente comando:
rpm -q haproxy
Passaggi per configurare HAProxy
Passaggio 1:installazione di HAProxy
Per installare HAProxy, devi usare un pacchetto modulo in cui dai il nome del servizio che vuoi installare:
- name: "Configure Load balancer"
package:
name: haproxy
Passaggio 2:copia il file di configurazione per il proxy inverso
Copia il file di configurazione in modo da poterlo modificare:
cp /etc/haproxy/haproxy.cfg /root/ws1/haproxy.cfg
Passaggio 3:modifica la porta front-end e assegna IP back-end
Per impostazione predefinita, il frontend è vincolato alla porta 5000. Ho cambiato il numero di porta in 8080. Ho anche applicato un for
loop per configurare l'IP di back-end. Ora puoi avviare tutti i server web di cui hai bisogno e non è necessario configurare manualmente l'IP all'interno di /etc/httpd/httpd.conf
. Recupererà automaticamente l'IP dall'inventario.
backend app
balance roundrobin
{% for i in groups ["web"] %}
server app1{{ loop.index }} {{ i}}:80 check
{% endfor %}
Passaggio 4:copia haproxy.cfg nel nodo gestito
Utilizzo di modello in modalità, copiare il file di configurazione per HAProxy dal nodo del controller al nodo gestito:
- template:
dest: "/etc/haproxy/haproxy.cfg"
src: "/root/ws1/haproxy.cfg"
Passaggio 5:avvia il servizio
Usa il servizio modulo per avviare il servizio HAProxy:
- service:
name: "haproxy"
state: restarted
Controlla il sistema in cui devi installare il server web httpd
Per testare la configurazione HAProxy, configurerai anche httpd
sul tuo nodo di destinazione con l'aiuto di Ansible. Per verificare di non avere già httpd
sul tuo sistema, usa il seguente comando:
rpm -q httpd
Passaggio 1 - Installa httpd
Il pacchetto il modulo viene utilizzato per installare httpd
sul nodo gestito:
- name: "HTTPD CONFIGURE"
package:
name: httpd
Passaggio 2:copia la pagina web
Il modello il modulo viene utilizzato per copiare la tua pagina web dall'origine alla destinazione:
- template:
dest: "/var/www/html/index.html"
src: "/root/ws1/haproxy.html"
Passaggio 3:avvia il servizio
Il servizio viene utilizzato per avviare il httpd
servizio:
- service:
name: "haproxy"
state: restarted
Completa il playbook per configurare il proxy inverso
In questo playbook hai due host diversi con due gruppi diversi. Un gruppo è per il server Web e un altro è per il sistema di bilanciamento del carico:
---
- 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
Esegui il playbook
ansible-playbook haproxy.yml
Uscita
Il playbook viene eseguito correttamente e il server Web principale può accedere ai due server Web di destinazione utilizzando un sistema di bilanciamento del carico.
[ Cerchi ulteriori informazioni sull'automazione dei sistemi? Inizia con The Automated Enterprise, un libro gratuito di Red Hat. ]
Conclusione
Il servizio di bilanciamento del carico e il proxy inverso sono stati ora configurati da Ansible. Puoi aggiungere un livello di protezione e disponibilità ai tuoi servizi web aggiungendo HAProxy alla tua infrastruttura. Assicurati di controllare la documentazione per il tuo target specifico per saperne di più.