Clúster de equilibrio de carga LVS: explicación detallada teórica y construcción del clúster de equilibrio de carga de LVS-NAT Combate real


Prefacio

  • En varias aplicaciones de Internet, dado que el sitio tiene requisitos cada vez más altos para el rendimiento del hardware, la velocidad de respuesta, la estabilidad del servicio, la confiabilidad de los datos, etc., un solo servidor no podrá soportar todo el acceso (es decir, los requisitos de equilibrio de carga y alta disponibilidad)
  • Además de utilizar mainframes costosos y equipos de distribución de carga dedicados, las empresas tienen otra opción para resolver el problema, es decir, construir un servidor de clúster, integrando múltiples pares de servidores ordinarios baratos, proporcionando la misma dirección externa con la misma dirección. Servicio
  • A continuación, aprenderemos una tecnología de clúster comúnmente utilizada en empresas: LVS (Linux Virtual Server, Linux Virtual Server)

1. Base de la aplicación del clúster LVS

El nombre cluster (o cluster) proviene de la palabra inglesa "Cluster", que significa un grupo o un montón, y cuando se usa en el campo del servidor, significa la geometría de una gran cantidad de servidores para distinguirlo de un solo servidor.

1. Panorama general de la tecnología de clústeres

  • Dependiendo del entorno real de la empresa, las funciones proporcionadas por el clúster también son diferentes y los detalles técnicos utilizados también pueden ser diferentes.
  • Sin embargo, en general, primero debemos comprender algunas características comunes del clúster, de modo que podamos estar al tanto del trabajo de construcción y mantenimiento del clúster y evitar ir ciegamente al oeste en funcionamiento.

1.1 Clasificación de conglomerados

  • Independientemente del tipo de clúster, incluye al menos dos servidores de nodo y aparece como un todo externamente, proporcionando solo una entrada de acceso (nombre de dominio o sistema de IP)
  • Según la diferencia objetivo del clúster, se puede dividir en los siguientes tres tipos:

1.1.1 Clúster de equilibrio de carga

  • Mejore la capacidad de respuesta del sistema de aplicaciones, maneje tantas solicitudes de acceso como sea posible, reduzca la latencia como objetivo y obtenga alta concurrencia y alta carga (LB) rendimiento general
  • Por ejemplo, "sondeo de DNS", "cambio de capa de aplicación" y "proxy inverso" se pueden usar como clústeres de equilibrio de carga.
  • La distribución de carga de LB se basa en el algoritmo de descarga del nodo maestro, compartiendo las solicitudes de acceso del cliente a múltiples nodos del servidor, aliviando así la carga de todo el sistema.

1.1.2 Clúster de alta disponibilidad

  • Mejorar la confiabilidad del sistema de aplicación, reducir el tiempo de interrupción tanto como sea posible, garantizar la continuidad del servicio y lograr el efecto de tolerancia a fallas de alta disponibilidad (HA)
  • Por ejemplo, "failover" y "hot standby de máquina dual" son tecnologías de clúster de alta disponibilidad.
  • El modo de trabajo de HA incluye modos dúplex y maestro-esclavo. Dúplex significa que todos los nodos están en línea al mismo tiempo; maestro-esclavo significa que solo el nodo maestro está en línea, pero el nodo esclavo puede cambiar automáticamente al nodo maestro cuando ocurre una falla

1.1.3 Clúster de computadoras de alto rendimiento

  • Con el objetivo de aumentar la velocidad de computación de la CPU del sistema de aplicación, expandir los recursos de hardware y las capacidades de análisis, obteniendo capacidades de computación de alto rendimiento (HPC) equivalentes a las supercomputadoras a gran escala.
  • Por ejemplo, la "computación en la nube" y la "computación en red" también se pueden considerar como un tipo de computación de alto rendimiento.
  • El alto rendimiento se basa en la "computación distribuida" y la "computación paralela". La CPU, la memoria y otros recursos de varios servidores se integran a través de hardware y software dedicados para lograr capacidades de computación que solo tienen las grandes computadoras y las supercomputadoras.

Se pueden combinar diferentes tipos de clústeres cuando sea necesario, como un clúster de equilibrio de carga de alta disponibilidad.

1.2 Estructura en capas de equilibrio de carga

  • En un clúster de equilibrio de carga típico, hay tres niveles de componentes. Al menos un programador de carga (Load Balancer o Director) es responsable de responder y distribuir las solicitudes de acceso de los clientes en el front-end.
  • El back-end consta de una gran cantidad de servidores reales para formar un grupo de servidores, que proporciona servicios de aplicaciones reales. La escalabilidad de todo el clúster se logra agregando y eliminando nodos de servidor, y estos procesos son transparentes para los clientes.
  • Para mantener la coherencia del servicio, todos los nodos utilizan dispositivos de almacenamiento compartido de manera uniforme
    marca

