Configuración de Proxy Web en Alta Disponibilidad usando Keepalived y Nginx en Centos7 ó RHEL7

Hola a todos!

Explicaremos acá como hacer la configuración de proxys web de alta disponibilidad usando nginx en modo Activo-Pasivo, lo que quiere decir que el primer proxy (proxy1) siempre tendrá la prioridad para atender las peticiones, pero en el momento que el backup (proxy2) detecta que el servicio nginx del maestro (proxy1) deja de responder, él entra en acción y responde las peticiones (esto es lo que se llama estar en "modo pasivo"). Luego cuando el backup detecta que el maestro ya está disponible regresa el control al maestro.


1) Instala los siguientes paquetes nginx y keepalived:

# yum install nginx keepalived

2) En ambos servidores ejecute los siguientes pasos:

Active el forwarding a nivel de kernel:

# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# sysctl -p

Agregue al firewalld las siguientes reglas para permitir el tráfico del vrrp entre ambos proxys.

# firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface <nombre de la interfaz> --destination 224.0.0.18 --protocol vrrp -j ACCEPT

# firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface <nombre de la interfaz> --destination 224.0.0.18 --protocol vrrp -j ACCEPT

3) Edite el archivo /etc/keepalived/keepalived.conf del proxy maestro (proxy1) y coloque la siguiente configuración:


vrrp_script chk_nginx {
        script "/usr/bin/curl http://10.16.200.41"    
        interval 2                     
        weight 2                       
        fall 2
        rise 2
}

vrrp_instance VI_1 {
        interface ens192 
        state MASTER
        virtual_router_id 1
        priority 101                    # 101 on master, 100 on backup
        advert_int 1
        virtual_ipaddress {
            10.16.200.43/24
        }
        track_script {
            chk_nginx
        }

}

4) Edite el archivo /etc/keepalived/keepalived.conf del proxy backup (proxy2) y coloque la siguiente configuración:

vrrp_script chk_nginx {        
        script "/usr/bin/curl http://10.16.200.42"
        interval 2                  
        weight 2                    
        fall 2
        rise 2
}

vrrp_instance VI_1 {
        interface eno16780032
        state SLAVE
        virtual_router_id 1
        priority 100                    # 101 on master, 100 on backup
        advert_int 1
        virtual_ipaddress {
            10.16.200.43/24
        }
        track_script {
            chk_nginx
        }
}

5) Activa el nginx y el keepalive para que inicien en ambos servidores automáticamente:

# systemctl enable keepalived
# systemctl enable nginx

Comentarios

Entradas populares