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
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
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
2. Preparación
Prepare 2 máquinas y defina 111 como el nodo MAESTRO de keepalive
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:
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.
# 临时关闭
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.
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.
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.