Clúster de equilibrio de carga LVS en modo DR (imágenes y textos detallados)

Clúster de equilibrio de carga LVS en modo DR (imágenes y textos detallados)

1. El principio de funcionamiento de LVS-DR

1. Según el análisis de flujo de paquetes

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í

1) El Cliente envía una solicitud al VIP de destino y el Director (equilibrador de carga) la recibe. En este momento, la dirección MAC de origen es la dirección MAC del cliente, la dirección MAC de destino es la dirección MAC del Director del planificador, la IP de origen es la IP del cliente y la IP de destino es la VIP.

2) El 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. En este momento, la dirección MAC de origen es la dirección MAC del Director, la dirección MAC de destino es la dirección MAC de RealServer_1, la IP de origen es la IP del cliente y la IP de destino es la VIP.

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 de antemano), por lo que procesa este mensaje. Luego, vuelva a encapsular el mensaje y envíe el mensaje de respuesta a la tarjeta de red física a través de la interfaz lo y luego envíelo. En este momento, la dirección MAC de origen es la dirección MAC de RealServer_1 y la dirección MAC de destino es la dirección MAC del cliente. La IP de origen es VIP y la IP de destino es la IP del cliente.

4) Transmita el mensaje de respuesta al cliente a través del conmutador y el enrutador. El cliente recibe el mensaje de respuesta y obtiene el servicio deseado, pero no sabe qué servidor lo procesó.

2. Características del modo DR

  • Director Server y Real Server deben estar en la misma red física.
  • Real Server puede utilizar una dirección privada o una dirección de red pública. Si utiliza una dirección de red pública, puede acceder directamente a RIP a través de Internet.
  • Director Server sirve como portal de acceso para el clúster, pero no como puerta de enlace.
  • Todos los mensajes de solicitud pasan por Director Server, pero los mensajes de respuesta de respuesta no pueden pasar por Director Server.
  • La puerta de enlace del Real Server no puede apuntar a la IP del Director Server, es decir, los paquetes de datos enviados por el Real Server no pueden pasar a través del Director Server.
  • La interfaz lo en el Real Server está configurada con la dirección IP del VIP.

En segundo lugar, el problema de ARP en LVS-DR

1. En el clúster de equilibrio de carga LVS-DR, tanto el equilibrio de carga como el servidor de nodo deben configurarse con la misma dirección VIP.

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 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.
Solo responde el equilibrador de carga de front-end y otros servidores de nodos no deberían responder a las difusiones ARP.
3. Procese 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 la solicitud ARP
cuya IP de destino es la IP local. 4. RealServer devuelve el mensaje (la IP de origen es VIP) y es reenviado por el enrutador.Cuando el mensaje se vuelve a encapsular, es necesario obtener primero la dirección MAC del enrutador.

5. Al enviar una solicitud ARP, Linux utiliza de forma predeterminada 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.

Tales como: ens33
6. Después de que el enrutador reciba la solicitud ARP, actualizará la entrada de la tabla ARP

7. El VIP original correspondiente a la dirección MAC del Director se actualizará al VIP correspondiente a la dirección MAC del RealServer

8. El router reenvía el mensaje de solicitud de nuevo a RealServer de acuerdo con la entrada de la tabla ARP, causando VIP del Director dejar de ser válida.
Solución:

Para procesar 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 establecer la dirección de origen de la solicitud ARP, sino que selecciona la dirección IP de la interfaz de envío.
9. El método de configuración para resolver los dos problemas de ARP
Modifique el archivo /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

Tres pasos de implementación de clúster en modo DR con equilibrio de carga LVS

Configuración del entorno:

Anfitrión Sistema operativo dirección IP Herramientas / servicios necesarios
Servidor DR (programador de carga) CentOS7
7-2
ens33: 192.168.2.4
ens33: 0 (VIP) : 192.168.2.100
ipvsadm
Servidor NFS CentOS7
7-3
ens33: 192.168.2.5 rpcbind 、 nfs-utils
Servidor de nodo web 1 CentOS7
7-4
192.168.2.6
lo:0(VIP):192.168.2.100
rpcbind 、 nfs-utils 、 httpd
Servidor de nodo web 2 CentOS7
7-5
192.168.2.7
lo: 0 (VIP): 192.168.2.100
rpcbind 、 nfs-utils 、 httpd
Cliente Windows10 192.168.2.10

