Implementación de clúster LVS-DR

1. Breve descripción del modo LVS-DR

1. El principio de funcionamiento del modo LVS-DR

  • Los datos del cliente al servidor en modo DR pasan primero por el planificador y luego fluyen a cada nodo web;
  • Los datos del nodo Web al cliente pasan por el enrutador, no por el programador;

2. Análisis de flujo de paquetes de datos LVS-DR

Inserte la descripción de la imagen aquí

  • 1. El cliente envía una solicitud al VIP de destino y el Director (equilibrador de carga) recibe
  • 2. Director selecciona RealServer_1 de acuerdo con el algoritmo de equilibrio de carga, no modifica ni encapsula el mensaje P, 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
  • 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 el mensaje, luego vuelve a encapsular el mensaje y lo envía a la LAN
  • 4. El Cliente recibirá el mensaje de respuesta y el Cliente cree que ha recibido un servicio normal, pero no sabrá qué servidor lo procesó.
    Nota: Si se encuentra a través de segmentos de red, el mensaje se devolverá al usuario a través del enrutador a través de Internet.

3. Problema de ARP en LVS-DR

1. Problema

  • Tener la misma dirección IP en la red de área local causará inevitablemente un desorden en la comunicación ARP entre los servidores.
  • Cuando la transmisión ARP se envía 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.

1.1 Cómo solucionar el problema

Solo responde el equilibrador de carga de front-end y otros servidores de nodo no deberían responder a las difusiones ARP.

1.2 Solución

  • Procese el servidor de nodo para que no responda a las solicitudes ARP de VIP (dirección virtual)
  • Utilice la interfaz virtual lo: 0 para transportar direcciones VIP (dirección virtual)
  • 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

2. Nuevos problemas

  • El enrutador reenvía el mensaje devuelto por el servidor de nodo. Al volver a encapsular el mensaje, primero se debe obtener la dirección MAC del enrutador
  • Al enviar una solicitud ARP, Linux usa la dirección IP de origen del paquete IP (es decir, IP virtual) 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.
  • Después de que el enrutador reciba la solicitud ARP, actualizará la entrada de la tabla ARP y la dirección MAC del balanceador de carga correspondiente a la IP virtual original se actualizará a la dirección MAC del servidor de nodo correspondiente a la IP virtual.
  • De acuerdo con la entrada de la tabla ARP, el enrutador enviará el nuevo mensaje de solicitud al servidor del nodo, lo que provocará que falle la IP virtual del equilibrador de carga

2.1 Solución

Configure el servidor de nodo, configure el parámetro del kernel arp_announce = 2, el sistema no usa la dirección de origen del paquete IP para configurar la dirección de origen de la solicitud ARP, pero selecciona la dirección IP de la interfaz de envío

2. Proceso de implementación de LVS-DR

1. Arquitectura de configuración básica del equipo

调度服务器一台:lvs
ip:192.168.1.10(内网)
    192.168.2.10(外网)
        
Web服务器两台:
ip:192.168.1.11(第1台)
ip:192.168.1.12(第2台)

NFS共享服务器:
ip:192.168.1.13

客户端一台:用于测试验证
ip:192.168.2.14(外网)

2. Proceso de operación

1. Compruebe si el software está instalado en el servidor de almacenamiento nfs.

[root@nfs ~]# rpm -qa | grep nfs
[root@nfs ~]# rpm -qa | grep rpcbind

Inserte la descripción de la imagen aquí
2. Configurar directorios compartidos y crear páginas web

[root@nfs ~]# mkdir /web1
[root@nfs ~]# mkdir /web2
[root@nfs ~]# echo "<h1>This is Web1</h1>" > /web1/index.html
[root@nfs ~]# echo "<h1>This is Web2</h1>" > /web2/index.html

3. Editar configuración

[root@nfs ~]# vi /etc/exports

