Keepalive + nginx para lograr una alta disponibilidad para nginx y cómo crear un modo de espera maestro

keepalive + nginx para lograr una alta disponibilidad para nginx y cómo crear un modo maestro en espera.

Introducción a keeplived

Keepalived está escrito en ANSI/ISO C puro. El software se conecta alrededor de un multiplexor de E/S central para proporcionar un diseño de red en tiempo real.

1.1 El proceso Keepalived se divide en 3 procesos diferentes
inserte la descripción de la imagen aquí

A. Un proceso principal minimalista, responsable de bifurcar y monitorear procesos secundarios, el marco de monitoreo de procesos principales se denomina perro guardián
B. Dos procesos secundarios, uno es responsable del marco VRRP y el otro es responsable de las comprobaciones de estado

1.2 Escenarios de uso
Arquitectura de maestro dual de base de datos Mysql;
arquitectura maestro-esclavo nginx; cambio a través de keepalived.

1.3 Failover Framework
Keepalived implementa el protocolo VRRP para la conmutación por error del director. En la pila VRRP implementada, el planificador de paquetes VRRP es responsable de demultiplexar E/S específicas para cada instancia de VRRP.
Sincronización de instancias VRRP: Podemos especificar el monitoreo de estado entre 2 instancias VRRP, también llamado grupo de sincronización VRRP. Garantiza que las dos instancias de VRRP mantengan el mismo estado y que las instancias de sincronización se supervisen entre sí.

2. Instalación y despliegue

2.1 Instalar vía binario
1) Instalar dependencias

yum install curl gcc openssl-devel libnl3-devel net-snmp-devel

2) Descargar y descomprimir el paquete de instalación y compilarlo

tar xz keepalived-1.2.15.tar.gz
./configure
Make && make install

3) Instalar en el directorio especificado

./configure --prefix=/usr/local/keepalived-1.2.15

2.2 Instalar a través de paquetes dependientes

yum -y install keepalived
yum -y install nmap-ncat

- prueba

systemctl status keepalived.service
systemctl start keepalived.service

3. Configuración

Por ejemplo, dos nginx o mysql mutuamente maestros pueden proporcionar servicios al mismo tiempo, y el otro puede hacerse cargo después de que un servicio deja de funcionar.
Ejemplo: nodo maestro

! Configuration File for keepalived

global_defs {
    
    
    router_id test_kp
}

vrrp_script chk_local {
    
    
    script "/local/keepalived/etc/stop.sh"
    interval 15
    fall 3
    rise 1
# weight 10
}
vrrp_instance VI_1 {
    
    
    state BACKUP
    interface bond0
    virtual_router_id 1001
    priority 100
    advert_int 1
    nopreempt   ## backup 节点不需要配置
    authentication {
    
    
        auth_type PASS
        auth_pass server101
    }
    track_script {
    
    
        chk_local
    }
    virtual_ipaddress {
    
    
        192.168.10.101/24
    }
}

Ejemplo: nodo en espera

! Configuration File for keepalived

global_defs {
    
    
    router_id test_kp
}

vrrp_script chk_local {
    
    
    script "/local/keepalived/etc/stop.sh"
    interval 3
    weight -5
    }


vrrp_instance VI_1 {
    
    
    state BACKUP
    interface eth0
    virtual_router_id 1001
    priority 99
    advert_int 1
    authentication {
    
    
        auth_type PASS
        auth_pass server101
    }
    virtual_ipaddress {
    
    
        192.168.10.101/24
    }
track_script {
    
    
    chk_local
    }
}

Parámetros detallados

inserte la descripción de la imagen aquí

4. Preguntas frecuentes

4.1 Consejos de registro

WARNING - script '/etc/keepalived/check_nginx.sh' is not executable for uid:gid 0:0 - disabling.

Motivo: el script de supervisión de actividad en el equipo en espera no tiene permiso de ejecución.
Resuelto: chmod +x ~/check_nginx.sh.

4.2 Las direcciones VIP activas y en espera de Keeplived no se pueden cambiar
Motivo: la prioridad de la configuración de Keeplived es la misma.
Solución: verifique el parámetro de prioridad del archivo de configuración keepalived.cof, y la prioridad de los nodos maestro y esclavo está configurada para ser diferente.


1. Descripción general
En la sección anterior, hemos entendido el uso básico de keepalive master y backup, pero esa es la deriva de vip lograda al detener el proceso de keepalive por tiempo de inactividad y otras situaciones.Este artículo agrega keepalive para verificar el script de supervivencia nginx para Supervise nginx Realice una alta disponibilidad de nginx

