Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web

Ambiente experimental

Dos máquinas virtuales CentOS-7.5
web1: 10.0.11.203
web2: 10.0.11.204
VIP: 10.0.11.210
tipo de web: nginx
cliente: libreta de uso propio (win10)
script de detección de estado nginx: ck_nginx.sh

Experimento uno, use keepalived para simplemente darse cuenta de la función de alta disponibilidad del clúster web

1. Prepare dos servidores web

1) Situación de la tarjeta de red Web1
[root @ CentOS ~] #
[root @ CentOS ~] # ip a
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web

2) Situación de la tarjeta de red Web2
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] # ip a
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web

3) Instalar nginx

web1 end:
[root @ CentOS ~] #
[root @ CentOS ~] # yum install nginx
[root @ CentOS ~] # rpm -qa nginx
nginx-1.16.1-1.el7.x86_64
[root @ CentOS ~] #
[ root @ CentOS ~] #
[root @ CentOS ~] #> /usr/share/nginx/html/index.html # Vaciar la página web predeterminada
[root @ CentOS ~] # echo web1> / usr / share / nginx / html / index .html #Deje que la página web muestre web1
[root @ CentOS ~] # cat /usr/share/nginx/html/index.html
web1
[root @ CentOS ~] #
[root @ CentOS ~] # systemctl start nginx #Start nginx
[root @CentOS ~] # systemctl habilita nginx #Set nginx para que se inicie automáticamente después de iniciar
C: \ Users \ Administrator> curl 10.0.11.203
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web

web2 端 :
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] # yum install nginx
[root @ CentOS-2 ~] # rpm -qa nginx
nginx-1.16.1-1.el7.x86_64
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] #> /usr/share/nginx/html/index.html
[root @ CentOS-2 ~] # echo web2> /usr/share/nginx/html/index.html
[root @ CentOS-2 ~] # cat /usr/share/nginx/html/index.html
web2
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] # systemctl start nginx
[root @ CentOS-2 ~] # systemctl enable nginx
C: \ Users \ Administrator> curl 10.0.11.204
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web

4)
Instrucciones para instalar keepalived : ambos servidores web necesitan instalar el servicio keepalived

web1 端 :
[root @ CentOS ~] #
[root @ CentOS ~] # yum install keepalived
[root @ CentOS ~] # rpm -qa keepalived
keepalived-1.3.5-16.el7.x86_64
[root @ CentOS ~] #

web2 : :
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] # yum install keepalived
[root @ CentOS-2 ~] # rpm -qa keepalived
keepalived-1.3.5-16.el7.x86_64
[root @ CentOS-2 ~] #

5) Configure dos keepalived y comience

web1 end:
[root @ CentOS ~] #
[root @ CentOS ~] #> /etc/keepalived/keepalived.conf # Vacía la configuración original
[root @ CentOS ~] # vim /etc/keepalived/keepalived.conf #Edit configuration Archivo, archivo de configuración personalizada keepalived
[root @ CentOS ~] # cat /etc/keepalived/keepalived.conf
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web
[root @ CentOS ~] #
[root @ CentOS ~] # systemctl start keepalived #start
[root @ CentOS ~] # systemctl habilitar keepalived #Set start start

web2 end:
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] #> /etc/keepalived/keepalived.conf
[root @ CentOS-2 ~] # vim /etc/keepalived/keepalived.conf
[root @ CentOS-2 ~] # cat /etc/keepalived/keepalived.conf
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] # systemctl start keepalived #Start
[root @ CentOS-2 ~] # systemctl enable keepalived #Set boot

3.
Método de acceso de prueba : use el cliente para acceder a la web a través de la prueba VIP

C: \ Users \ Administrator> curl 10.0.11.210 # El cuaderno personal accede a la web a través de una prueba VIP
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web

Desenchufe el cable de red del servidor web1 y use el cliente para acceder a la web a través de la prueba VIP:
C: \ Users \ Administrator> curl 10.0.11.210
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web

Vuelva a conectar el cable de red del servidor web1 y use el cliente para acceder a la web a través de la prueba VIP:
C: \ Users \ Administrator> curl 10.0.11.210
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web

4. La conclusión del experimento:
1) La alta disponibilidad del clúster de servidores web se logró con éxito usando keepalived
2) Aunque la alta disponibilidad de la web se puede lograr en el caso de una falla anormal del servidor, desafortunadamente, es imposible lograr la excepción para el servicio web en este momento El cambio de alta disponibilidad causado por la falla; keepalived no puede percibir el estado de ejecución y el estado del servicio nginx.


Experimento dos, use keepalived combinado con nginx script de monitoreo y detección para lograr una función de clúster más flexible y altamente disponible

Entorno experimental: según el entorno del
experimento uno, la única diferencia entre el experimento uno y el experimento uno es que el script de detección del estado de salud nginx debe estar preparado

1. Escribir script de detección de salud nginx

