Configuración de Clúster Angie#

Esta guía describe el proceso de crear un clúster Angie tolerante a fallos con sincronización automática de configuración y conmutación por error de direcciones IP virtuales.

Preparación de Nodos del Clúster para Sincronización#

El primer paso es preparar todos los nodos del clúster configurando cuentas de usuario y asegurando el acceso seguro entre servidores.

Configuración de Usuarios y Permisos de Acceso#

Crear un usuario en todos los nodos (por ejemplo, user) con privilegios sudo:

$ sudo adduser user

Establecer una contraseña si es necesario:

$ sudo passwd user

Nota

En algunos sistemas operativos (por ejemplo, Alt Linux), debe agregar el usuario al grupo wheel:

$ sudo usermod -a -G wheel user

Para trabajar con rsync cuando MAC está habilitado en Astra Linux, establecer el nivel de integridad correcto:

$ sudo pdpl-user -i 63 user

Configurar sudo sin contraseña:

$ echo "user ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers

En el nodo maestro, crear claves SSH y copiarlas a los nodos de respaldo:

$ su - user
$ ssh-keygen -t rsa
$ ssh-copy-id user@node2_hostname

Advertencia

Antes de copiar las claves SSH, asegúrese de que el archivo /etc/ssh/sshd_config tenga la opción:

PasswordAuthentication yes

Después de configurar el acceso basado en claves, establezca el valor a no para mejorar la seguridad.

Nota

Para la sincronización cruzada de la configuración de Angie, copie las claves del usuario a todos los nodos:

$ scp -p .ssh/id_rsa* user@node2_hostname:.ssh/

Instalación de Angie PRO y angie-ha-sync#

Después de preparar los nodos, necesita instalar los componentes principales del clúster: Angie PRO y el paquete de sincronización de configuración.

Configure el repositorio en todos los nodos según las instrucciones del paquete para su sistema.

Instalación de angie-ha-sync#

Nota

Al instalar el paquete angie-ha-sync en un sistema limpio, el paquete angie también se instalará como dependencia.

En todos los nodos, instale el paquete usando el gestor de paquetes de su SO:

$ sudo {apk|apt|pkg|yum|zypper} {add|install} angie-ha-sync

Configuración de Sincronización de Configuración#

El siguiente paso es configurar la sincronización automática de archivos de configuración entre los nodos del clúster.

Nota

Principios de sincronización:

  • La sincronización se realiza vía rsync.

  • Solo ocurre cuando el servicio Angie está ejecutándose.

  • Se ejecuta manualmente (comando angiehasync -Sd).

  • Funciona en una dirección: del nodo maestro al de respaldo.

  • rsync se ejecuta en modo daemon.

Configuración de rsync#

Crear una configuración de rsync (/etc/rsyncd.conf) en los nodos:

[angie] # Directorio con configuración de Angie
    path = /etc/angie
# Usuario para sincronización
    uid = user
# Grupo de usuario
    gid = user
# IP o subred desde la cual se permiten conexiones
    hosts allow = 10.21.8.0/24
# Denegar todos los demás
    hosts deny = *

Dependiendo del SO, iniciar el daemon:

$ sudo service rsyncd start # o $ sudo service rsync start

Nota

Para algunos sistemas, hay instrucciones listas:

Configuración del Archivo de Sincronización#

Editar /etc/angiehasync/angiehasync.conf:

M_NODE="<node1_hostname>"            # Nombre de host o IP de este nodo
TARGET_HOSTS="<node2_hostname>"      # Lista de hosts/IPs para sincronización (separados por espacios).
                                     # Puede omitirse en nodos de respaldo.
SSH_USER="user"                      # Usuario para sincronización (con privilegios de administrador)
SSH_ID="/home/$SSH_USER/.ssh/id_rsa" # Ruta a la clave privada

Nota

Para sincronización cruzada, complete la lista TARGET_HOSTS en todos los nodos; sin embargo, no incluya el nodo actual que se está configurando actualmente en la lista.

Configuración de Verificaciones de Salud para Angie#

Agregar un bloque de verificación de salud a la configuración de Angie (/etc/angie/angie.conf):

server {

    listen unix:/tmp/angie_hcheck.sock; # Socket Unix para verificación
    access_log off;
    error_log /dev/null;
    default_type text/plain;
    return 200 'ok\n';
}

Iniciar Angie:

$ sudo angie -t && sudo service angie start

Iniciar sincronización:

