Basado Keepalived lograr la transferencia de VIP, LVS, nginx alta disponibilidad

Basado Keepalived lograr la transferencia de VIP, LVS, nginx alta disponibilidad

soluciones de clúster de alta disponibilidad A, Keepalived

Dos, VRRP máquina de estados finitos

En tercer lugar, el uso Keepalived lograr la transición de la VIP

En cuarto lugar, poner en práctica de notificaciones personalizadas cuando las transiciones de estado,

En quinto lugar, para lograr el equilibrio de carga

Seis: Nginx lograr una alta disponibilidad

soluciones de clúster de alta disponibilidad A, Keepalived

183501583.png

Los IPVS nacimiento originales para proporcionar alta disponibilidad, después de recibir la información que el nodo maestro en el extremo posterior RealServer, keepalived puede llamar a sus propias reglas de generación de comandos ipvsadm, puede automáticamente, así como el principal nodo de VIP IPVS reglas "hacerse cargo" aplicación desde el nodo, continuar al servicio al cliente. También permitirá al estado de salud del back-end RealServer hacer las pruebas.

Después de keepalived inicio en un nodo, generará un proceso principal Maestro, el proceso principal generará dos sub-procesos, que son VRRP Stack (lograr protocolo VRRP) Checkers (Health Check IPVS RealServer detección de back-end)

Dos, VRRP máquina de estados finitos

183601870.png

Después de que ambos lados nodos VRRP han comenzado a poner en práctica las transiciones de estado, sólo comenzó cuando el estado inicial es BACKUP, a continuación, enviar una notificación a otros nodos, así como su información de prioridad, que una alta prioridad, se convierte en MAESTRO, de otro modo, o de respaldo, esta vez en el estado para iniciar el servicio en el nodo maestro, proporcionan servicios para los usuarios, si el nodo colgó, luego se convierte en BACKUP, la prioridad es reducido, convertido a otro maestro de nodo, el aumento de la prioridad , el servicio se inicia en este nodo, VIP, VMAC serán transferidos al nodo, proporcionando servicios a los usuarios,

entorno experimental:

Alojamiento Web Versión:

CentOS6.4-i686

Dos nodos:

node1.limian.com 172.16.6.1

node2.limian.com 172.16.6.10

listo

1, un nodo:

Sincronización de tiempo:

[Root @ nodo1 ~] # ntpdate 172.16.0.1

instalación keepalived

[Root @ nodo1 ~] # yum -y install Keepalived

2, dos nodos hacen el mismo trabajo

En tercer lugar, el uso Keepalived lograr la transición de la VIP

3.1 las modificaciones del archivo de configuración keepalived:

[Root @ nodo1 ~] # cd / etc / keepalived / 
[root @ nodo1 keepalived] # cp keepalived.conf keepalived.conf.back // dan la vuelta fichero de configuración por lo que 
[root @ nodo1 keepalived] # vim keepalived.conf

3.2 Escenario Global

{global_defs 
   notification_email {// definición de servicio de correo de 
        root @ localhost // define el destinatario, a la máquina en este documento, pero usos de prueba 
   } 
   notification_email_from kaadmin @ // localhost definido emisor, 
   servidor de correo smtp_server definido // 127.0.0.1 , no debe utilizar la dirección externa 
   smtp_connect_timeout 30 // tiempo de espera de 
   la ROUTER_ID del LVS_DEVEL                        
}

3.3 Definición de la etapa vrrp

 

vrrp_instance VI_1 {// definición de encaminamiento virtual, VI_1 identificador de ruta virtual, el nombre de su propia definición de 
    la MAESTRO estado // abierta, la prioridad del nodo es una prioridad mayor que otro nodo, el estado señor en 
    interfaz eth0 // Todas las notificaciones y otra información de esta interfaz eth0 cabo 
    virtual_router_id 7 // ID del encaminamiento virtual, y esto virtual MAC ID también es la fuente del último párrafo, este número ID es generalmente no mayor de 255, y el ID de ser contrarios 
    prioridad 100 // prioridad inicial 
    número advert_int 1 // anunciado 
    autenticación {// mecanismo de autenticación 
        auth_type PASS // tipo de autenticación 
        auth_pass 1111 // contraseña, una serie de caracteres aleatorios deberían 
    } 
    virtual_ipaddress {// dirección virtual, es decir, el VIP 
        172.16.6.100    
    } 
}