1.2.1 El planificador de carga de la primera capa

  • La única entrada para acceder a todo el sistema del clúster, utilizando la dirección VIP (IP virtual) compartida por todos los servidores externamente, también conocida como la dirección IP del clúster
  • Por lo general, se configuran dos programadores, los programadores principal y de respaldo para lograr una copia de seguridad en caliente. Cuando el programador principal falla, se puede reemplazar sin problemas por el programador de respaldo para garantizar una alta disponibilidad

1.2.2 Grupo de servidores de segundo nivel

  • Los servicios de la aplicación (como HTTP, FTP) proporcionados por el clúster están a cargo del grupo de servidores. Cada nodo tiene una dirección RIP independiente (IP real) y solo procesa las solicitudes del cliente distribuidas por el programador.
  • Cuando un nodo falla temporalmente, el mecanismo tolerante a fallas del programador de carga lo aislará y esperará a que se elimine el error antes de volver a ingresarlo en el grupo de servidores.

1.2.3 La tercera capa de almacenamiento compartido

  • Proporcionar servicios de acceso a archivos estables y consistentes para todos los nodos en el grupo de servidores para garantizar la unidad de todo el clúster.
  • El almacenamiento compartido puede usar dispositivos NAS o servidores dedicados que brindan servicios compartidos NFS (Network File System)

1.3 Modo de trabajo de equilibrio de carga

  • En cuanto a la tecnología de programación de carga del clúster, se puede distribuir en base a IP, puerto, contenido, etc., de los cuales la programación de carga basada en IP es la más eficiente
  • En el equilibrio de carga basado en IP, hay tres modos de trabajo comunes: traducción de direcciones, túnel IP y enrutamiento directo:

1.3.1 Traducción de direcciones de red

marca

  • Conocido como modo NAT, es similar a la estructura de red privada de un firewall. El programador de carga actúa como la puerta de enlace de todos los nodos del servidor, es decir, como la entrada de acceso del cliente, y también la salida de acceso de cada nodo en respuesta al cliente.
  • El nodo del servidor utiliza una dirección IP privada y está ubicado en la misma red física que el programador de carga, que es más seguro que los otros dos métodos.

1.3.2 Túnel IP

marca

  • Denominado modo TUN, adopta una estructura de red abierta. El programador de carga solo se utiliza como portal de acceso del cliente. Cada nodo responde directamente al cliente a través de su propia conexión a Internet, en lugar de pasar por el programador de carga.
  • Los nodos del servidor están dispersos en diferentes ubicaciones en Internet, tienen direcciones IP públicas independientes y se comunican con el programador de carga a través de un túnel IP dedicado.

1.3.3 Enrutamiento directo

marca

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

Entre los tres modos de trabajo anteriores, el modo NAT solo necesita una dirección IP pública, por lo que se denomina el modo de equilibrio de carga más utilizado con mejor seguridad Muchos dispositivos de equilibrio de carga de hardware utilizan este método; En otras palabras, la capacidad de carga del modo DR y el modo TUN es más fuerte y el alcance de uso es más amplio, pero la seguridad del nodo es un poco peor.

2. Servidor virtual LVS

  • Linux Virtual Server (LVS) es una solución de equilibrio de carga desarrollada para el kernel de Linux. Fue creada por el Dr. Wensong Zhang de China en mayo de 1998. El sitio web oficial se encuentra en http://www.linuxvirtualserver.org/
  • LVS es en realidad equivalente a una aplicación virtualizada basada en la dirección IP y propone una solución eficiente para el equilibrio de carga basada en la dirección IP y la distribución de solicitudes de contenido.
  • LVS ahora se ha convertido en parte del kernel de Linux, compilado como un módulo ip_vs por defecto, y se puede llamar automáticamente cuando sea necesario
  • En el sistema CentOS 7, las siguientes operaciones pueden cargar manualmente el módulo ip_vs y ver la información de la versión del módulo ip_vs en el sistema actual
[root@localhost ~]# modprobe ip_vs          #加载 ip_vs 模块
[root@localhost ~]# cat /proc/net/ip_vs     #查看 ip_vs 版本信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

2.1 Algoritmo de programación de carga LVS

Para diferentes necesidades de configuración y servicio de red, el programador LVS proporciona una variedad de algoritmos de programación de carga diferentes, entre los cuales los cuatro algoritmos más comunes incluyen round-robin, round-robin ponderado, conexión mínima y conexión mínima ponderada

