¿Qué es un equilibrador de carga? ? Un balanceador de carga es una forma eficiente de distribuir el tráfico de red entre varios servidores backend. También se conoce como granja de servidores o grupo de servidores. Distribuye las solicitudes de los clientes o la carga de la red a los servidores web de destino. Los balanceadores de carga funcionan con el concepto de operación por turnos, lo que garantiza una alta confiabilidad y disponibilidad.
Un escenario
Tiene un servidor web que puede administrar 100 clientes a la vez. De repente, las solicitudes a ese servidor en particular aumentan en un 100 por ciento. Es probable que el sitio web se bloquee o finalice. Para evitar esta situación, configure un servidor web de destino. En este escenario, el cliente nunca va al servidor web de destino. En cambio, su solicitud va al servidor maestro y el servidor maestro envía la solicitud al servidor web de destino. Cuando el servidor web de destino responde al servidor web maestro, lo que se conoce como proxy inverso.
[ También te puede interesar: Convierte una implementación de Kubernetes en un servicio de Knative ]
Uso de HAProxy como proxy
El puerto en el servidor web principal se llama puerto frontend. HAProxy es un equilibrador de carga HTTP que se puede configurar como un proxy inverso. Aquí veremos cómo configuré HAProxy usando un libro de jugadas de Ansible.
Verifique el sistema donde necesita configurar HAProxy
HAProxy no está instalado en este sistema. Puede confirmarlo con el siguiente comando:
rpm -q haproxy
Pasos para configurar HAProxy
Paso 1:instalar HAProxy
Para instalar HAProxy, debe usar un paquete módulo donde das el nombre del servicio que quieres instalar:
- name: "Configure Load balancer"
package:
name: haproxy
Paso 2:copia el archivo de configuración para el proxy inverso
Copie el archivo de configuración para que pueda modificarlo:
cp /etc/haproxy/haproxy.cfg /root/ws1/haproxy.cfg
Paso 3:cambie el puerto de frontend y asigne direcciones IP de backend
De forma predeterminada, la interfaz está vinculada al puerto 5000. Cambié el número de puerto a 8080. También apliqué un for
bucle para configurar la IP de backend. Ahora puede iniciar tantos servidores web como necesite y no es necesario configurar manualmente la IP dentro de /etc/httpd/httpd.conf
. Obtendrá automáticamente la IP del inventario.
backend app
balance roundrobin
{% for i in groups ["web"] %}
server app1{{ loop.index }} {{ i}}:80 check
{% endfor %}
Paso 4:copie haproxy.cfg en el nodo administrado
Uso de plantilla modo, copie el archivo de configuración para HAProxy desde el nodo del controlador al nodo administrado:
- template:
dest: "/etc/haproxy/haproxy.cfg"
src: "/root/ws1/haproxy.cfg"
Paso 5 - Iniciar el servicio
Usa el servicio módulo para iniciar el servicio HAProxy:
- service:
name: "haproxy"
state: restarted
Verifique el sistema donde necesita instalar el servidor web httpd
Para probar la configuración de HAProxy, también configurará httpd
en su nodo de destino con la ayuda de Ansible. Para verificar que aún no tiene httpd
en su sistema, use el siguiente comando:
rpm -q httpd
Paso 1 - Instalar httpd
El paquete módulo se utiliza para instalar httpd
en el nodo gestionado:
- name: "HTTPD CONFIGURE"
package:
name: httpd
Paso 2:copia la página web
La plantilla módulo se utiliza para copiar su página web desde el origen al destino:
- template:
dest: "/var/www/html/index.html"
src: "/root/ws1/haproxy.html"
Paso 3 - Iniciar el servicio
El servicio módulo se utiliza para iniciar el httpd
servicio:
- service:
name: "haproxy"
state: restarted
Complete el libro de jugadas para configurar el proxy inverso
En este libro de jugadas, tiene dos hosts diferentes con dos grupos diferentes. Un grupo es para el servidor web y otro es para el balanceador de carga:
---
- 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
Ejecutar el libro de jugadas
ansible-playbook haproxy.yml
Salida
El libro de jugadas se ejecuta correctamente y el servidor web principal puede acceder a los dos servidores web de destino mediante un equilibrador de carga.
[ ¿Busca más información sobre la automatización de sistemas? Comience con The Automated Enterprise, un libro gratuito de Red Hat. ]
Conclusión
Ansible ya configuró el balanceador de carga y el proxy inverso. Puede agregar una capa de protección y disponibilidad a sus servicios web agregando HAProxy a su infraestructura. Asegúrese de consultar la documentación de su objetivo específico para obtener más información.