Teoría + experimento: construcción de equilibrio de carga de clúster-implementación de clúster LVS-DR

1. Comprender el principio de funcionamiento de LVS-DR

1.1 Descripción general del modo DR

■ Modo de trabajo del clúster de equilibrio de carga: enrutamiento directo

  • Conocido 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

  • 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 de paquetes de datos es 1-2-3-4

Inserte la descripción de la imagen aquí

  • El cliente envía una solicitud a la VIP de destino y el Director (equilibrador de carga) la recibe. 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í

  • 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. La información del encabezado IP y del encabezado del marco de datos es la siguiente

Inserte la descripción de la imagen aquí

  • 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 de antemano), por lo que procesa el 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í

  • 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

1.3, problemas de ARP en LVS-DR

  • 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í

■ Tener la misma dirección IP en la red de área local causará inevitablemente el desorden de 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 nodo están conectados a la misma red, ambos recibirán la transmisión ARP
  • En este momento, solo responde el equilibrador de carga de front-end y otros servidores de nodos no deberían responder a las difusiones ARP

■ Procesar el servidor de nodo 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

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

  • Al enviar una solicitud ARP, Linux utiliza por defecto 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 en lugar de la dirección IP de la interfaz de envío (como ens33)
    Inserte la descripción de la imagen aquí
  • 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í

  • En este momento, el nuevo mensaje de solicitud, el enrutador reenviará el mensaje a RealServer de acuerdo con la entrada de la tabla ARP, lo que hará que el VIP del Director falle.
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
  • Solución
    Procese el servidor de nodo y establezca 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

1.4. Métodos para resolver los dos problemas ARP anteriores

■ Modificar el archivo /etc/sysctl.conf

  • Procese el servidor de nodo para 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 utiliza la dirección de origen del paquete IP para establecer la dirección de origen de la solicitud ARP, pero selecciona 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 experimental de LVS-DR

2.1. Despliegue ambiental

planificador VM1: 192.168.100.21 ens3: 0: 192.168.100.10
Grupo de clústeres de servidores WEB1 VM1: 192.168.100.22 lo:0:192.168.100.10
Grupo de clústeres de servidores WEB2 VM1: 192.168.100.23 lo:0:192.168.100.10
Servidor compartido NFS VM1: 192.168.100.24

2.2, configuración de la máquina virtual

2.2.1, configuración del programador

  • 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.10
NETMASK=255.255.255.255
[root@localhost network-scripts]# ifup ifcfg-ens33:0
[root@localhost network-scripts]# ifconfig               ## 如果-bash: ifconfig: command not found报错,安装 sudo yum install net-tools,按提示输入y,就可以了
  • Ajuste de los parámetros de respuesta / proc Para el modo de clúster DR, dado que el planificador de carga LVS y cada nodo necesitan compartir la dirección VIP, los parámetros de redirección del kernel de Linux deben desactivarse. El
    servidor de respuesta no es un enrutador, por lo que no enviará redirecciones, por lo que puede Desactiva esta función
[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
  • Configurar la estrategia de distribución de carga
[root@localhost /]# ipvsadm -v
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# cat /proc/net/ip_vs
[root@localhost ~]#yum -y install ipvsadm
[root@localhost ~]#ipvsadm -A -t 192.168.100.10:80 -s rr
[root@localhost ~]#ipvsadm -a -t 192.168.100.10:80 -r 192.168.100.22:80 -g -w 1
[root@localhost ~]#ipvsadm -a -t 192.168.100.10:80 -r 192.168.100.23:80 -g -w 1

[root@localhost network-scripts]# ipvsadm-save
[root@localhost network-scripts]# systemctl enable ipvsadm

2.2.2, servidor de almacenamiento

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)

[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl restart rpcbind
[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.2.3, servidor WEB1

  • 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         ## 如果-bash: ifconfig: command not found报错,安装 sudo yum install net-tools,按提示输入y,就可以了

[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 ~]# yum -y install nfs-utils
[root@localhost ~]# showmount -e 192.168.100.24     ####如果还没发布,请到存储服务器发布下,exportfs -rv
Export list for 192.168.100.24:
/opt/51xit  (everyone)
/opt/52xit (everyone)

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.24:/opt/51xit /var/www/html/
[root@localhost ~]# vi /etc/fstab 
192.168.100.44:/opt/51xit/ /var/www/html/        nfs     rw,tcp,intr     0 1        ###开机自动挂载,注意格式对齐

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
  • Inicie sesión en 192.168.100.22 para comprobar si el sitio web es normal

Inserte la descripción de la imagen aquí

2.2.4, servidor WEB2

  • 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         ## 如果-bash: ifconfig: command not found报错,安装 sudo yum install net-tools,按提示输入y,就可以了

[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 ~]# yum -y install nfs-utils
[root@localhost ~]# showmount -e 192.168.100.24     ####如果还没发布,请到存储服务器发布下,exportfs -rv
Export list for 192.168.100.24:
/opt/accp  (everyone)
/opt/bdqn (everyone)

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.24:/opt/52xit /var/www/html/
[root@localhost ~]# vi /etc/fstab 
192.168.100.24:/opt/52xit/ /var/www/html/        nfs     rw,tcp,intr     0 1        ###开机自动挂载,注意格式对齐

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
  • Inicie sesión en 192.168.100.23 para probar si el sitio web es normal

Inserte la descripción de la imagen aquí

  • Ingrese 192.168.100.10 en el navegador para verificar que el
    sondeo sea exitoso
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

Supongo que te gusta

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