Equilibrio de carga LVS de alta disponibilidad DR DR + principio y experimento de mantenimiento

LVS-DR

Modo de trabajo del clúster de equilibrio de carga: el enrutamiento directo se
conoce como modo DR. Adopta una estructura de red semiabierta, que es similar a la estructura del modo TUN, pero los nodos no están dispersos por todas partes, sino que están ubicados en la misma red física que el programador.
El programador de carga está conectado a cada servidor de nodo a través de la red local, sin la necesidad de establecer un túnel IP dedicado.

El diagrama de flujo de datos LVS-DR
es robado ... lo admito
Inserte la descripción de la imagen aquí

1. El Cliente envía una solicitud al VIP de destino y el Director (balanceador de carga) la recibe. En este momento, el encabezado IP y la información del encabezado del marco de datos es:
Inserte la descripción de la imagen aquí2. Director selecciona Realserver_1 de acuerdo con el algoritmo de equilibrio de carga, no modifica ni encapsula el mensaje IP, pero cambia la dirección MAC del marco de datos a la dirección MAC de RealServer_1 y luego lo envía a la LAN . La información del encabezado IP y del encabezado del marco de datos es la siguiente:
Inserte la descripción de la imagen aquí3. RealServer_1 recibe este marco y encuentra que la IP de destino coincide con la máquina después de la desencapsulación (RealServer está vinculado a VIP por adelantado), por lo que procesa este mensaje. Luego, vuelva a encapsular el mensaje y envíelo a la LAN. En este momento, la información del encabezado IP y del encabezado del marco de datos es:

Inserte la descripción de la imagen aquí4. El Cliente recibirá el mensaje de respuesta. El cliente cree que está recibiendo un servicio normal, pero no sabe qué servidor lo maneja

Nota: si cruza el segmento de red, el mensaje se devolverá al usuario a través del enrutador a través de terne

Posibles problemas

En el clúster de equilibrio de carga LVS-DR, el equilibrador de carga y el servidor de nodo deben configurarse con la misma dirección VIP
. Tener la misma dirección IP en la red de área local provocará perturbaciones en la comunicación ARP de cada servidor.
Cuando se envía una transmisión ARP al clúster LVS-DR , Debido a que el equilibrador de carga y el servidor de nodos están conectados a la misma red, ambos recibirán la transmisión de ARP.
En este momento, solo el equilibrador de carga de front-end responde y otros servidores de nodos no deben responder a la transmisión de ARP
para procesar el servidor de nodos. No responde a solicitudes ARP para VIP.
Utilice la interfaz virtual lo: 0 para llevar la dirección VIP.
Establezca el parámetro del kernel arp_ignore = 1: El sistema solo responde a solicitudes ARP cuya IP de destino es la IP local.
RealServe devuelve paquetes (la IP de origen es VIP) y los reenvía el enrutador. La dirección MAC del enrutador debe obtenerse primero al volver a encapsular el mensaje

Solución al problema ARP anterior

Modifique el archivo /etc/sysctl.conf
para procesar el servidor de nodo de modo que no responda a las solicitudes de ARP para VIP
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2 El
sistema no usa paquetes IP Para configurar la dirección de origen de la solicitud ARP, seleccione la dirección IP de la interfaz de envío
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

mantener vivo

Descripción general de las herramientas de mantenimiento

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)
Admite verificación de estado del nodo (verificación de estado)
sitio web oficial http://www.keepalived.org

Análisis de principios

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 copia de seguridad para enrutadores.
Inserte la descripción de la imagen aquíMúltiples enrutadores forman un grupo de copia de seguridad en caliente, que se proporciona a través de una dirección IP virtual compartida. Servicio
Solo un enrutador principal en cada grupo de espera activa brinda servicio al mismo tiempo, y otros enrutadores están en un estado redundante.
Si el enrutador actualmente en línea falla, otros enrutadores tomarán automáticamente la dirección IP virtual de acuerdo con la prioridad establecida y continuarán brindando servicios

Descripción de la implementación de Keepalievd

Keepalived puede realizar copias de seguridad en caliente de varias máquinas. Cada grupo de espera en caliente puede tener varios servidores. El más utilizado es
el modo de espera en caliente de máquina dual. La conmutación por error de la espera en caliente de máquina dual se realiza mediante la deriva de la dirección IP virtual, que es adecuada para varios servidores de aplicaciones.

Descripción de la instalación de Keepalievd

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

Configuración común

El directorio de configuración de Keepalievd se encuentra en / etc / keepalievd /
keepalievd.conf es el archivo de configuración principal. La
sección global_defs {...} especifica el parámetro global
vrrp_instance nombre de instancia {...} La sección especifica los parámetros de espera activa de VRRP. El
texto del comentario comienza con el símbolo "!". El
directorio samples /, Se proporcionan muchos ejemplos de configuración como referencia

Opciones de configuración comunes

