En este tema, exploraremos la configuración dinámica en NGINX Plus, una característica avanzada que permite realizar cambios en la configuración de NGINX sin necesidad de reiniciar el servidor. Esto es especialmente útil en entornos de producción donde el tiempo de inactividad debe minimizarse.

Conceptos Clave

  1. NGINX Plus API: Una interfaz RESTful que permite la gestión dinámica de la configuración.
  2. Upstreams Dinámicos: Permiten agregar, eliminar o modificar servidores en un grupo de upstreams sin reiniciar NGINX.
  3. Configuración de Rutas: Cambiar rutas y reglas de enrutamiento dinámicamente.
  4. Variables Dinámicas: Uso de variables que pueden ser modificadas en tiempo de ejecución.

NGINX Plus API

La NGINX Plus API es una herramienta poderosa que permite interactuar con NGINX de manera programática. A través de esta API, puedes realizar operaciones como agregar o eliminar servidores de un grupo de upstreams, cambiar configuraciones de balanceo de carga, y más.

Ejemplo de Uso de la API

Para interactuar con la API, primero debes habilitarla en tu configuración de NGINX:

http {
    server {
        listen 8080;

        location /api {
            api write=on;
            allow 127.0.0.1;
            deny all;
        }
    }
}

En este ejemplo, la API está habilitada en el puerto 8080 y solo es accesible desde 127.0.0.1.

Agregar un Servidor a un Upstream

Para agregar un servidor a un grupo de upstreams, puedes usar un comando curl:

curl -X POST -d '{"server": "192.168.1.100:80"}' http://127.0.0.1:8080/api/6/http/upstreams/backend/servers

Este comando agrega el servidor 192.168.1.100:80 al grupo de upstreams llamado backend.

Upstreams Dinámicos

Los upstreams dinámicos permiten modificar los servidores backend sin necesidad de reiniciar NGINX. Esto es crucial para mantener la alta disponibilidad y escalabilidad de tus aplicaciones.

Configuración de Upstreams Dinámicos

Primero, define un grupo de upstreams en tu configuración de NGINX:

http {
    upstream backend {
        zone backend 64k;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;
        }
    }
}

En este ejemplo, el grupo de upstreams backend está definido con una zona de memoria compartida de 64k.

Agregar y Eliminar Servidores

Para agregar un servidor:

curl -X POST -d '{"server": "192.168.1.101:80"}' http://127.0.0.1:8080/api/6/http/upstreams/backend/servers

Para eliminar un servidor:

curl -X DELETE http://127.0.0.1:8080/api/6/http/upstreams/backend/servers/0

Configuración de Rutas Dinámicas

Puedes cambiar las rutas y reglas de enrutamiento dinámicamente usando la API de NGINX Plus.

Ejemplo de Cambio de Ruta

Para cambiar una ruta, primero define una configuración básica:

http {
    server {
        listen 80;

        location / {
            proxy_pass http://backend;
        }
    }
}

Luego, usa la API para cambiar la ruta:

curl -X PATCH -d '{"proxy_pass": "http://new_backend"}' http://127.0.0.1:8080/api/6/http/servers/0/locations/0

Este comando cambia el proxy_pass de la ruta / a http://new_backend.

Variables Dinámicas

Las variables dinámicas permiten modificar valores en tiempo de ejecución, lo que es útil para ajustar configuraciones sin reiniciar NGINX.

Ejemplo de Uso de Variables Dinámicas

Define una variable en tu configuración:

http {
    server {
        listen 80;

        set $dynamic_var "initial_value";

        location / {
            proxy_pass http://backend;
            proxy_set_header X-Dynamic-Var $dynamic_var;
        }
    }
}

Luego, usa la API para cambiar el valor de la variable:

curl -X PATCH -d '{"value": "new_value"}' http://127.0.0.1:8080/api/6/http/variables/dynamic_var

Este comando cambia el valor de $dynamic_var a new_value.

Ejercicio Práctico

Ejercicio 1: Configuración Dinámica de Upstreams

  1. Objetivo: Agregar y eliminar servidores de un grupo de upstreams dinámicamente.
  2. Pasos:
    • Habilita la API de NGINX Plus en tu configuración.
    • Define un grupo de upstreams.
    • Usa curl para agregar y eliminar servidores del grupo de upstreams.

Solución

  1. Habilita la API:

    http {
        server {
            listen 8080;
    
            location /api {
                api write=on;
                allow 127.0.0.1;
                deny all;
            }
        }
    }
    
  2. Define un grupo de upstreams:

    http {
        upstream backend {
            zone backend 64k;
        }
    
        server {
            listen 80;
    
            location / {
                proxy_pass http://backend;
            }
        }
    }
    
  3. Agrega un servidor:

    curl -X POST -d '{"server": "192.168.1.102:80"}' http://127.0.0.1:8080/api/6/http/upstreams/backend/servers
    
  4. Elimina un servidor:

    curl -X DELETE http://127.0.0.1:8080/api/6/http/upstreams/backend/servers/0
    

Conclusión

La configuración dinámica en NGINX Plus es una herramienta poderosa que permite realizar cambios en tiempo real sin necesidad de reiniciar el servidor. Esto es crucial para mantener la alta disponibilidad y escalabilidad de tus aplicaciones. En este tema, hemos cubierto cómo usar la NGINX Plus API para gestionar upstreams, rutas y variables dinámicamente. Con estos conocimientos, puedes optimizar y gestionar tu infraestructura de manera más eficiente y efectiva.

© Copyright 2024. Todos los derechos reservados