Nos archivo de configuración de nodo maestro se modifica Bueno, tiene que copiar desde un nodo, haga lo apropiado cambia listo para su uso

[Root @ nodo1 keepalived] # scp keepalived.conf 172.16.6.1:/etc/keepalived/

3,4 sesión en el nodo;

[Nodo2 la raíz @ ~] # cd / etc / keepalived / 
[la raíz @ nodo2 keepalived] # Vim keepalived.conf 
vrrp_instance VI_1 { 
    Estado // modificar el estado de copia de seguridad desde el nodo, el nodo maestro al maestro, es el nodo desde el BACKUP 
    interfaz eth0 
    virtual_router_id . 7 
    prioridad 99 // modificar la prioridad, la atención prioritaria debe ser menor que el nodo maestro es el nodo 
    advert_int. 1 
    autentificación { 
        AUTH_TYPE el PASS 
        AUTH_PASS 1111 
    } 
    virtual_ipaddress { 
        172.16.6.100 
    } 
}

3.5 el nodo maestro a continuación, iniciar el servicio

[Root @ nodo1 keepalived] # servicio Keepalived de inicio 
[root @ nodo1 ~] # ip addr Mostrar // Consulte nuestra definición VIP

184053712.png

3.6 Desde el principio el nodo de servicio

[Root @ nodo2 keepalived] # servicio Keepalived empezar

El servicio en el nodo primario se detuvo, VIP no se parecerá al nodo

[Root @ nodo2 ~] # ip addr espectáculo

184225729.png

3.7 iniciar el servicio en el nodo principal

 

[La raíz @ nodo1 ~] # Puesta en servicio Keepalived 
[la raíz @ nodo1 ~] // # show ip addr encontró resultado de la detección VIP transfiere al nodo maestro

nota:

 

Por el trabajo ARRP por defecto en "modo preventivo", si se encuentra un servicio de paradas de nodos, otro nodo inmediatamente VIP y VMAC "apoderarse de ella", si bajo el "modo no preferente", si su prioridad demasiado alta, parar un nodo de servicio, otro nodo no VIP "agarrar" y VMAC, a menos que este nodo colgó, los dos nodos se "agarre".

 

En cuarto lugar, poner en práctica de notificaciones personalizadas cuando las transiciones de estado,

 

4.1 Esta necesidad de depender de un script para completa

 

El nodo maestro

 

[root @ nodo1 ~] # cd / etc / keepalived / 
[root @ nodo1 keepalived] # vim notify.sh //编写脚本
#! / bin / bash 
vip = 172.16.6.100 
contacto = 'root @ localhost' 
thisip = `ifconfig eth0 | awk '/ inet addr: / {print $ 2}' | awk -F: '{print $ 2}' ` 
Notify () { 
    mailsubject = "$ thisip es bi maestro $ vip" 
    cuerpo del correo = "transacción vrrp, vip $ flotaba a $ thisip" 
    echo $ cuerpo del correo | -S mail "$ mailsubject" $ contactos 
} 
case "$ 1" en el 
    maestro) 
        notificar maestro 
        de salida 0 
    ;; 
    copia de seguridad) 
            notificar copia de seguridad 
        de salida 0 
    ;;
    *) 
        Echo 'Uso: `basename $ 0` {maestro | copia de seguridad | culpa}' 
        la salida 1 
    ;; 
esac 
[root @ nodo1 keepalived] # chmod + x notify.sh 
[root @ nodo1 keepalived] # ./notify.sh maestro 
[root @ nodo1 keepalived] # // electrónico查看有没有收到通知
versión de la herencia de correo 12.4 7/29 / 08. Tipo ? en busca de ayuda. 
"/ var / spool / mail / root": 1 Mensaje 1 new 
> N1 raíz Mié Sep 25 de 14:54 18/668 "172.16.6.10 es bi 172.16.6.100 mas" 
y