Ejecute en el extremo web1:
[root @ CentOS ~] #
[root @ CentOS ~] # vim /etc/keepalived/ck_nginx.sh #Escriba un script keepalived para detectar el estado de salud de nginx

#! / bin / bash
#Compruebe si el proceso ngin existe
counter = $ (ps -C nginx --no-header | wc -l)
if ["$ {counter}" = "0"]; luego
# Intente iniciar ngnx una vez , Después de 5 segundos de detención, verifique nuevamente
systemctl start nginx
sleep 5
counter = $ (ps -C nginx --no-header | wc -l)
if ["$ {counter}" = "0"]; luego #si el
inicio no es exitoso , Simplemente elimine keepave para activar el sistema de interruptor maestro-
esclavoctl stop nginx
fi
fi
[root @ CentOS ~] #
[root @ CentOS ~] # cat /etc/keepalived/ck_nginx.sh # Ver contenido del script
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web
[root @ CentOS ~] #
[root @CentOS ~] # chmod + x /etc/keepalived/ck_nginx.sh # Permisos ejecutables del script de Garant
[root @ CentOS ~] #

Ejecución final de Web2:
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] # vim /etc/keepalived/ck_nginx.sh

#! / bin / bash
#Compruebe si el proceso ngin existe
counter = $ (ps -C nginx --no-header | wc -l)
if ["$ {counter}" = "0"]; luego
# Intente iniciar ngnx una vez , Después de 5 segundos de detención, verifique nuevamente
systemctl start nginx
sleep 5
counter = $ (ps -C nginx --no-header | wc -l)
if ["$ {counter}" = "0"]; luego #si el
inicio no es exitoso , Kill keepave para activar el sistema de interruptor master-
standbyctl stop nginx
fi
fi

[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] # cat /etc/keepalived/ck_nginx.sh
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web
[root @ CentOS-2 ~] #
[root @ CentOS- 2 ~] # chmod + x /etc/keepalived/ck_nginx.sh
[root @ CentOS-2 ~] #

2. Edite y modifique el archivo de configuración nginx
web1 end:
[root @ CentOS ~] #
[root @ CentOS ~] # vim /etc/keepalived/keepalived.conf # Archivo de configuración personalizado

! Archivo de configuración para keepalived

global_defs {
notificación_email { br /> [email protected]
}
smtp_server 192.168.23.1
smtp_connect_timeout 30
router_id 1
}

vrrp_script chk_nginx {
script "/etc/keepalived/ck_nginx.sh"
intervalo 2
peso -5
error 3
}

vrrp_instance VI_1 { interfaz de
estado MAESTRO
ens32
mcast_src_ip 10.0.11.203
virtual_router_id 55
prioridad 100
advert_int 1

authentication {
auth_type PASS
auth_pass 123456
}

virtual_ipaddress {
    10.0.11.210/24
}

track_script {
     chk_nginx
}

}

[root @ CentOS ~] #
[root @ CentOS ~] # systemctl reiniciar keepalived # Reiniciar keepalived para que la configuración surta efecto
[root @ CentOS ~] #

web2 end:
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] # vim /etc/keepalived/keepalived.conf # Archivo de configuración personalizado

! Archivo de configuración para keepalived

global_defs {
notificación_email {
br /> [email protected]
}
smtp_server 192.168.23.1
smtp_connect_timeout 30
router_id 1
}

vrrp_script chk_nginx {
script "/etc/keepalived/ck_nginx.sh"
intervalo 2
peso -5
error 3
}

vrrp_instance VI_1 { interfaz
MAESTRO de estado
ens32
mcast_src_ip 10.0.11.204
virtual_router_id 55
prioridad 95
advert_int 1

authentication {
auth_type PASS
auth_pass 123456
}

virtual_ipaddress {
    10.0.11.210/24
}

track_script {
     chk_nginx
}

}

[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] # systemctl reiniciar keepalived # Reiniciar keepalived para que la configuración surta efecto

Pruebe la función keepalived:
debido al contenido del script, el servicio nginx se iniciará inmediatamente después de detenerse, por lo que simulamos el apagado anormal del servidor y hacemos que el servicio nginx no tenga forma de iniciarse automáticamente
[root @ CentOS ~] #
[root @ CentOS ~] # init 0 # Apague el servidor web1

[root @ CentOS-2 ~] #
[root @ CentOS-2 ~] # ping 10.0.11.203 #Utilice web2 en pingweb1 y descubra que web1 se ha apagado
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web

En este momento, use el cliente para probar y verificar la función keepalived:
C: \ Users \ Administrator> curl 10.0.11.210 #Utilice el cliente para acceder al servidor web a través de VIP
Keepalived combinado con el script de detección de estado nginx para lograr una alta disponibilidad para el clúster de servidores web

3. Conclusión del experimento 2 El
uso del servicio keepalived combinado con el script de detección de estado de salud nginx logró con éxito una alta disponibilidad para el clúster de servidores web

Supongo que te gusta

Origin blog.51cto.com/14783377/2486411
Recomendado
Clasificación