添加:
目录     共享对象       权限
/web1 192.168.1.11/32(ro)
/web2 192.168.1.12/32(ro)

5. Inicio del servicio

[root@nfs ~]# systemctl start nfs  #开启服务允许nginx客户机访问共享,网络文件xt
[root@nfs ~]# systemctl start rpcbind  #开启跨平台,端口管理服务
[root@nfs ~]# showmount -e   #查看共享情况
Export list for nfs:
/web2 (everyone)
/web1 (everyone)
注:允许给所有用户共享


1. Instale el software httpd en web1 y web2

[root@web1 ~]#yum -y  install   httpd
[root@web2 ~]#yum -y  install   httpd

2. Monte en
web1 en el servidor de almacenamiento.

[root@web1 ~]# mount 192.168.1.13:/web1 /var/www/html/
[root@web1 ~]# df -Th
[root@web1 ~]# systemctl start httpd  使两个节点网页启动
[root@web1 ~]# curl http://localhost    测试自己的网页

Inserte la descripción de la imagen aquí

web2

[root@web2 ~]# mount 192.168.1.13:/web2 /var/www/html/
[root@web2 ~]# df -Th
[root@web2 ~]# systemctl start httpd  使两个节点网页启动
[root@web2 ~]# curl http://localhost    测试自己的网页

Inserte la descripción de la imagen aquí

3. Edite el script de dirección de la interfaz virtual de configuración
en web1

[root@web1 ~]# vi web1.sh
[root@web1 ~]# chmod +x web1.sh 
[root@web1 ~]# ./web1.sh 
[root@web1 ~]# ifconfig    #查看虚拟接口
[root@web1 ~]# route -n     #查看增加的路由

生成虚拟接口,地址与ens33在同一网段
添加:
#!/bin/bash
# lvs web1        
ifconfig lo:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255 up 
route add -host 192.168.1.200 dev lo:0      #针对lo:0x虚拟接口生成一个路由
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null    #配置生效并在屏幕中不显示输出

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

web2 igual que arriba

[root@web2 ~]# vi web2.sh
[root@web2 ~]# chmod +x web2.sh 
[root@web2 ~]# ./web2.sh 
[root@web2 ~]# ifconfig    #查看虚拟接口
[root@web2 ~]# route -n     #查看增加的路由

生成虚拟接口,地址与ens33在同一网段
添加:
#!/bin/bash
# lvs web1        
ifconfig lo:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255 up 
route add -host 192.168.1.200 dev lo:0      #针对lo:0x虚拟接口生成一个路由
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null    #配置生效并在屏幕中不显示输出

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

1. Determine el soporte del kernel para LVS en el programador lvs

[root@lvs ~]# modprobe ip_vs        #手动加载,对ip_vs的探测加载
[root@lvs ~]# 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@lvs ~]# yum -y install ipvsadm

2. Guión de ubicación

[root@lvs ~]# vi lvs.sh
[root@lvs ~]# chmod  +x  lvs.sh
[root@lvs ~]# ./lvs.sh
[root@lvs ~]# systemctl stop firewalld
[root@lvs ~]# setenforce 0

添加:
#!/bin/bash
# lvs
ifconfig ens33:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255 up
添加虚拟地址的虚接口
route add -host 192.168.1.200 dev ens33:0    添加路由
ipvsadm -C   清除内核虚拟服务器表中的所有记录
ipvsadm -A -t 192.168.1.200:80 -s rr   创建虚拟服务器
ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.11:80 -g  (-g:DR模式)地址捆绑虚拟地址
ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.12:80 -g
ipvsadm -Ln   查看节点状态,加个“-n”将以数字形式显示地址,端口信息

Inserte la descripción de la imagen aquí

Prueba
192.168.1.200
Inserte la descripción de la imagen aquí
3. Verifique la situación de programación

[root@lvs ~]# ipvsadm -Lnc

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/F2001523/article/details/110943700
Recomendado
Clasificación