Alta Disponibilidad con Keepalived y HAProxy

一、Arquitectura de Alta Disponibilidad

1、Necesidad de esta solución

HAProxy actúa como un punto de recepción de solicitudes de clientes y las distribuye a los servidores del backend

Existe un problema crítico: si el nodo que recibe las solicitudes de los clientes falla, todo el servicio queda inaccesible Aquí es donde Keepalived proporciona la solución mediante nodos primario y secundario. Cuando el nodo primario falla, el secundario asume automáticamente las solicitudes, evitando la interrupción del servicio

  • Una desventaja de esta configuración es que el nodo secundario permanece inactivo la mayor parte del tiempo, lo que representa una utilización del 50% de los recursos disponibles

2、Principios de funcionamiento

Flujo de operación

  • Los clientes acceden a una dirección IP virtual (VIP), donde HAProxy está escuchando las solicitudes entrantes
  • El nodo HAProxy establece conexiones con los servidores del backend
  • Los servidores del backend procesan las solicitudes y devuelven las respuestas al nodo HAProxy
  • Finalmente, las respuestas se envía de vuelta a los clientes
  • El ciclo completo de procesamiento de una solicitud se completa así
  • Cuando el nodo primario falla, ocurre una transición automática al nodo secundario (se puede implementar un script de monitoreo que verifique el estado de Keepalived)

Mecanismo de migración del VIP

El protocolo VRRP es el componente central de Keepalived VRRP utiliza multicast para señales de vida, elecciones basadas en prioridad y el mecanismo de ARP gratuito para seleccionar el nodo maestro

  • El concepto principal es mantener una dirección VIP que puede migrar entre nodos, proporcionando transparencia para los clientes

3、Configuración del entorno

  • Se configura una IP virtual que utilizan los clientes como punto de acceso

Configuración del nodo maestro

# Archivo de configuración de Keepalived
[root@servidor-principal ~]# cat /etc/keepalived/keepalived.conf
! Archivo de configuración para Keepalived

global_defs {
   identificador_enrutador LVS_MAESTRO
}

instancia_vrrp cluster_servidores {
    estado MAESTRO
    interfaz eth0
    id_router_virtual 55
    prioridad 250
    intervalo_anuncio 1
    autenticacion {
        tipo_contrasena SIMPLE
        contrasena seg2024
    }
    direccion_ip_virtual {
        172.16.0.100/24
    }
}

# Configuración de HAProxy
frontend servicios_web
    vinculacion *:8080
    grupo_predeterminado servidores_backend

backend servidores_backend
    metodo_balanceo roundrobin
    servidor web01 192.168.10.20:80 verificaciones
    servidor web02 192.168.10.30:80 verificaciones

Configuración del nodo secundario

# Configuración de Keepalived para el nodo de respaldo
[root@servidor-respaldo ~]# cat /etc/keepalived/keepalived.conf
! Archivo de configuración para Keepalived

global_defs {
   identificador_enrutador LVS_RESPALDO
}

instancia_vrrp cluster_servidores {
    estado RESPALDO
    interfaz eth1
    id_router_virtual 55
    prioridad 100
    intervalo_anuncio 1
    autenticacion {
        tipo_contrasena SIMPLE
        contrasena seg2024
    }
    direccion_ip_virtual {
        172.16.0.100/24
    }
}

# Configuración de HAProxy
frontend servicios_web
    vinculacion *:8080
    grupo_predeterminado servidores_backend

backend servidores_backend
    metodo_balanceo roundrobin
    servidor web01 192.168.10.20:80 verificaciones
    servidor web02 192.168.10.30:80 verificaciones

Configuración de los servidores del backend

  • Se configura un srevicio HTTP básico en cada servidor del backend para responder a las solicitudes

Modo Maestro-Maestro

  • Esta arquitectura emplea dos direcciones IP virtuales, permitiendo que ambos nodos actúen simultáneamente como servidores activos, duplicando así la capacidad de procesamiento disponible

Etiquetas: Keepalived HAProxy alta-disponibilidad VRRP Balanceo-Carga

Publicado el 9-9 15:54