2.1.1 Round Robin:

  • Asignar las solicitudes de acceso recibidas a cada nodo (servidor real) en el clúster en orden
  • Trate a cada servidor por igual, independientemente del número real de conexiones del servidor y la carga del sistema

2.1.2 Round Robin ponderado:

  • Según la capacidad de procesamiento del servidor real, las solicitudes de acceso recibidas se asignan a su vez
  • El programador puede consultar automáticamente el estado de carga de cada nodo y ajustar dinámicamente su peso.
  • Esto puede garantizar que los servidores con sólidas capacidades de procesamiento soporten más tráfico de acceso.

2.1.3 Conexiones mínimas:

  • Distribución basada en el número de conexiones establecidas por el servidor real
  • Priorizar las solicitudes de acceso recibidas al nodo con menor número de conexiones
  • Si todos los nodos del servidor tienen un rendimiento similar, este método puede equilibrar mejor la carga

2.1.4 Conexiones menos ponderadas

  • Cuando el rendimiento de los nodos del servidor difiere mucho, el peso se puede ajustar automáticamente para el servidor real
  • Los nodos con pesos más altos soportarán una mayor proporción de carga de conexión activa

2.2 Utilice la herramienta de administración ipvsadm

  • ipvsadm es una herramienta de administración de clústeres LVS que se utiliza en el programador de carga. Puede agregar y eliminar nodos del servidor llamando al módulo ip_vs y ver el estado de ejecución del clúster

2.2.1 Instalación

En el sistema CentOS 7, debe instalar este paquete manualmente

[root@localhost ~]# yum -y install ipvsadm
...
...
已安装:
  ipvsadm.x86_64 0:1.27-7.el7                                                                                 

完毕!


