LVS + Clúster de alta disponibilidad Keepalived (teoría + implementación real)

Prefacio

En esta era de TI altamente basada en información, el sistema de producción, las operaciones comerciales, las ventas y el soporte, y la administración diaria de las empresas dependen cada vez más de la información y los servicios informáticos, lo que ha aumentado enormemente la demanda de aplicaciones tecnológicas de alta disponibilidad (HA). Para proporcionar un sistema informático o servicios de red continuos e ininterrumpidos.
Use Keepalived para implementar copias de seguridad en caliente de sistema dual, incluida la conmutación por error para direcciones IP y aplicaciones de copia de seguridad en caliente en clústeres de alta disponibilidad LVS.

1. Conceptos básicos de la copia de seguridad en caliente de sistema dual Keepalived

1.1 Descripción general e instalación de Keepalived

1.1.1, método de copia de seguridad en caliente Keepalived

Keepalived adopta el protocolo de copia de seguridad en caliente VRRP para realizar la función de copia de seguridad en caliente de múltiples máquinas del servidor Linux

VRRP, protocolo de redundancia de enrutamiento virtual, es una solución de respaldo para enrutadores

Varios enrutadores forman un grupo de respaldo activo y brindan servicios al exterior a través de una dirección IP virtual compartida

Solo un enrutador principal brinda servicio al mismo tiempo en cada grupo de respaldo activo, y otros enrutadores están en estado redundante

Si el enrutador actualmente en línea falla, otros enrutadores automáticamente tomarán el control de la dirección IP virtual de acuerdo con la prioridad establecida y continuarán brindando servicios
Inserte la descripción de la imagen aquí

1.1.2, instalación mantenida y control de servicio

Al realizar la solicitud en un entorno de clúster LVS, también debe usar la herramienta de administración lipvsadm
YUM para instalar Keepalived y
habilitar el servicio Keepalived

[root@localhost ~]# yum -y install keepalived ipvsadm

1.2. Utilice Keepalived para lograr una copia de seguridad en caliente de sistema dual

Keepalived puede realizar copias de seguridad en caliente de varias máquinas, cada grupo de reserva en caliente puede tener varios servidores, el más utilizado es la copia de seguridad en caliente de dos máquinas

La conmutación por error de la copia de seguridad en caliente de sistema dual se realiza mediante la deriva de la dirección IP virtual, que es adecuada para varios servidores de aplicaciones.

Esta implementación implementará copias de seguridad en caliente de dos máquinas basadas en servicios web
Inserte la descripción de la imagen aquí

1.2.1, la configuración del servidor principal

El directorio de configuración de Keepalievd se encuentra en / etc / keepalievd /
keepalievd.conf es el archivo de configuración principal

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs{
    
    }区段指定全局参数
vrrp_instance实例名称{
    
    }区段指定VRRP热备参数
注释文字以“!”符号开头
目录samples/,提供了许多配置样例作为参考
常用配置选项
router_id HA_TEST_R1: 本路由器(服务器)的名称
vrrp_instance VI_1:定义VRRP热备实例
state MASTER:热备状态,MASTER表示主服务器
interface ens33:承载VIP地址的物理接口
virtual_router_id 1:虚拟路由器的ID号,每个热备组保持一致
priority 100:优先级,数值越大优先级越高
advert_int 1:通告间隔秒数(心跳频率)
auth_type PASS:认证类型
auth_pass 123456:密码字串
virtual_ipaddress{
    
    vip}:指定漂移地址(VIP),可以有多个,多个漂移地址以逗号分隔

Confirme que no hay ningún problema con la configuración, inicie el servicio Keepalived y podrá verlo a través del comando ip

[root@localhost keepalived]# systemctl start keepalived                  ####启动keepalived
[root@localhost keepalived]# ip addr show dev ens33                      ####查看主控制IP地址和漂移地址

1.2.2, la configuración del servidor en espera

La configuración del servidor de respaldo Keepalived es diferente de la configuración maestra en tres opciones
router_id: establecido en el
estado del nombre libre : establecido en la
prioridad de BACKUP : valor más bajo que el del servidor maestro
Otras opciones son las mismas que las del maestro

1.2.3, pruebe la función de respaldo en caliente del sistema dual

Pruebe el efecto de la copia de seguridad en caliente de sistema dual Las
máquinas principal y de copia de seguridad están habilitadas con servicios web y el contenido es el mismo.
Deshabilite y habilite la tarjeta de red del servidor principal sucesivamente y realice la siguiente prueba

Prueba 1: use ping para detectar la conectividad de 19216810.72
Prueba 2: visite http: /192168.10.72 para confirmar la disponibilidad y los cambios de contenido
Prueba 3: Verifique los cambios en el archivo de registro / var / log / messages

2. Implementación real del clúster de alta disponibilidad LVS + Keepalived

2.1. Entorno experimental


Planificación de la dirección IP del servidor VMware 5 :
Dirección de deriva (VIP): 192.168.100.100
Programador principal: 192.168.100.21
Programador secundario: 192.168.100.20
Servidor WEB 1: 192.168.100.22
Servidor WEB 2: 192.168.100.23
Servidor de almacenamiento : 192.168.100.23 100,24

2.2, configurar el programador principal

2.2.1, ajustar / proc los parámetros de respuesta

