Teoría + experimento: cómo construir un clúster de equilibrio de carga LVS-DR

teoría:

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, y 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 de destino, Director (balanceador de carga) recibir. El encabezado P y la información del encabezado de la trama de datos son:
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 de la trama de datos a la dirección MAC de RealServer_1 y luego la envía a la LAN. El encabezado IP y la información 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 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, 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 ha recibido un servicio normal, pero no sabrá qué servidor lo está procesando.
Nota: Si cruza el segmento de red, el mensaje se devolverá al usuario a través del enrutador vía 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, tanto el equilibrador de carga como el servidor de nodos deben configurarse con la misma dirección VIP
Inserte la descripción de la imagen aquí
(2) El servidor de nodos se procesa para que no responda a las solicitudes de 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 las solicitudes ARP cuya IP de destino es la IP local

Inserte la descripción de la imagen aquí
(3)

  • Los paquetes de retorno de RealServe (la IP de origen es VIP) son reenviados por el enrutador, y la dirección MAC del enrutador debe obtenerse primero al volver a encapsular el paquete.
  • Al enviar una solicitud ARP, Linux usa la dirección IP de origen del paquete IP (es decir, VIP) como la dirección IP de origen en el paquete de solicitud ARP de forma predeterminada, en lugar de usar la dirección IP de la interfaz de envío,
    como: ens33Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí
(4)

  • Una vez que el enrutador recibe la solicitud ARP, actualizará la entrada de la tabla ARP
  • El VIP original correspondiente a la dirección MAC del Director se actualizará al ⅥP correspondiente a la dirección MAC del RealServer
    Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí
(5) Problema

  • De acuerdo con la entrada de la tabla ARP, el enrutador reenvía el nuevo mensaje de solicitud a RealServer, lo que hace que el VIP del Director deje de ser válido
    Inserte la descripción de la imagen aquí
  • Para procesar el servidor de contactos, configure el parámetro del kernel arp_announce = 2: el sistema no usa la dirección de origen del paquete IP para establecer la dirección de origen de la solicitud ARP, sino que selecciona la dirección IP de la interfaz de envío

Inserte la descripción de la imagen aquí

1.4 Cómo resolver los dos problemas de ARP

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

experimentar:

1. Preparación del experimento

Un programador: VM1: 192.168.100: 21
Dos grupos de clústeres de servidores WEB: 192.168.100.22, 192.168.100.23
Un servidor compartido NFS: 192.168.100.24

Segundo, los pasos

2.1 Configuración del programador (192.168.100.21)

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

Inserte la descripción de la imagen aquí

2.1.2 Parámetros de respuesta de ajuste / proc

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.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
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
[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.42:80 -g -w 1
[root@localhost ~]#ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.43:80 -g -w 1
[root@localhost network-scripts]# ipvsadm-save > /opt/ipvsadm
[root@localhost network-scripts]# 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.2 Configurar el servidor de almacenamiento (192.168.100.24)

rpm -q nfs-utils    ###如果没装,yum -y install nfs-utils
rpm -q rpcbind      ###如果没装,yum -y install rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24 (rw,sync)
/opt/52xit 192.168.100.0/24 (rw,sync)
'###重启需要想开启rpcbind###'
[root@localhost ~]# systemctl restart rpcbind            
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
[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

2.3 Configurar el servidor del nodo 1 (192.168.100.22)

2.3.1 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.10
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# ifconfig

Inserte la descripción de la imagen aquí

'###添加VIP本地访问路由###'
[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

2.3.2 Parámetros de respuesta de ajuste / 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

2.3.3 Instalar la página de prueba de montaje httpd

[root@localhost ~]# showmount -e 192.168.100.44     ####如果还没发布,请到存储服务器发布下,exportfs -rv
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.44:/opt/51xit /var/www/html/
[root@localhost ~]# vi /etc/fstab 
192.168.100.44:/opt/51xit/ /var/www/html/ nfs defaults,_netdev 0 0       ###开机自动挂载,注意格式对齐
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

2.4 Configurar el servidor del nodo 2 (192.168.100.23)

Para la configuración de 192.168.100.22, consulte 2.3

2.5 Prueba

Ingrese a la siguiente página:
192.168.100.22
Inserte la descripción de la imagen aquí
página, ingrese lo siguiente:
192.168.100.23
Inserte la descripción de la imagen aquí
página ingrese lo siguiente:
192.168.100.100
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/ZG_66/article/details/108736140
Recomendado
Clasificación