Compruebe si se le notificará al estado de transición

 

[root @ nodo1 keepalived] copia de seguridad # ./notify.sh 
[root @ nodo1 keepalived] culpa # ./notify.sh 
[root @ nodo1 keepalived] # electrónico 
de la herencia Mail versión 12.4 07/29/08. Tipo ? en busca de ayuda. 
"/ var / spool / mail / root": 3 mensajes 2 nuevo 
    1 raíz Mie 25 sep 14:54 19/679 "172.16.6.10 es bi 172.16.6.100 mas" 
> N 2 raíz Mie 25 sep 14:57 18 / 668 "172.16.6.10 es bi 172.16.6.100 mas" 
 N 3 raíz mié Sep 25 14:57 18/668 "172.16.6.10 es bi 172.16.6.100 mas" 
y

Descripción del script para el trabajo, y luego ir a editar el archivo de configuración

 

[Root @ nodo1 keepalived] # vim keepalived.conf

Añadir en el escenario global

 

vrrp_script chk_mantaince_down {// script de control manual puede definir una 
   secuencia de comandos "[[-f / etc / keepalived / Abajo]] && salida salida. 1 || 0" 
   intervalo El intervalo de tiempo. 1 // Comprobar 
   peso -2 // Si la prueba falla, prioridad de -2 
}

Añadir las siguientes líneas en fase vrrp

 

track_script {//引用定义的脚本
       chk_mantaince_down 
    } 
  notify_master "maestro /etc/keepalived/notify.sh" 
   notify_backup "copia de seguridad /etc/keepalived/notify.sh" 
   notify_fault "culpa /etc/keepalived/notify.sh"

 

4.2 copiar el script a otro nodo,

 

[Root @ nodo1 keepalived] # scp notify.sh 172.16.6.1:/etc/keepalived/

Y una posición correspondiente a los mismos contenidos se añade en el archivo de configuración

 

Ambos nodos para reiniciar el servicio

 

4.3 Que el nodo maestro se convierte en un nodo esclavo

root @ nodo1 keepalived] # anulada

Mediante la supervisión, encontró que inmediatamente se convierte en el nodo principal del nodo, y recibir un correo electrónico

 

[root @ nodo1 keepalived] # tail -f / var / log / messages 
Tiene correo nuevo en / var / spool / mail / root

En quinto lugar, para lograr el equilibrio de carga

 

5.1 editar el archivo de configuración

 

[Root @ nodo1 keepalived] # vim keepalived.conf 
##### balanceo de carga fase ################# 
virtual_server 172.16.6.100 80 {// especificar el VIP y el puerto 
    delay_loop 6 // cuántos ciclos de reinicio retrasado el servicio, el servicio haciendo la detección 
    lb_algo rr LoadBalance algoritmo de equilibrio de carga 
    lb_kind DR tipos 
    nat_mask 255.255.0.0 máscara 
    persistence_timeout 0 tiempo de conexión persistente 
    protocolo TCP // protocolo 
    real_server 172.16.6.11 80 {// definición de la parte trasera atributo RealServer 
        peso. 1 
HTTP_GET {// define método de 
            URL url {// detectado 
              ruta / 
código de estado status_code resultado 200 se adquiere // 
            } 
            connect_timeout el tiempo de conexión. 3 // 
            nb_get_retry 3 // intentos
            delay_before_retry 3 // espera antes de intentar cada conexión 
        } 
} 
real_server 172.16.6.12 80 {// atributos definidos en el RealServer extremo trasero 
        de peso. 1 
HTTP_GET {// definición de métodos de detección de 
            url {// detectado la URL 
              ruta / 
status_code // 200 es código de estado de resultado adquisición 
            } 
            connect_timeout el tiempo de conexión. 3 // 
            nb_get_retry 3 // intentos 
            delay_before_retry 3 // espera antes de intentar cada conexión 
        } 
    } 
}

