Teoría + experimento: LVS + cluster Keepalived

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
  • La sección de nombre de instancia de vrrp_instance {...} 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

2. Implementación experimental de clústeres de alta disponibilidad LVS + Keelalived

2.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

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.

Planificación de la dirección IP:
Dirección de deriva (VIP): 192.168.100.100
Programador principal: 192.168.100.21
Programador secundario: 192.168.100.22
Servidor WEB 1: 192.168.100.23
Servidor WEB 2: 192.168.100.24
Servidor de almacenamiento: 192.168.100.25

#####配置主调度器    192.168.32.21  ####### 关闭防火墙 

【1】调整/proc响应参数
[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

【2】调整keepalived参数
[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                  ####本路由器的服务器名称  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 fifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:bb:29:cc 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 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:febb:29cc/64 scope link 
       valid_lft forever preferred_lft forever
#####配置辅调度器  192.168.100.22 ####### 关闭防火墙 

【1】调整/proc响应参数
[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

【2】调整keepalived参数
[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                  ####本路由器的服务器名称 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
	}
    }
}      
       
[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:44:0b:2a brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.22/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe44:b2a/64 scope link 
       valid_lft forever preferred_lft forever   
#####配置存储服务器:192.168.100.25#####

rpm -q nfs-utils    ###如果没装,yum -y install nfs-utils
rpm -q rpcbind      ###如果没装,yum -y install rpcbind

[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 ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# echo "this is 51xit" >/opt/51xit/index.html
[root@localhost ~]# echo "this is 52xit" >/opt/52xit/index.html


[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl enable nfs
#####配置节点服务器:192.168.100.23####

[root@localhost ~]# yum -y install httpd   ###安装Apache
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# yum -y install nfs-utils   ###安装nfs
[root@localhost ~]# mount 192.168.100.25:/opt/51xit /var/www/html/  ###临时挂载
###测试:浏览器输入192.168.100.23就能看见51网页###

[root@localhost ~]# vi /etc/fstab 
192.168.100.25:/opt/51xit /var/www/html nfs defaults,_netdev 0 0   ###永久挂载

【1】配置虚拟IP地址
[root@localhost ~]# cd /etc/sysconfig/network-scripts/   ###进入网卡目录
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0   ###复制一个网卡,命名为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   ###查看一下

【2】调整/proc响应参数
[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
[root@localhost network-scripts]# route add -host 192.168.100.10 dev lo:0  ###手工配置一条路由
[root@localhost network-scripts]# vi /etc/rc.local 
/sbin/route add -host 192.168.100.100 dev lo:0
#####配置节点服务器:192.168.100.24####

[root@localhost ~]# yum -y install httpd   ###安装Apache
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# yum -y install nfs-utils   ###安装nfs
[root@localhost ~]# mount 192.168.100.25:/opt/52xit /var/www/html/  ###临时挂载
###测试:浏览器输入192.168.100.24就能看见52网页###

[root@localhost ~]# vi /etc/fstab 
192.168.100.25:/opt/52xit /var/www/html nfs defaults,_netdev 0 0   ###永久挂载

【1】配置虚拟IP地址
[root@localhost ~]# cd /etc/sysconfig/network-scripts/   ###进入网卡目录
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0   ###复制一个网卡,命名为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   ###查看一下

【2】调整/proc响应参数
[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
[root@localhost network-scripts]# route add -host 192.168.100.10 dev lo:0  ###手工配置一条路由

Prueba: Ingrese 192.168.100.100 en el navegador, y aparecerá uno de los sitios web, y el otro sitio web aparecerá después de actualizar después de un tiempo, y el equilibrio de carga LVS + Keepalived estará listo.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44733021/article/details/108764266
Recomendado
Clasificación