Nota: En la misma LAN, no se requieren puerta de enlace ni DNS.

Inserte la descripción de la imagen aquí

1. Implementar almacenamiento compartido

Servidor NFS: ens33: 192.168.2.5

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind

systemctl start rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
systemctl enable rpcbind.service

mkdir /opt/test1
mkdir /opt/test2

chmod 777 /opt/test1
chmod 777 /opt/test2

vim /etc/exports
/opt/test1 192.168.2.0/24(rw,sync)
/opt/test2 192.168.2.0/24(rw,sync)

exportfs -rv

Inserte la descripción de la imagen aquí

2. Configure el servidor de nodo

Servidor de nodo web 1: ens33: 192.168.2.6 lo: 0 (VIP): 192.168.2.100
Servidor de nodo web 2: ens33: 192.168.2.7 lo: 0 (VIP): 192.168.2.100 La
siguiente es la misma configuración de los dos servidores

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

(1) Configurar la dirección IP virtual (VIP: 192.168.2.100)

#此地址仅用做发送 Web 响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。
#因此使用虚接口 lo:0 来承载 VIP 地址,并为本机添加一条路有记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.2.100
NETMASK=255.255.255.255
ONBOOT=yes

ifup lo:0
ifconfig lo:0

#设置临时的路由,重启失效;禁锢路由
route add -host 192.168.2.100 dev lo:0
#查看路由
route -n

#开机自动添加路由,生产环境应该用这个
vim /etc/rc.local
/sbin/route add -host 192.168.2.100 dev lo:0
chmod +x /etc/rc.d/rc.local

Inserte la descripción de la imagen aquí

(2) Ajuste los parámetros de respuesta ARP del kernel

vim /etc/sysctl.conf
......
net.ipv4.conf.lo.arp_ignore = 1 #系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce = 2 #系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p

yum install -y nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl enable rpcbind
systemctl start httpd.service
systemctl enable httpd.service

Inserte la descripción de la imagen aquí

(3) Los dos primeros pasos de los dos servidores web son los mismos, pero la siguiente configuración no es la misma

Servidor Web1: ens33: 192.168.2.6 lo: 0 (VIP): 192.168.2.100

showmount -e 192.168.2.5

mount.nfs 192.168.2.5:/opt/test1 /var/www/html
df -h
echo 'this is test1 web!' > /var/www/html/index.html

Inserte la descripción de la imagen aquí

Servidor Web2: ens33: 192.168.2.7 lo: 0 (VIP): 192.168.2.100

showmount -e 192.168.2.5

mount.nfs 192.168.2.5:/opt/test2 /var/www/html
df -h
echo 'this is test2 web!' > /var/www/html/index.html

Inserte la descripción de la imagen aquí

3. Configure el programador de carga

Programador de carga: 192.168.2.4 lo: 0 (VIP): 192.168.2.100

(1) Apague el firewall y cargue el módulo ip_vs

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

#加载ip_vs模块,并安装ipvsadm工具
modprobe ip_vs
cat /proc/net/ip_vs
yum install -y ipvsadm

Inserte la descripción de la imagen aquí

(2) Configure la dirección IP virtual (VIP: 192.168.2.100)

vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.2.100
NETMASK=255.255.255.255

ifup ens33:0
ifconfig ens33:0

Inserte la descripción de la imagen aquí

(3) Ajustar los parámetros de respuesta del proceso

#由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭Linux 内核的重定向参数响应,不充当路由器,
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

Inserte la descripción de la imagen aquí

(4) Configurar la estrategia de distribución de carga

ipvsadm-save > /etc/sysconfig/ipvsadm
或者
ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

#清除原有策略
ipvsadm -C
ipvsadm -A -t 192.168.2.100:80 -s rr
ipvsadm -a -t 192.168.2.100:80 -r 192.168.2.6:80 -g #如果这里是隧道模式,直接将-g替换成-i即可
ipvsadm -a -t 192.168.2.100:80 -r 192.168.2.7:80 -g

#查看节点状态,Route代表 DR模式
ipvsadm -ln

Inserte la descripción de la imagen aquí

4. Verificación de prueba

Visite http://192.168.2.100/ en el cliente, actualice para probar si el balance de carga es exitoso

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_35456705/article/details/113660971
Recomendado
Clasificación