Equilibrio de carga de clúster-LVS DR + ¡Combate de implementación de clúster vivo! ¡Teoría super detallada + experimento! ! !

Uno, comprender el principio de implementación de Keelalived

        Keepalived es una poderosa herramienta auxiliar diseñada específicamente para LVS. Se utiliza principalmente para proporcionar funciones de verificación de estado y conmutación por error: para determinar la disponibilidad del programador de carga LVS y el servidor de nodo, aislarlo y reemplazarlo con un nuevo servidor a tiempo, cuando el host fallido se recupere Luego vuelva a unirlo al grupo.

■ Una herramienta de verificación de estado especialmente diseñada para LVS y HA

  • Admite conmutación por error automática (Conmutación por error)
  • Soporte del estado de la verificación de estado del nodo (verificación de estado)
  • Sitio web oficial: http://www.keepalived.org/ (Si está interesado, puede consultarlo)

1.1, análisis de casos de Keepalived

        En las aplicaciones empresariales, un solo servidor corre el riesgo de un solo punto de falla de la aplicación. En un clúster de aplicaciones empresariales, hay al menos dos puntos únicos de riesgo de falla.
Una vez que ocurre un solo punto de falla, los servicios empresariales se interrumpirán, causando un gran daño

1.2 Descripción general del clúster de alta disponibilidad LVS + Keepalived

        El objetivo de diseño de Keepalived es construir un clúster de equilibrio de carga LVS utilizable. Puede llamar a la herramienta ipvsadm para crear servidores virtuales y administrar grupos de servidores, no solo para la copia de seguridad en caliente de sistema dual. Usar keepalived para construir un clúster LVS es más y más fácil de usar. Las principales ventajas son: realizar el cambio de espera en caliente del programador de carga LVS, mejorar la disponibilidad, realizar verificaciones de estado en los nodos en el grupo de servidores, eliminar automáticamente los nodos fallidos y volver a unirse después de la recuperación.
        En la estructura de clúster LVS implementada en base a LVS-Keepalived, incluye al menos dos programadores de carga en espera activa y dos o más servidores de nodo. En este ejemplo, basado en el clúster LVS en modo DR, se agregará un programador de carga esclavo. Utilice Keepalived para realizar la copia de seguridad en caliente de los programadores maestro y esclavo, a fin de construir una plataforma de clúster de sitios web LVS con equilibrio de carga y alta disponibilidad.
        Al usar Keepalived para construir un clúster LVS, también necesita usar la herramienta de administración ipvsadm, pero Keepalived realizará la mayor parte del trabajo automáticamente, sin la necesidad de ejecutar ipvsadm manualmente.

1.3 Análisis del principio de implementación de 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
  • Varios enrutadores forman un grupo de respaldo activo y brindan servicios al exterior a través de una dirección IP virtual compartida
  • 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.4, explicación del caso de Keepalived

■ 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.
■ Realice una copia de seguridad en caliente de sistema dual basada en el servicio WEB

                                                  【交  换  机】
                                                        ●
                                                        ●              漂移地址:192.168.100.100
                                                        ●      
               ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
               ● 		             ●                  ● 		              ●		               ●
               ●		             ●                  ● 		              ●		               ●
               ●		             ●                  ● 		              ●		               ●
           【调度器1】	         【调度器2】           【WEB1】               【WEB2】              【存储】
         192.168.100.21       192.168.100.22	  192.168.100.23       192.168.100.24        192.168.100.25 		       

1.4.1, configurar el servidor maestro keepalived

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

  • La sección global_defs {…} especifica parámetros globales
  • vrrp_instance nombre de instancia {...} sección especifica los parámetros de espera activa de VRRP
  • El texto del comentario comienza con el símbolo "!"
  • Muestras de directorio /, proporciona muchas muestras de configuración como referencia

■ Explicación de las opciones de configuración comunes

  • router_id HA_TEST_R1: el nombre del enrutador (servidor)
  • vrrp_instance VI_1: define la instancia de espera activa de VRRP
  • state MASTER: estado de espera en caliente, MASTER representa el servidor maestro
  • interfaz ens33: la interfaz física que lleva la dirección VIP
  • virtual_router_id 1: el número de identificación del enrutador virtual, que es coherente para cada grupo de espera activa
  • El número de identificación del grupo de respaldo activo, que indica si se encuentra en un grupo de respaldo activo
  • prioridad 100: prioridad, cuanto mayor es el valor, mayor es la prioridad
  • advert_int 1: la cantidad de segundos entre notificaciones (frecuencia de latidos)
  • auth_type PASS: tipo de autenticación
  • auth_pass 123456: cadena de contraseña
  • virtual_ipaddress {vip}: especifique una dirección de deriva (VIP), puede haber múltiples

1.4.2, configurar el servidor esclavo keepalived

■ La configuración del servidor de respaldo guardada y la configuración maestra tienen tres opciones

  • router_id: establecer como nombre libre
  • estado: establecido en BACKUP
  • prioridad: el valor de prioridad es menor que el del servidor primario