$ sudo angiehasync -Sd

Nota

El script verificará automáticamente la configuración, realizará sincronización con todos los nodos, y la aplicará.

Configuración de Keepalived#

Para la conmutación automática por error entre nodos del clúster, se usa Keepalived — un servicio para gestionar direcciones IP virtuales (VIP).

Nota

Si el paquete keepalived no está instalado — instálelo:

$ sudo {apk|apt|pkg|yum|zypper} {add|install} keepalived

Para vincular procesos a direcciones IP no locales, permita al sistema realizar las acciones correspondientes:

$ sudo sysctl -w net.ipv4.ip_nonlocal_bind=1

Más detalles: https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt#ip_nonlocal_bind

Suponga que VIP 10.21.11.230 se asigna ya sea al nodo maestro (10.21.8.26) o al de respaldo (10.21.8.27).

Si Angie escucha en esta VIP (listen 10.21.11.230:80;) pero la dirección aún no está asignada, Angie no podrá iniciarse sin el parámetro ip_nonlocal_bind.

Configuración de Keepalived#

En el nodo maestro (/etc/keepalived/keepalived.conf):

global_defs {
    enable_script_security
}

vrrp_script angie_check {
    script "/usr/bin/curl -s --connect-timeout 5 -A 'angie_hcheck_script'
    --no-buffer -XGET --unix-socket /tmp/angie_hcheck.sock http://hcheck/"
    interval 5 user angie
}

vrrp_instance angie {
    state MASTER interface enp0s2 virtual_router_id 254 priority 100
    advert_int 2 unicast_src_ip 10.21.8.26

    unicast_peer {
        10.21.8.27
    }

    virtual_ipaddress {
        10.21.11.230
    } track_script {
        angie_check
    }
}

En el nodo de respaldo:

global_defs {
    enable_script_security
}

vrrp_script angie_check {
    script "/usr/bin/curl -s --connect-timeout 5 -A 'angie_hcheck_script'
    --no-buffer -XGET --unix-socket /tmp/angie_hcheck.sock http://hcheck/"
    interval 5 user angie
}

vrrp_instance angie {
    state MASTER interface enp0s2 virtual_router_id 254 priority 99
    advert_int 2 unicast_src_ip 10.21.8.27

    unicast_peer {
        10.21.8.26
    }

    virtual_ipaddress {
        10.21.11.230
    } track_script {
        angie_check
    }
}

Nota

En la sección vrrp_instance angie, establezca los siguientes valores:

  • unicast_src_ip — IP del nodo actual

  • unicast_peer — IP de los nodos vecinos

  • virtual_ipaddress — IP virtual (VIP)

  • interface — interfaz de red

Iniciar el servicio:

$ sudo keepalived -t && sudo service keepalived start

Desglose de la Configuración de Keepalived#

Examinemos en detalle los elementos principales de la configuración de Keepalived para entender los principios de funcionamiento del clúster.

La configuración incluye dos partes:

  • global_defs — configuración global

  • vrrp_instance — parámetros VRRP (conmutación VIP)

Elementos principales:

  • enable_script_security — permite la ejecución de scripts de verificación de salud

  • vrrp_script — script de verificación de salud de Angie

  • state MASTER — estado inicial del nodo

  • priority — prioridad (el rol MASTER se asigna al más alto)

  • advert_int — intervalo de anuncio VRRP

  • unicast_src_ip — IP del nodo actual

  • unicast_peer — IP de los vecinos

  • virtual_ipaddress — dirección VIP

  • track_script — monitoreo de disponibilidad a través de scripts de verificación de salud

Nota

Si el nodo maestro original se recupera, recuperará el rol MASTER (mayor prioridad). Para deshabilitar el failback, use el parámetro nopreempt:

vrrp_instance angie {
    ... nopreempt
}

Prueba del Funcionamiento del Clúster#

Después de completar la configuración, es necesario probar el funcionamiento del clúster y asegurar la conmutación correcta entre nodos.

Verifica el estado del VIP:

$ ip addr show enp0s2 | grep "10.21.11.230"

Prueba la tolerancia a fallos:

Detén Angie en el nodo maestro:

$ sudo service angie stop

Verifica la transición del VIP al nodo de respaldo:

$ ip addr show enp0s2 | grep "10.21.11.230"

Inicia Angie en el nodo maestro nuevamente:

$ sudo service angie start

Después de esto, el VIP debería regresar al nodo maestro.