router_id HA_TEST_R1: el nombre del enrutador (servidor)
vrrp_instance VI_1: define el
estado de la instancia de espera activa de VRRP MASTER: estado de espera
activa , MASTER representa la interfaz del servidor maestro ens33: la interfaz física que lleva la dirección VIP
virtual_router_id 1: el número de identificación del enrutador virtual, cada una Mantenga el grupo de respaldo con la misma
prioridad 100: prioridad, cuanto mayor sea el valor, mayor
será la prioridad advert_int 1: el número de segundos entre notificaciones (frecuencia de latido)
auth_type PASS: tipo de autenticación
auth_pass 123456: contraseña string
virtual_ipaddress {vip}: especifique la dirección de deriva (VIP) , Puede haber varias, varias direcciones de deriva están separadas por comas

Configuración del servidor esclavo

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

LCS-DR! ¡¡¡Vamos !! Show !!!

Descripción del experimento

¡O usa Apache para mostrarlo habitualmente!
Inserte la descripción de la imagen aquíLVS01: 192.168.10.20
LVS02: 192.168.10.21
WebServer01: 192.168.10.30
WebServer02: 192.168.10.31
IP virtual (Vip): 192.168.10.10

Propósito

El cliente puede acceder con éxito a la página web accediendo a la dirección IP variable del programador lvs

¡Empiece a mostrar!

Configurar LVS

Ambos LVS deben instalarse con ipvsadm (instalé keepalived aquí para hacer una copia de seguridad en caliente de sistema dual)

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

Dos LVS cambian los archivos de configuración, desactivan el reenvío y la redirección de enrutamiento

[root@lvs01 ~]# vim /etc/sysctl.conf
##末行插入如下配置
##开启ipv4地址转发
net.ipv4.ip_forward = 1
##关闭ipv4全部重定向
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
##重载配置,使配置生效
[root@lvs01 ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

Ambos LVS crean un script de servicio y lo ponen en init.d para facilitar el uso del servicio

[root@lvs01 /]# vim /etc/init.d/DR.sh
#!/bin/bash
GW=192.168.10.1
VIP=192.168.10.10   ##虚拟ip
RIP1=192.168.10.30 ##真实web服务器ip
RIP2=192.168.10.31
case "$1" in
start)
                /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm  ##保存配置
                systemctl start ipvsadm  ##启动服务
                /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up  
##设置ens33:0地址,广播地址,子网掩码,并开启
                /sbin/route add -host $VIP dev ens33:0  ##添加路由网段信息
                /sbin/ipvsadm -A -t $VIP:80 -s rr ##指定虚拟服务访问入口,指定轮询算法
                /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g ##指定真实服务器,dr模式
                /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
                echo "ipvsadm starting --------------------[ok]"
                ;;
stop)
                /sbin/ipvsadm -C   ##清空缓存
                systemctl stop ipvsadm  ##关闭服务
                ifconfig ens33:0 down  ##关闭接口
                route del $VIP   ##删除路由信息
                echo "ipvsamd stoped----------------------[ok]"
                 ;;
status)
                if [ ! -e /var/lock/subsys/ipvsadm ];then  ##判断文件存在与否决定状态
                echo "ipvsadm stoped---------------"
                exit 1
                                else
                                echo "ipvsamd Runing ---------[ok]"
                fi
                ;;
*)
                echo "Usage: $0 {start|stop|status}"
                exit 1
esac
exit 0
[root@lvs01 /]# chmod +x /etc/init.d/DR.sh 

Configuración de la máquina virtual, coloque ambos LVS en el segmento LAN 1.
Inserte la descripción de la imagen aquíDebido a que el comando en el shell es configurar una dirección IP temporal, cámbiela nuevamente en el archivo de configuración