■ Otras opciones son las mismas que las maestras

3. Implementación de clúster de alta disponibilidad LVS + Keelalived experimental

3.1, configuración de implementación de casos

nombre sistema operativo dirección IP
LVS-Maestro Centos7.6-x86_64 192.168.100.21
Respaldo LVS Centos7.6-x86_64 192.168.100.22
WebserverA Centos7.6-x86_64 192.168.100.23
Servidor web B. Centos7.6-x86_64 192.168.100.24
Compartir NFS Centos7.6-x86_64 192.168.100.25

Aquí nuestra dirección de deriva (VIP): 192.168.100.10

En primer lugar, cuando hacemos el experimento, primero debemos apagar el firewall y la protección del núcleo de las 5 máquinas virtuales, y configurar la fuente Yum local.

3.2, configure el programador principal 192.168.100.21

  • 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  
  • Estrategia clara de distribución de carga
[root@localhost /]# ipvsadm -C
  • Ajustar los parámetros mantenidos
global_defs {
    
    
   router_id HA_TEST_R1                  ####本路由器的服务器名称  HA_TEST_R1
}
vrrp_instance VI_1 {
    
                         ####定义VRRP热备实列
   state MASTER                          ####热备状态,master表示主服务器
   interface ens33                       ####表示承载VIP地址的物理接口
   virtual_router_id 1                   ####虚拟路由器的ID号,每个热备组保持一致
   priority 100                          ####优先级,优先级越大优先级越高
   advert_int 1                          ####通告间隔秒数(心跳频率)
   authentication {
    
                          ####认证信息,每个热备组保持一致
      auth_type PASS                     ####认证类型
      auth_pass 123456                   ####认证密码
   }
   virtual_ipaddress {
    
                       ####漂移地址(VIP),可以是多个
      192.168.100.100
   }
}