5.2, en el nodo de hacer la misma modificación

 

5.3 reinicio del servicio genera y detecta si las reglas con ipvsadm comando

 

[root @ nodo1 keepalived] # servicio de reinicio keepalived 
[root @ nodo1 keepalived] # ipvsadm -L -n 
IP versión 1.2.1 del servidor virtual (tamaño = 4096) 
Prot LocalAddress: Puerto Programador Banderas 
  -> RemoteAddress: Port Forward Peso activeconn InActConn 
TCP 172.16.6.100:80 rr 
[root @ nodo1 keepalived] #

Pero ¿por qué no hay dos RealServer lo definimos? Esto se debe a que no se ha iniciado la máquina virtual, control de salud no fue aprobada, no se mostrará, fuimos a iniciar una máquina virtual, e iniciar el servicio.

 

Y ejecutar el siguiente comando, hacer LVS balanceo de carga modelo DR

 

#ifconfig lo: 0 172.16.6.11 172.16.6.11 emisión máscara de red 255.255.255.255 hasta 
#route complemento -Casa de 172.16.6.11 dev lo: 0 
#echo 1> / proc / sys / net / ipv4 / conf / lo / arp_ignore 
#echo 1 > / proc / sys / net / ipv4 / conf / all / arp_ignore 
#echo 2> / proc / sys / net / ipv4 / conf / all / arp_announce 
#echo 2> / proc / sys / net / ipv4 / conf / lo / arp_announce

nota:

 

1, el número RealServer final múltiple trasera se puede añadir, sin embargo, necesita el archivo de configuración apropiado en la configuración en el nodo maestro, y ejecuta los comandos relacionados para añadir RealServer

 

2, aunque IPVS Keepalived pueden añadir sus propias reglas, balanceo de carga, pero no pueden alcanzar estática y dinámica de separación, en un entorno de producción que tienen que elegir la mejor solución de acuerdo con la escena.

 

Seis: Nginx lograr una alta disponibilidad

 

6.1 precondición

 

En ambos nodos instalados servicio de nginx, y asegúrese de que no está habilitado httpd

 

# Netstat -tunlp // Asegúrese de que el puerto 80 no está ocupado

 

# Nginx servicio se inicia

 

6.2 editar nginx cada página de un nodo, con el fin de efecto más intuitivo

 

[Root @ nodo1 ~] # vim /usr/share/nginx/html/index.html // nodo. 1 
172.16.6.10 
[nodo2 la raíz @ ~] // nodo # Vim /usr/share/nginx/html/index.html 2 
172.16.6.1

6.3 Nginx garantizar el acceso normal

 

184735882.png

 

6.4 luego se detuvo el servicio,

 

[Root @ nodo1 keepalived] # vim notify.sh // modificar la secuencia de comandos, puede supervisar el servicio nginx, y se puede activar o desactivar el servicio 
################## 
Caso "$ 1 "en el 
    Master) 
        el maestro Notificar 
        /etc/rc.d/init.d/nginx de inicio 
        de salida 0 
    ;; 
    copia de seguridad) 
        de la copia de seguridad Notificar 
        /etc/rc.d/init.d/nginx PARADA 
        salida 0 
    ;; 
    Fallo) 
        Notify Falla 
        / etc PARADA /rc.d/init.d/nginx 
        salida 0 
    ;; 
################################### ###

guión 6,5 sincronización al nodo 2

 

[Root @ nodo1 keepalived] # scp notify.sh 172.16.6.1:/etc/keepalived/

6.6 el nodo primario

 

[Root @ nodo1 keepalived] # Touch Down 
[root @ nodo1 keepalived] #SS -tunl encontró 80 // puerto no está escuchando 
[root @ nodo1 keepalived] # rm -f Abajo 
[root @ nodo1 keepalived] #SS -tunl // 80 puerto se ha encontrado que escucha
Artículos originales publicados 0 · ganado elogios 0 · Vistas 529

Supongo que te gusta

Origin blog.csdn.net/qingdao666666/article/details/104805486
Recomendado
Clasificación