[

root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0 

2.2.2, ajustar los parámetros mantenidos

[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
    
    
   router_id HA_TEST_R1
}
vrrp_instance VI_1 {
    
    
   state MASTER
   interface ens33
   virtual_router_id 1
   priority 100
   advert_int 1
   authentication {
    
    
      auth_type PASS
      auth_pass 123456
   }
   virtual_ipaddress {
    
    
      192.168.100.100
   }
}

virtual_server 192.168.100.100 80 {
    
    
    delay_loop 15
    lb_algo rr
    lb_kind DR
    persistence 60
    protocol TCP

    real_server 192.168.100.22 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
    real_server 192.168.100.23 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
}
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:11:0d:16 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.21/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.100.100/32 brd 192.168.100.100 scope global noprefixroute ens33:0
       valid_lft forever preferred_lft forever
    inet6 fe80::3069:1a3d:774b:18f/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

2.3, configurar el programador esclavo

2.3.1, ajustar / procesar parámetros de respuesta

[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p     
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

2.3.2, ajustar los parámetros mantenidos

[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
    
    
   router_id HA_TEST_R2
}
vrrp_instance VI_1 {
    
    
   state BACKUP
   interface ens33
   virtual_router_id 1
   priority 99
   advert_int 1
   authentication {
    
    
      auth_type PASS
      auth_pass 123456
   }
   virtual_ipaddress {
    
    
      192.168.100.100
   }
}

virtual_server 192.168.100.100 80 {
    
    
    delay_loop 15
    lb_algo rr
    lb_kind DR
    persistence 60
    protocol TCP

    real_server 192.168.100.22 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
    real_server 192.168.100.23 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
}
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33 
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:48:b8:83 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.20/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::e438:b533:985e:cf94/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

2.4, configurar el servidor de almacenamiento

Primero, verifique si nfs-utils y rpcbind están instalados, si no están instalados con yum
, inicie los dos servicios después de la instalación

[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24(rw,sync)
/opt/52xit 192.168.100.0/24(rw,sync)
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# echo "this is www.51xit.top" > /opt/51xit/index.html
[root@localhost ~]# echo "this is www.52xit.top" > /opt/52xit/index.html

2.5, configurar servidor de nodo

2.5.1, configurar la dirección IP virtual (VIP)

Tanto el firewall como la protección del núcleo están apagados, verifique si nfs-utils está instalado

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
ONBOOT=yes

[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# ifconfig
        省略部分内容
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.100.100  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)
        省略部分内容
[root@localhost network-scripts]# vi /etc/rc.local 
/sbin/route add -host 192.168.100.100 dev lo:0

[root@localhost network-scripts]# route add -host 192.168.100.100 dev lo:0

2.5.2, ajustar / procesar parámetros de respuesta

[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

[root@localhost network-scripts]# sysctl -p

Los dos servidores de nodo configurados previamente son los mismos

2.5.3, instale la página de prueba de montaje httpd

Monte dos servidores de nodo por separado a continuación

[root@localhost ~]# showmount -e 192.168.100.24
Export list for 192.168.100.24:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.24:/opt/51xit /var/www/html/
[root@localhost ~]# vi /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Thu Aug  6 12:23:03 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=a1c935eb-f211-43a5-be35-2a9fef1f6a89 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/cdrom /mnt iso9660 defaults 0 0
192.168.100.24:/opt/51xit/ /var/www/html/ nfs defaults,_netdev 0 0
[root@localhost ~]# systemctl start httpd

Pruebe si el inicio de sesión es normal
Inserte la descripción de la imagen aquí

[root@localhost ~]# showmount -e 192.168.100.24
Export list for 192.168.100.24:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.24:/opt/52xit /var/www/html/
[root@localhost ~]# vi /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Thu Aug  6 12:23:03 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=a1c935eb-f211-43a5-be35-2a9fef1f6a89 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/cdrom /mnt iso9660 defaults 0 0
192.168.100.24:/opt/52xit/ /var/www/html/ nfs defaults,_netdev 0 0
[root@localhost ~]# systemctl start httpd

Pruebe si el inicio de sesión es normal
Inserte la descripción de la imagen aquí

2.6, verificación experimental

2.6.1, pruebe el programador principal

Abra la herramienta de captura de paquetes, encontrará que el programador maestro de 192.168.100.21 ha estado enviando paquetes VRRP
Inserte la descripción de la imagen aquí
. Ingrese 192.168.100.100 en el navegador de la máquina real
Inserte la descripción de la imagen aquí
y espere un minuto para actualizar o volver a ingresar al
Inserte la descripción de la imagen aquí
programador maestro. ! !

2.6.2, programador esclavo de prueba

Detener keepadlive del servidor principal

[root@localhost keepalived]# systemctl stop keepalived

Abra la herramienta de captura de paquetes, encontrará que el programador esclavo 192.168.100.20 ha estado enviando paquetes VRRP
Inserte la descripción de la imagen aquí
. Ingrese 192.168.100.100 en el navegador de la máquina real
Inserte la descripción de la imagen aquí
y espere un minuto para actualizarlo o volver a ingresar
Inserte la descripción de la imagen aquí
. ¡El programador es normal! !

Supongo que te gusta

Origin blog.csdn.net/weixin_48191211/article/details/108749220
Recomendado
Clasificación