virtual_server 192.168.100.100 80 {
    
            ####虚拟服务器地址(VIP)、端口
    delay_loop 15                        ####健康检查的时间间隔(秒)
    lb_algo rr                           ####轮询调度算法
    lb_kind DR                           ####直接路由(DR)群集工作模式
    persistence 60                       ####连接保持时间(秒),若启用请去掉!号
    protocol TCP                         ####应用服务采用的是TCP协议

    real_server 192.168.100.23 80 {
    
           ####第一个WEB站点的地址,端口
        weight 1                         ####节点的权重
        TCP_CHECK {
    
                          ####健康检查方式
	    connect_port 80                    ####检查端口目标
	    connect_timeout 3                  ####连接超时(秒)
	    nb_get_retry 3                     ####重试次数
	    delay_before_retry 4               ####重试间隔(秒)
	}
    }
    real_server 192.168.100.24 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                  ####启动keepalived
[root@localhost keepalived]# systemctl enable keepalived                 ####开机启动keepalived
[root@localhost keepalived]# ip addr show dev ens33                      ####查看主控制IP地址和漂移地址
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b5:da:33 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.21/24 brd 192.168.100.255 scope global noprefixroute ens33    ## IP地址
       valid_lft forever preferred_lft forever
    inet 192.168.100.100/32 scope global ens33     ## 漂移地址
       valid_lft forever preferred_lft forever
    inet6 fe80::c574:d230:3778:e9dd/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

3.3. Configurar el programador esclavo 192.168.100.22

  • 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  
  • Estrategia clara de distribución de carga
[root@localhost /]# ipvsadm -C
  • Ajustar los parámetros mantenidos
global_defs {
    
    
   router_id HA_TEST_R2                  ####本路由器的服务器名称 HA_TEST_R2
}
vrrp_instance VI_1 {
    
                         ####定义VRRP热备实列
   state BACKUP                          ####热备状态,backup表示辅服务器
   interface ens33                       ####表示承载VIP地址的物理接口
   virtual_router_id 1                   ####虚拟路由器的ID号,每个热备组保持一致
   priority 99                           ####优先级,优先级越大优先级越高,这里的优先级要比主机小!
   advert_int 1                          ####通告间隔秒数(心跳频率)
   authentication {
    
                          ####认证信息,每个热备组保持一致
      auth_type PASS                     ####认证类型
      auth_pass 123456                   ####认证密码
   }
   virtual_ipaddress {
    
                       ####漂移地址(VIP),可以是多个
      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.23 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
    real_server 192.168.100.24 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
}      

3.4. Configurar el servidor de almacenamiento: 192.168.100.25

[root@localhost ~]# rpm -q nfs-utils    ###如果没装,yum -y install nfs-utils
[root@localhost ~]# rpm -q rpcbind      ###如果没装,yum -y install rpcbind
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs

[root@localhost ~]# vi /etc/exports
/opt/Tom 192.168.100.0/24(rw,sync)
/opt/Jack 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 ~]# mkdir /opt/Tom /opt/Jack
[root@localhost ~]# echo "this is Tom" >/opt/Tom/index.html
[root@localhost ~]# echo "this is Jack" >/opt/Jack/index.html
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/opt/Jack 192.168.100.0/24
/opt/Tom  192.168.100.0/24

3.5. Configurar el servidor WEB 1: 192.168.100.23

  • Configurar la dirección IP virtual
[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]# sudo yum install net-tools   ## 最小化安装需要装这个,才可以用 ifconfig
[root@localhost network-scripts]# ifconfig
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.100.10  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.10 dev lo:0
[root@localhost network-scripts]# route add -host 192.168.100.10 dev lo:0
  • 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
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
  • Instalar la página de prueba de montaje httpd
[root@localhost network-scripts]# yum -y install nfs-utils
[root@localhost ~]# showmount -e 192.168.100.25     ####如果还没发布,请到存储服务器发布下,exportfs -rv
Export list for 192.168.100.25:
/opt/Jack 192.168.100.0/24
/opt/Tom  192.168.100.0/24

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.25:/opt/Tom /var/www/html/
[root@localhost ~]# vi /etc/fstab 
192.168.100.25:/opt/Tom /var/www/html nfs defaults,_netdev 0 0        ###开机自动挂载,注意格式对齐
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# init 6   ## 重启测试一下
[root@localhost ~]# curl 192.168.100.23
this is Tom

También puede ingresar 192.168.100.23 en el navegador para probar

Inserte la descripción de la imagen aquí

3.5. Configurar el servidor WEB 2: 192.168.100.24

  • Configurar la dirección IP virtual
[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]# sudo yum install net-tools      ## 最小化安装需要装这个,才可以用 ifconfig
[root@localhost network-scripts]# ifconfig
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.100.10  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.10 dev lo:0
[root@localhost network-scripts]# route add -host 192.168.100.10 dev lo:0
  • 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
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
  • Instalar la página de prueba de montaje httpd
[root@localhost network-scripts]# yum -y install nfs-utils
[root@localhost ~]# showmount -e 192.168.100.25     ####如果还没发布,请到存储服务器发布下,exportfs -rv
Export list for 192.168.100.25:
/opt/Jack 192.168.100.0/24
/opt/Tom  192.168.100.0/24

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.25:/opt/Jack /var/www/html/
[root@localhost ~]# vi /etc/fstab 
192.168.100.25:/opt/Jack /var/www/html nfs defaults,_netdev 0 0        ###开机自动挂载,注意格式对齐

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# init 6  ## 重启测试一下
[root@localhost ~]# curl 192.168.100.24
this is Jack

También puede ingresar 192.168.100.24 en el navegador para probar

Inserte la descripción de la imagen aquí

3.6. Pruebe si los programadores maestro y esclavo funcionan normalmente

1. La dirección MAC de la tarjeta de red ens33 del programador principal: 00: 0c: 29: b5: da: 33
2. Abra cmd en la máquina real para probar el ping 192.168.100.100
3. Arp -a encontró que la MAC en la tabla de caché es 00: 0c: 29: b5: da: 33
demuestra que se perdió la dirección MAC del paquete de datos al programador principal

Inserte la descripción de la imagen aquí
Echale un vistazo

Inserte la descripción de la imagen aquí4. Ahora cierre keepalived en el programador principal.

[root@localhost ~]# systemctl status keepalived

5. Luego ingrese ip addr show desde el programador, y la dirección de deriva ha llegado al programador esclavo En este momento, el programador esclavo se adelanta al programador maestro para que funcione.

Inserte la descripción de la imagen aquí
6. Desde la dirección MAC de la tarjeta de red ens33 del planificador: 00: 0c: 29: 53: 1f: 1a

7. Abra cmd en la máquina real para probar el ping 192.168.100.100

8. Arp -a encuentra que la MAC en la tabla de caché es 0: 0c: 29: 53: 1f: 1a, lo que muestra que cuando el programador maestro está inactivo, el programador esclavo ha reemplazado al programador maestro para el trabajo, lo que prueba que el paquete de datos va al esclavo Se pierde la dirección MAC del planificador.

Inserte la descripción de la imagen aquí
Echale un vistazo

Inserte la descripción de la imagen aquí
9. Vuelva a abrir keepalived.service

### 开启keepaliced
[root@localhost keepalived]# systemctl start keepalived.service

Inserte la descripción de la imagen aquí

3.7, ahora verifique el sondeo de equilibrio de carga

  • Ingrese 192.168.100.100 en el navegador

Ahora es "este es Jack"

Inserte la descripción de la imagen aquí

  • La próxima vez que se actualice la página, pasará a otra página, durante la cual habrá un tiempo de espera.

Ahora es "Este es Tom" y la verificación se ha realizado correctamente.

Inserte la descripción de la imagen aquí
Aquí estamos hoyClúster LVS + KeepalivedSe acabó el aprendizaje.
Los puntos clave para dominar en este capítulo son:

  1. Funciones principales de Keepalived
  2. La diferencia entre el servidor maestro Keepalived y el servidor esclavo
  3. Crear clúster de equilibrio de carga + alta disponibilidad

Supongo que te gusta

Origin blog.csdn.net/m0_46563938/article/details/108748949
Recomendado
Clasificación