Desarrollo del programa

Apache Dual para un equilibrio de carga de alta disponibilidad

Installación de apache bajo centos7 y auto-inicio keepalived Installación Tutorial Installación del tutorial anterior instalado en dos máquinas por separado [...]

Catálogo de artículos

Instalación de apache y arranque automático en centos 7

Tutorial de instalación Keepalived

Instalar el tutorial anterior para instalar Apache y Keepalived en ambas máquinas, respectivamente.

Configurar el keepalived de la primera máquina

El contenido del archivo de configuración es el siguiente:

Editar /etc / keepalived / keepalived.conf

# vi /etc/keepalived/keepalived.conf, añadir lo siguiente

! Archivo de configuración para Keepalived

global _ defs {
Notificación _ correo electrónico {
admin@example.com
}
Notificación _ correo electrónico _ desde www.example.com
smtp _ server www.example.com
smtp _ connect _ timeout 30
router_id linux01
}

vrrp _ instancia VI_1 { # Definir una instancia
Estado de respaldo # Configurar como copia de seguridad y luego controlar qué elevación es primaria por prioridad
Interfaz Eth0
Virtual _ Router _ ID 51
Prioridad 100
El nopreempt # Establezca este parámetro en la unidad de alta prioridad, conveniente cuando el maestro se recupera
advert _ int 1 # Puede hacerse cargo automáticamente
autenticación {
auth _ type PASS
Auth _ pass 1111
}
Virtual _ ipaddress {
10.0.0.199 # habilitar eth0: 0 con la etiqueta label aquí
}
}

virtual _ server www.example.com 80 { # Aquí abajo es la definición de LVS
Delay_loop 6
rr lb _ algo
Lb _ Kind DR
nat _ mask www.example.com
Protocolo TCP

real _ server www.example.com 80 { # Uno de ellos es un servicio web local
Peso 1
El TCP _ CHECK
connect _ timeout 3
}
}
real _ server www.example.com 80 { # Servicio web de otro
Peso 1
El TCP _ CHECK
connect _ timeout 3
}
}
}
El archivo mantenido para la segunda máquina es el siguiente

Editar /etc / keepalived / keepalived.conf

# vi /etc/keepalived/keepalived.conf, añadir lo siguiente

! Archivo de configuración para Keepalived

global _ defs {
Notificación _ correo electrónico {
admin@example.com
}
Notificación _ correo electrónico _ desde www.example.com
smtp _ server www.example.com
smtp _ connect _ timeout 30
router_id linux02
}

vrrp _ instancia VI_1 { # Definir una instancia
Estado de respaldo # Configurar como copia de seguridad y luego controlar qué elevación es primaria por prioridad
Interfaz Eth0
Virtual _ Router _ ID 51
Prioridad 50
advert _ int 1 # Puede hacerse cargo automáticamente
autenticación {
auth _ type PASS
Auth _ pass 1111
}
Virtual _ ipaddress {
10.0.0.199 # habilitar eth0: 0 con la etiqueta label aquí
}
}

virtual _ server www.example.com 80 { # Aquí abajo es la definición de LVS
Delay_loop 6
rr lb _ algo
Lb _ Kind DR
nat _ mask www.example.com
Protocolo TCP

real _ server www.example.com 80 { # Uno de ellos es un servicio web local
Peso 1
El TCP _ CHECK
connect _ timeout 3
}
}
real _ server www.example.com 80 { # Servicio web de otro
Peso 1
El TCP _ CHECK
connect _ timeout 3
}
}
}
Después de que el archivo de configuración keepalived se haya modificado, comience a modificar la página predeterminada de apache vi / opt / apache / apache-2.4.29 / htdocs / index.html siempre que el contenido de los dos archivos predeterminados no sea el mismo.

Direcciones de loopback de arranque nativo

Es bien sabido que si se usaLvsEn el modo dr, la dirección de bucle debe iniciarse en el servidor real, por lo que, para construir el equilibrio de carga de las dos máquinas, por supuesto, también debe iniciar la dirección de bucle correspondiente en la máquina local para lograr la función deseada. El script es el siguiente: (Los siguientes dos scripts son originales de mosquitos, la dirección del sitio web de mosquitos http://www.wenzizone.cn)
# vi /usr/local/bin/startlo

#!/ Bin / sh

VIP = 10.0.0.199

El caso "$1 "
Detenerse)
# cerrar la interfaz lo: 0

