Cómo usar Ansible para configurar un proxy inverso

¿Qué es un? Un balanceador de carga es una forma eficiente de distribuir el tráfico de red entre diferentes servidores back-end. 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 operan según el concepto de turno rotativo, lo que garantiza una alta confiabilidad y disponibilidad.

Índice

un escenario

Tiene un servidor web que puede manejar 100 clientes a la vez. De repente, las solicitudes a ese servidor en particular aumentan en un 100%. 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 accede 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, se denomina proxy inverso.

Usar HAProxy como proxy

El puerto del servidor web principal se denomina puerto frontal. 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.

Compruebe el sistema en el que necesita configurar HAProxy

HAProxy no está instalado en este sistema. Puedes confirmarlo con el siguiente comando:

rpm -q haproxy

Pasos para configurar HAProxy

Paso 1 - Instalar HAProxy

Para instalar HAProxy, debe utilizar un paquete módulo donde das el nombre del servicio que quieres instalar:

    - name: "Configure Load balancer"
      package:
        name: haproxy

Paso 2: copie el archivo de configuración del proxy inverso

Copie el archivo de configuración para poder 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 dirección IP principal. Ahora puede iniciar tantos servidores web como desee y no es necesario configurar manualmente la dirección IP dentro del /etc/httpd/httpd.conf. Recuperará 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

Utilizando modelo 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 - Inicie el servicio

Utilizar el un 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 usando Ansible. Para comprobar que aún no lo has hecho httpd en su sistema, use el siguiente comando:

 rpm -q httpd

Paso 1 - Instalar httpd

el paquete El módulo se utiliza para instalar httpd en el nodo administrado:

    - name: "HTTPD CONFIGURE"
      package:
        name: httpd

Paso 2 - Copie la página web

el modelo 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 - Inicie el servicio

el un servicio módulo se utiliza para iniciar el httpd un 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

Salir

El libro de jugadas se ejecuta correctamente y el servidor web principal puede acceder a ambos servidores web de destino mediante un equilibrador de carga.

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 revisar el Documentación para su objetivo específico para obtener más información.

Artículos de interés

Subir