[root@localhost ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

2.2.2 Método de operación

La gestión del clúster LVS incluye principalmente la creación de servidores virtuales, la adición de nodos de servidor, la visualización del estado de los nodos del clúster, la eliminación de nodos de servidor y el ahorro de estrategias de distribución de carga.

Opciones comunes Descripción
-UN Agregar servidor virtual
-RE Eliminar todo el servidor virtual
-s Especificar el algoritmo de programación de carga (sondeo: rr, round-robin ponderado: wrr, conexiones mínimas: lc, conexiones mínimas ponderadas: wlc)
-un Medios para agregar un servidor real (servidor de nodo)
-re Eliminar un nodo
-t Especifique la dirección VIP y el puerto TCP
-r Especifique la dirección RIP y el puerto TCP
-metro Indica el uso del modo de clúster NAT.
-gramo Indica el uso del modo DR
-yo Medios para utilizar el modo TUN
-w Establecer el peso (cuando el peso es 0, el nodo está suspendido)
-p 60 Significa mantener una conexión larga durante 60 segundos
-l Lista de servidores virtuales LVS (el valor predeterminado es ver todos)
-norte Muestra la dirección, el puerto y otra información en forma digital, que a menudo se usa en combinación con la opción "-l". ipvsadm -ln

2.2.3 Ejemplo

  1. Gestionar servicios virtuales
#添加一个虚拟服务192.168.1.100:80,使用轮询算法
ipvsadm -A -t 192.168.1.100:80 -s rr


#修改虚拟服务的算法为加权轮询
ipvsadm -E -t 192.168.1.100:80 -s wrr


#删除虚拟服务
ipvsadm -D -t 192.168.1.100:80
  1. Gestionar servicios reales
#添加一个真实服务器192.168.1.123,使用DR模式,权重2
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.123 -g -w 2


#修改真实服务器的权重
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.123 -g -w 5


#删除真实服务器
ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.123
  1. Ver estadísticas
#查看当前配置的虚拟服务和各个RS的权重
ipvsadm -Ln


#查看当前ipvs模块中记录的连接(可用于观察转发情况)
ipvsadm -lnc


#查看ipvs模块的转发情况统计

ipvsadm -Ln --stats | --rate

2. Cree un clúster de equilibrio de carga LVS-NAT

Modo de traducción de direcciones (LVS-NAT)

1. Preparación

1.1 Resumen

  • En un clúster en modo NAT, el programador de carga LVS es el servidor de puerta de enlace para que todos los nodos accedan a Internet y también sirve como la dirección VIP de todo el clúster.
  • El programador LVS tiene dos tarjetas de red, que están conectadas a las redes internas y externas respectivamente.
    marca
  • Para el planificador de equilibrio de carga LVS, debe usar iptables para configurar las reglas de reenvío SNAT para las respuestas salientes, de modo que el servidor de nodo pueda acceder a Internet.
  • Todos los servidores de nodo y el almacenamiento compartido se encuentran en la red privada y su puerta de enlace predeterminada está configurada en la dirección de red interna del programador de carga LVS.

1.2 Medio Ambiente

  • En este experimento, se implementan cinco máquinas virtuales. Los detalles son los siguientes:

Cliente (Win10): 12.0.0.12
Programador de carga (CentOS 7-1): Puerta de enlace interna ens33: 192.168.126.11, Puerta de enlace externa ens32: 12.0.0.1
Nodo web Servidor 1 (CentOS 7-2): 192.168.126.12
Nodo web Servidor 2 (CentOS 7-3): 192.168.126.13
Servidor NFS (CentOS 7-4): 192.168.126.14

Anfitrión: estación de trabajo profesional Windows 10 versión
VWware 16 Pro (16.1.0)
Los
adaptadores de red de la máquina virtual CentOS7 están todos en modo NAT,
la configuración de la tarjeta de red se obtiene estáticamente
Almacén de origen YUM local

2. Implementar el almacenamiento compartido NFS

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

#安装nfs共享所需软件包及开启nfs功能
yum install nfs-utils rpcbind -y
systemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service

#给予共享文件最大权限
mkdir /opt/xcf /opt/zxc
chmod 777 /opt/xcf /opt/zxc

#给共享文件输出内容,以作网站首页内容
cd /opt/xcf
echo 'Hello xcf' > index.html
cd /opt/zxc
echo 'Hello zxc' > index.html

vim /etc/exports
/usr/share *(ro,sync)
/opt/xcf 192.168.126.0/24(rw,sync)
/opt/zxc 192.168.126.0/24(rw,sync)


#发布共享
exportfs -rv
showmount -e

marca

3. Configure el servidor de nodo

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

yum -y install httpd 
systemctl start httpd.service
systemctl enable httpd.service

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

showmount -e 192.168.126.14

mount 192.168.126.14:/opt/xcf /var/www/html
cd /var/www/html/
ls
cat index.html

vim /etc/fstab
192.168.126.14:/opt/xcf /var/www/html nfs defaults,_netdev 0 0

mount -a
  • El otro servidor de nodo es el mismo que el anterior, preste atención para distinguir dos carpetas compartidas diferentes

4. Configure el programador de carga

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

#添加一块网卡后开机
ifconfig ens32 12.0.0.1/24

marca

4.1 Configurar las reglas de reenvío SNAT

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -p

#先清空iptables规则
iptables -t nat -F
iptables -F

iptables -t nat -A POSTROUTING -s 192.168.126.0/24 -o ens32 -j SNAT --to-source 12.0.0.1

marca
marca

4.2 Cargar el módulo del kernel LVS

#加载ip_vs模块
modprobe ip_vs

#查看ip_vs版本信息
cat /proc/net/ip_vs

marca

4.3 Instalar la herramienta de administración ipvsadm

yum install -y ipvsadm


#启动服务前须保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
或
ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

marca

4.4 Configurar la estrategia de distribución de carga (el modo NAT solo debe configurarse en el servidor y el servidor de nodo no requiere una configuración especial)

#清除原有策略
ipvsadm -C

ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.126.12:80 -m -w 1
ipvsadm -a -t 12.0.0.1:80 -r 192.168.126.13:80 -m -w 1

#启用策略
ipvsadm

#查看节点状态,Masq代表 NAT模式
ipvsadm -ln

#保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm

marca

4.5 Nota

Dos hosts para el equilibrio de carga, recuerde apuntar la puerta de enlace a la puerta de enlace del programador
marca
marca

4.6 Suplemento

#删除群集中某一节点服务器
ipvsadm -d -t 12.0.0.1:80 -r 192.168.126.12:80 -m [-w 1]

#删除整个虚拟服务器
ipvsadm -D -t 12.0.0.1:80

#停止服务(清除策略)
systemctl stop ipvsadm

#启动服务(重建规则)
systemctl start ipvsadm

#恢复LVS 策略
ipvsadm-restore < /etc/sysconfig/ipvsadm

5. Pruebe el clúster LVS

  1. Abra Win10 y modifique el adaptador de red, la puerta de enlace de la máquina de prueba debe apuntar a la puerta de enlace del programador
    marca

  2. Abra el navegador y visite http: /12.0.0.1, podrá ver el contenido de la página web proporcionada por el servidor real; si las páginas web de cada nodo son diferentes, las páginas web vistas por diferentes clientes pueden ser diferentes (debe actualizar varias veces , El intervalo necesita esperar un rato)
    marca
    marca

  3. En el programador de carga LVS, puede observar la distribución de carga actual viendo el estado del nodo. Para el algoritmo de sondeo, la carga de conexión obtenida por cada nodo debe ser aproximadamente la misma
    marca

Supongo que te gusta

Origin blog.csdn.net/weixin_51486343/article/details/112855219
Recomendado
Clasificación