Clúster de equilibrio de carga LVS (teoría LVS-DR + implementación real)

1. El principio de funcionamiento de LVS-DR

1.1 Descripción general del modo 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.
Inserte la descripción de la imagen aquí

1.2. Analizar el flujo de paquetes LVS-DR

(1)
Para facilitar el análisis del principio, coloque el Cliente y la máquina del clúster en la misma red, la ruta del flujo del paquete de datos es 1-2-3-4
Inserte la descripción de la imagen aquí
(2) El
cliente envía una solicitud al VIP objetivo, Director (balanceador de carga) recibir. 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í
(3)
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 en la LAN enviar. La información del encabezado IP y del encabezado del marco de datos es la siguiente:
Inserte la descripción de la imagen aquí
(4)
RealServer_1 recibe este marco y encuentra que la IP de destino coincide con esta 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, el encabezado de IP y la información del encabezado de la trama de datos es:
Inserte la descripción de la imagen aquí
(5) 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
Inserte la descripción de la imagen aquí

1.3 Problemas de ARP en LVS-DR

(1)
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
Inserte la descripción de la imagen aquí

(2)
Tener la misma dirección IP en la red de área local causará inevitablemente un desorden 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 balanceador de carga y el servidor de nodo están conectados a la misma red, ambos recibirán la transmisión ARP.
En este momento, solo el balanceador de carga de front-end responde y otros servidores de nodo no. Debería responder a la transmisión ARP
Inserte la descripción de la imagen aquí

(3)
Procese el servidor de nodo para que no responda a las solicitudes de ARP para VIP

Use la interfaz virtual lo: 0 para llevar la dirección VIP.
Configure el parámetro del kernel arp_ignore = 1: el sistema solo responde a las solicitudes ARP cuya IP de destino es la IP local
Inserte la descripción de la imagen aquí

(4)
RealServe devuelve el paquete (la IP de origen es VIP) y es reenviado por el enrutador. Al volver a encapsular el paquete, primero debe obtener la dirección MAC del enrutador. Al
enviar una solicitud ARP, Linux usa la dirección IP de origen del paquete IP (a saber, VIP) como ARP por defecto. La dirección IP de origen en el paquete de solicitud en lugar de la dirección IP de la interfaz de envío (por ejemplo, ens33)
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

(5) Después de que el
enrutador reciba la solicitud ARP, actualizará la entrada de la tabla ARP

El VIP original correspondiente a la dirección MAC del Director se actualizará a la dirección MAC del ⅥP correspondiente al RealServer.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
(6)
En este momento, el enrutador reenviará el mensaje a RealServer de acuerdo con la entrada de la tabla ARP, lo que provocará que el Director Invalidación VIP
Inserte la descripción de la imagen aquí

1.4. Solución

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

2. Implementación real de LVS-DR

2.1. Entorno experimental

Software VMware
Un centos7 se utiliza como LVS y utiliza una interfaz virtual. Las direcciones IP son 192.168.100.21; 192.168.100.100

Dos centos7 como servidores Apache, las direcciones IP son 192.168.100.22; 192.168.100.23

Un centos7 se utiliza como almacenamiento NFS, la dirección IP es 192.168.100.24

Nota: puede dejar un mensaje si hay un problema con la configuración de red de la dirección IP

2.2. Propósito experimental

La máquina real visita la URL 192.168.100.100, usa el modo DR para desviar la dirección y consulta el acceso a los hosts Apache1 y Apache2.
Cree un servicio de almacenamiento de archivos de red nfs y experimente con el equilibrio de carga

2.3. Proceso experimental

2.3.1, configurar el programador de carga

2.3.1.1. Configurar la dirección IP virtual (VIP)

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vi ifcfg-ens33:0
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.255
[root@localhost network-scripts]# ifup ifcfg-ens33:0
[root@localhost network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.21  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::3069:1a3d:774b:18f  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:11:0d:16  txqueuelen 1000  (Ethernet)
        RX packets 1170  bytes 110973 (108.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 683  bytes 81523 (79.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.100  netmask 255.255.255.255  broadcast 192.168.100.100
        ether 00:0c:29:11:0d:16  txqueuelen 1000  (Ethernet)

        省略部分内容

2.3.1.2, ajustar / procesar parámetros de respuesta

Para el modo de clúster DR, dado que el planificador de carga LVS y cada nodo necesitan compartir la dirección VIP, la respuesta del parámetro de redirección del kernel de Linux debe estar desactivada. El
servidor no es un enrutador, por lo que no enviará redirecciones, por lo que esta función se puede desactivar

[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.1.3, configurar la estrategia de distribución de carga

[root@localhost ~]#yum -y install ipvsadm
[root@localhost /]# ipvsadm -v
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# cat /proc/net/ip_vs
[root@localhost ~]# ipvsadm -A -t 192.168.100.100:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.22:80 -g -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.23:80 -g -w 1
[root@localhost ~]# ipvsadm-save > /opt/ipvsadm
[root@localhost ~]# cat /opt/ipvsadm
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.100.22:http -g -w 1
-a -t localhost.localdomain:http -r 192.168.100.23:http -g -w 1

2.3.2, configurar servidor de nodo

2.3.2.1. Configuración del servidor de almacenamiento (192.168.100.24)

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.3.2.2. Configurar la dirección IP virtual (VIP) (192.168.100.22 y 192.168.100.23)

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.3.2.3, 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.3.2.4, 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.4, verificación

Ingrese 192.168.100.100 en el navegador de la máquina real y
Inserte la descripción de la imagen aquí
vuelva a ingresar. La
Inserte la descripción de la imagen aquí
verificación es exitosa.

Supongo que te gusta

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