inserte la descripción de la imagen aquí

2. Preparación
Prepare 2 máquinas y defina 111 como el nodo MAESTRO de keepalive

inserte la descripción de la imagen aquí

Configure nginx en los dos servidores respectivamente y modifique el index.html predeterminado para agregar el logotipo de ip para una fácil identificación, de la siguiente manera:

inserte la descripción de la imagen aquí

3. Configure keepalived
Configure track_script en la instancia en el archivo de configuración de keepalived para especificar el script para verificar si nginx está vivo

3.1 maestro (172.16.225.111)

! Configuration File for keepalived

global_defs {
    
    
  router_id LB111
}

vrrp_script chk_nginx {
    
    
  # 具体的脚本
  script "/etc/keepalived/nginx_check.sh"
  interval 2 # 2s执行一次
  weight -20 # 失败一次 则优先级 -20
}

vrrp_instance VI_1 {
    
    
   state MASTER
   interface ens160
   virtual_router_id 51
   priority 100
   advert_int 1
   authentication {
    
    
       auth_type PASS
       auth_pass 1111
  }
   virtual_ipaddress {
    
    
      172.16.225.200
  }
   # 指定脚本
   track_script {
    
    
     chk_nginx
  }
}

3.2 maestro (172.16.225.110)

! Configuration File for keepalived

global_defs {
    
    
  router_id LB111
}

vrrp_script chk_nginx {
    
    
  script "/etc/keepalived/nginx_check.sh"
  interval 2
  weight -20
}

vrrp_instance VI_1 {
    
    
   state BACKUP
   interface ens160
   virtual_router_id 51
   priority 90
   advert_int 1
   authentication {
    
    
       auth_type PASS
       auth_pass 1111
  }
   virtual_ipaddress {
    
    
      172.16.225.200
  }

   track_scrip {
    
    
     chk_nginx
  }
}

4. La configuración de nginx_check.sh
es principalmente este script. El contenido de este script es verificar si el proceso nginx está activo a través del comando ps. Si no está activo, intente iniciarlo una vez y compruébelo. Si aún falla start, apague keepalived para que keepalived pueda detectarlo y vip pueda derivar a otras máquinas:

#!/bin/bash
status=$(ps -C nginx --no-heading|wc -l)
if [ "${status}" = "0" ]; then
           # 尝试启动一次
          systemctl start nginx
       # 再次检查ngixn 进程
       status2=$(ps -C nginx --no-heading|wc -l)
       if [ "${status2}" = "0" ]; then
               # 关闭 keepalived
              systemctl stop keepalived
       fi
fi

Este script debe configurarse en ambas máquinas:

# 给脚本一个 可执行的权限
chmode +x /etc/keepalived/nginx_check.sh
# 重启或者启动 keepalived
systemctl restart keepalived

5. Cierre selinux
Si ve el siguiente error en el registro después de reiniciar o iniciar, significa que selinux no está cerrado.
inserte la descripción de la imagen aquí

# 临时关闭
setenforce 0

#永久关闭
sed -i 's/SELINUX=enforcing/\SELINUX=disabled/' /etc/selinux/config

6. Prueba de simulación
después de iniciar nginx y keepalive en dos máquinas respectivamente. Acceda a vip 172.16.225.200 Este vip se encuentra actualmente en la máquina maestra 111.
inserte la descripción de la imagen aquí

Cierre ngixn en la máquina maestra.

# 关闭 nginx
./nginx -s stop
# 此时查看 keepalived 的状态就是 dead了
systemctl status keepalived

● keepalived.service - LVS and VRRP High Availability Monitor
  Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
  Active: inactive (dead)

Visite vip 172.16.225.200 nuevamente y podrá ver que vip se ejecutó en la máquina de copia de seguridad 110.
inserte la descripción de la imagen aquí
En resumen,
la configuración básica activa-en espera de keepalive + nginx se da cuenta de la alta disponibilidad de nginx. El punto central es configurar el script nginx_check.sh para la ejecución de keepalive. Si el script nginx_check.sh encuentra que nginx no está vivo, intente iniciarlo, y si aún no sobrevive, se cerrará directamente.proceso keepalive.

Supongo que te gusta

Origin blog.csdn.net/u014374009/article/details/129220497
Recomendado
Clasificación