Clúster de equilibrio de carga LVS de clúster eficiente y versátil (modo DR)

1. El principio de funcionamiento de LVS-DR

1. Análisis del flujo de paquetes de datos

  • El primer paso: el cliente envía una solicitud al servidor Director (equilibrador de carga) y el paquete de datos solicitado llega al espacio del kernel.
    • Mensaje de datos
      • IP de origen ------ IP del cliente
      • IP de destino ------ VIP
      • MAC de origen ------ MAC del cliente
      • MAC de destino ------ MAC del servidor de Director
  • Paso 2: El espacio del kernel determina que la IP de destino del paquete de datos es el VIP local. En este momento, IPVS (servidor virtual IP) compara si el servicio solicitado por el paquete de datos es un servicio de clúster y vuelve a encapsular los datos paquete si es un servicio de clúster. Luego, el paquete de datos se envía al servidor real seleccionado de acuerdo con el algoritmo de equilibrio de carga. (Director Server y Real Server están en la misma red y los datos se transmiten a través de la segunda capa de enlace de datos).
    • Mensaje de datos
      • IP de origen ------ IP del cliente
      • IP de destino ------ VIP
      • MAC de origen ------ MAC del servidor del director
      • MAC de destino ------ MAC del servidor real
  • Paso 3: La dirección MAC del mensaje de solicitud que llega al servidor real es su propia dirección MAC y se recibe el mensaje. El paquete de datos vuelve a encapsular el mensaje y el mensaje de respuesta se transmite a la tarjeta de red física a través de la interfaz lo y luego se envía.
    • Mensaje de datos
      • IP de origen ------ VIP
      • IP de destino ------ la IP del cliente
      • MAC de origen ------ MAC del servidor real
      • MAC de destino ------ MAC del cliente
  • Paso 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

Pregunta uno:

  • 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.
  • Tener la misma dirección IP en la red de área local causará inevitablemente el desorden de la comunicación ARP entre los servidores.
    • Soluciones:
      • 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.
  • Procese el servidor de nodo para que no responda a las solicitudes de ARP para VIP.
    • Solución:
      • Utilice la interfaz virtual lo: 0 para transportar direcciones 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

Pregunta dos:

  • RealServer devuelve el mensaje (la IP de origen es VIP) y el enrutador lo reenvía. 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, 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.
    • Tales como: ens33
  • 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 VIP correspondiente a la dirección MAC del RealServer
  • 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.
    • 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.

Configurar métodos 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, implementación de clúster en modo DR con equilibrio de carga LVS

Configurar el entorno:

Anfitrión Sistema operativo dirección IP Servicio requerido
Servidor DR (programador de carga) CentOS7 ens33: 192.168.163.10
ens33: 0 (VIP): 192.168.163.100
ipvsadm
Servidor de nodo web 1 CentOS7 ens33 : 192.168.163.12
lo: 0 (VIP) : 192.168.163.100
nfs-utils 、 rpcbind 、 httpd
Servidor de nodo web 2 CentOS7 ens33 : 192.168.163.13
lo: 0 (VIP) : 192.168.163.100
nfs-utils 、 rpcbind 、 httpd
Servidor NFS CentOS7 192.168.163.14 rpcbind 、 nfs-utils
Cliente Windows10 192.168.163.15

Nota: Configure en la misma red de área local esta vez, no necesita puerta de enlace ni DNS al configurar la red, solo comente. Si no están en el mismo segmento de red, debe configurar la puerta de enlace.

1. Implementar almacenamiento compartido

Servidor NFS: 192.168.163.14

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.163.0/24(rw,sync)
/opt/test2 192.168.163.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.163.12 lo: 0 (VIP): 192.168.163.100
Servidor de nodo web 2: ens33: 192.168.163.13 lo: 0 (VIP): 192.168.163.100 La
siguiente es la misma configuración de los dos servidores

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

Inserte la descripción de la imagen aquí

(1) Configure la dirección IP virtual (VIP: 192.168.163.100)

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

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

ifup lo:0
ifconfig lo:0

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

#开机自动添加路由,生产环境应该用这个
vim /etc/rc.local
/sbin/route add -host 192.168.163.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 para evitar que se actualice la dirección MAC VIP y evitar conflictos

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í

Las siguientes dos configuraciones de servidor son un poco diferentes.
Servidor de nodo web 1: ens33: 192.168.163.12 lo: 0 (VIP): 192.168.163.100

showmount -e 192.168.163.14

mount.nfs 192.168.163.14:/opt/test1 /var/www/html
echo 'this is test1 web!' > /var/www/html/index.html

Inserte la descripción de la imagen aquí

Servidor de nodo web 2: ens33: 192.168.163.13 lo: 0 (VIP): 192.168.163.100

showmount -e 192.168.163.14

mount.nfs 192.168.163.14:/opt/test2 /var/www/html
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.163.10 lo: 0 (VIP): 192.168.163.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.163.100)

vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.163.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.163.100:80 -s rr
ipvsadm -a -t 192.168.163.100:80 -r 192.168.163.12:80 -g #如果这里是隧道模式,直接将-g替换成-i即可
ipvsadm -a -t 192.168.163.100:80 -r 192.168.163.13:80 -g

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

Inserte la descripción de la imagen aquí

4. Verificación de prueba

Visite http://192.168.163.100/ en el cliente, actualice para probar si el balance de carga es 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/weixin_51326240/article/details/113148641
Recomendado
Clasificación