echo $"Cerrar la interfaz lo: 0 "
/sbin/route del - host $VIP dev lo: 0
/ sbin / ifconfig lo: 0 hacia abajo
echo "0 " > /proc/sys/net/ipv4/conf/all/arp_announce
echo "0 " > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0 " > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "0 " > /proc/sys/net/ipv4/conf/lo/arp_ignore
;;
Comienzo)
# Inicio lo: 0 Interfaz

echo $"Iniciar la interfaz lo:0 "
/sbin/ifconfig lo:0 $VIP/32 broadcast $VIP up
/ sbin / route add - host $VIP dev lo: 0
echo « 2 » > /proc/sys/net/ipv4/conf/all/arp_announce
echo "1 " > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2 " > /proc/sys/net/ipv4/conf/lo/arp_announce
echo « 1 » > /proc/sys/net/ipv4/conf/lo/arp_ignore
;;
*)
echo $" Uso: $0 (iniciar)| Detenerse)
Salida 1
;;
Esac

Sin embargo, dado que Keepalived no tiene directord para controlar el inicio y parada de las direcciones de loopback como Heartbeat, necesitamos un juicio artificial sobre qué máquina debe iniciar las direcciones de loopback, por lo que Mosquito escribe el siguiente script:

# vi / usr / local / bin / check _ interface

#!/ El bin / bash
#
Autor: Mosquito
#
# Descripción del guión:
# Este script se utiliza para determinar si el servidor actual es maestro
# Inicia la dirección de loopback si el servidor actual no es maestro
# de lo contrario detener la dirección de loopback
#
# VIP _ interface Por favor, configure de acuerdo con su propia situación, esta es la interfaz VIP
# lo _ interface Por favor, configure de acuerdo con su propia situación, es una interfaz de dirección de bucle

VIP_interface = "eth0:0 ′′
lo _ interface = " lo: 0 ′′

I = 10

Mientras que [$i! = 0)
Do
/ sbin / ifconfig| grep $VIP _ interface &> / dev / null
¿Retval = $?
Si [! $retval -eq 0];
/ sbin / ifconfig| grep $lo _ interface &> / dev / null
¿Retval = $?
Si [! $retval -eq 0];
/ usr / local / bin / startlo
Fi
Otras
/ sbin / ifconfig| grep $lo _ interface &> / dev / null
¿Retval = $?
si [$retval - eq 0]; entonces
/ usr / local / bin / startlo stop
Fi
Fi
I = 10
Dormir 10
hecha

Una vez que ambas máquinas han completado dos scripts, todo está listo para probarlo.

Primero configure todos los scripts necesarios con permisos ejecutables. Iniciar el servicio apropiado a su vez

A. Apache no tiene que ser iniciado al azar.
B, # / usr / local / bin / check _ interface
C, # servicio keepalived inicio
Si no hay ningún error, significa que el servicio se ha iniciado, el registro de mantenimiento se almacena en / var / log / messages, si hay algún error, por favor revise por sí mismo.

Prueba 1: Prueba de equilibrio de carga en estado actual

Método: Abra el navegador IE, escriba http://192.168.211.110, luego use ctrl + F5 para actualizar continuamente. Puede ver que el contenido de la página web se cambia entre linux01 y linux02.

Prueba 2: Detener el keepalive de linux01 para probar el equilibrio de carga

Métodos:

A, /etc/init.d/keepalived stop
Luego espere unos segundos para ver que la dirección lo: 0 en linux01 se ha iniciado y lo: 0 en linux02 se ha detenido.

B, abra el navegador IE, escriba http://192.168.211.110, y luego use ctrl + F5 para actualizar continuamente, puede ver el cambio de contenido de la página web en linux01 y linux02

Prueba 3: Abra keepalived en linux01 y observe si linux01 cambia de nuevo a master

Método: Inicie el programa Keepalived, use ifconfig para observar que la interfaz eth0: 0 se ha iniciado en linux01, mientras que la interfaz lo: 0 se detiene, la interfaz eth0; 0 se detiene en linux02, mientras que la interfaz lo: 0 se inicia.

Apache Dual Build High Availability Load Balancing Tutorial ha sido escrito, ¿Cuáles son las preguntas que puede dejar un mensaje a continuación para discutir la comunicación juntos