[root@lvs01 /]# cd /etc/sysconfig/network-scripts/
[root@lvs01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0
[root@lvs01 network-scripts]# vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.10
NETMASK=255.255.255.0
[root@lvs01 network-scripts]# vim ifcfg-ens33
BOOTPROTO=static
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.10.20  ##LVS02改成192.168.10.21
PREFIX=24
GATEWAY=192.168.10.1

Ambos reinician el servicio e inician la tarjeta de red virtual y el script de shell

[root@lvs01 network-scripts]# systemctl restart network
[root@lvs01 network-scripts]# ifup ens33:0
[root@lvs01 network-scripts]# service DR.sh start
ipvsadm starting --------------------[ok]
[root@lvs01 network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.20  netmask 255.255.255.0  broadcast 192.168.10.255
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.10  netmask 255.255.255.255  broadcast 192.168.100.10
        ether 00:0c:29:43:a9:53  txqueuelen 1000  (Ethernet)
[root@lvs01 network-scripts]# systemctl stop firewalld
[root@lvs01 network-scripts]# setenforce 0

Configurar servidor WEB

Instale HTTPD en dos

[root@web01 /]# yum -y install httpd

Cambie el modo de red de web01 y 02 a la sección LAN 1.
Inserte la descripción de la imagen aquí
Cambie la IP y configure lo: 0


[root@web01 network-scripts]# cp -p ifcfg-lo ifcfg-lo:0
[root@web01 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.10.10
NETMASK=255.255.255.0
ONBOOT=yes

[root@web01 network-scripts]# vim ifcfg-ens33 
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.10.30  ##web02配置成 192.168.10.31
PREFIX=24
GATEWAY=192.168.10.1
[root@web01 network-scripts]# systemctl restart network
[root@web01 network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.30  netmask 255.255.255.0  broadcast 192.168.10.255
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.10.10  netmask 255.255.255.0
        loop  txqueuelen 1000  (Local Loopback)

Configurar el script de supresión de arp

[root@web01 network-scripts]# vim /etc/init.d/apa.sh
VIP=192.168.10.10
                case "$1" in
                start)
                                ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
                                /sbin/route add -host $VIP dev lo:0
                                echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore   '//arp忽略'
                                echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
                                echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
                                echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
                                sysctl -p >/dev/null 2>&1
                                echo "RealServer Start OK "
                                ;;
                stop)
                                ifconfig lo:0 down
                                route del $VIP /dev/null 2>&1
                                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore '//arp开启'
                                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
                                echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
                                echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
                                echo "RealServer Stopd"
                                ;;
                *)
                                echo "Usage: $0 {start|stop}"
                                exit 1
                esac
                exit 0
[root@web01 network-scripts]# chmod +x /etc/init.d/apa.sh 

Configurar la página principal para los dos servicios web

[root@web01 html]# echo "<h1>This is Web01 Server.</h1>" > index.html
[root@web01 html]# ls
index.html
[root@web02 html]# echo "<h1>This is Web02 Server.</h1>" > index.html
[root@web02 html]# ls
index.html

Abra y reinicie cada servicio

[root@web01 html]# ifup lo:0
[root@web01 html]# service apa.sh start
RealServer Start OK 
[root@web01 html]# systemctl stop firewalld
[root@web01 html]# setenforce 0

Experimento de verificación

Visite la IP flotante, visite con éxito la página web y confirme que el modo de sondeo está activado
Inserte la descripción de la imagen aquí

¡Keepalievd! ¡Vamos! ¡Muéstramelo de nuevo!

El entorno experimental se basa en la implementación de DR anterior

¡Empiece a mostrar!

Configurar dos LVS

[root@lvs01 network-scripts]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
    
    
   notification_email {
    
    
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1  ##指向自身环回口IP
   smtp_connect_timeout 30
   router_id LVS01  ##两台LVS的id 不能相同,另一台配 LVS02
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}  

vrrp_instance VI_1 {
    
    
    state MASTER
    interface ens33  ##根据自己的网卡设置
    virtual_router_id 10  ##两个虚拟号需要相同
    priority 100  ##优先级,越大越优先,所以 02 的优先级可以配90
    advert_int 1
    authentication {
    
    
        auth_type PASS
        auth_pass 1111   ##上面一行和这一行最好不要改,如果改了也要相同
    }
    virtual_ipaddress {
    
    
        192.168.10.10
    }   
    }       
        
virtual_server 192.168.10.10 80 {
    
      ##改成浮动VIP  端口80 指向http服务
    delay_loop 6
    lb_algo rr  ##轮询
    lb_kind DR  ##DR模式
    persistence_timeout 50
    protocol TCP
        real_server 192.168.10.30 80 {
    
      ##指向 web01 端口80
        weight 1  ##向下删除原来大概9行
            TCP_CHECK{
    
      添加如下
            connect_port 80  ##添加连接端口
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }   
    }
##删了下面的全部,然后复制上面的 real_server 段
real_server 192.168.10.31 80 {
    
    
        weight 1
            TCP_CHECK{
    
    
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }   
    }  
}

Para la conveniencia de copiar, coloco el archivo de configuración de web02 abajo

! Configuration File for keepalived

global_defs {
    
    
   notification_email {
    
    
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS02
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}  

vrrp_instance VI_1 {
    
    
    state BACKUP
    interface ens33
    virtual_router_id 10
    priority 90
    advert_int 1
    authentication {
    
    
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    
    
        192.168.10.10
    }   
    }       
        
virtual_server 192.168.10.10 80 {
    
    
    delay_loop 6
    lb_algo rr 
    lb_kind DR 
    persistence_timeout 50
    protocol TCP
        real_server 192.168.10.30 80 {
    
    
        weight 1 
            TCP_CHECK{
    
      添加如下
            connect_port 80 
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }   
    }
real_server 192.168.10.31 80 {
    
    
        weight 1
            TCP_CHECK{
    
    
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }   
    }  
}

Servicio abierto

[root@lvs01 network-scripts]# systemctl start keepalived
[root@lvs01 network-scripts]# systemctl restart keepalived
[root@lvs01 network-scripts]# systemctl restart network

Experimento de verificación

Visite la página web para
Inserte la descripción de la imagen aquícerrar LVS01

[root@lvs01 network-scripts]# systemctl stop network

Visite nuevamente.
Inserte la descripción de la imagen aquí
La programación del servidor se realizó correctamente y el experimento se completó

Supongo que te gusta

Origin blog.csdn.net/Ora_G/article/details/108348053
Recomendado
Clasificación