El principio del equilibrio de carga de LVS, la implementación real del equilibrio de carga de LVS en modo NAT (¡imagen y texto detallados!)

El principio del equilibrio de carga de LVS, la implementación real del equilibrio de carga de LVS en modo NAT (¡imagen y texto detallados!)

Uno, tecnología de clúster

1. El significado de las agrupaciones

El llamado clúster también se denomina clúster (Cluster). Está compuesto por varios hosts, pero solo aparece como un todo externamente y solo proporciona una entrada de acceso (nombre de dominio o IP), lo que equivale a una computadora grande.

En aplicaciones prácticas, siempre habrá un servidor de equilibrio de carga antes del clúster de servidores web. La tarea del dispositivo de equilibrio de carga es servir como entrada al tráfico del servidor web, seleccionar el servidor web más adecuado y reenviar la solicitud del cliente a para su procesamiento Reenvío transparente del cliente al servidor real.
LVS, Nginx y HAProxy son actualmente los tres software de equilibrio de carga de software más utilizados.

2. Escenarios aplicables

El uso del equilibrio de carga generalmente se basa en el uso de diferentes tecnologías en diferentes etapas a medida que aumenta la escala del sitio web.
Si se trata de una aplicación web pequeña y mediana, por ejemplo, el PV diario es inferior a 10 millones, usar Nginx está completamente bien.
Si hay muchas máquinas, se puede utilizar el sondeo de DNS. LVS consume muchas máquinas.
Para sitios web grandes o servicios importantes, y hay más servidores, puede considerar usar LVS.
En la actualidad, existen esquemas de arquitectura generalmente razonables y populares para la arquitectura de sitios web: Nginx / HAProxy + Keepalived se usa como balanceador de carga en el front-end de la Web; el back-end usa la base de datos MySQ L con un maestro y múltiples esclavos y lectura-escritura separación, y se adopta la arquitectura LVS + Keepalived.

3. La importancia de la existencia de conglomerados

3.1 La aparición del problema

En las aplicaciones de Internet, como los sitios tienen requisitos cada vez más altos para el rendimiento del hardware, la velocidad de respuesta, la estabilidad del servicio y la confiabilidad de los datos, un solo servidor ya no puede cumplir con los requisitos de equilibrio de carga y alta disponibilidad.

3.2 Solución

Método 1: Utilice miniordenadores y mainframes costosos. (Alto costo)
Método 2: Utilice varios servidores ordinarios relativamente económicos para crear un clúster de servicios. (Bajo costo)

La mayoría de las empresas eligen el método dos para integrar varios servidores, utilizan LVS para lograr una alta disponibilidad del servidor y equilibrio de carga, y proporcionan los mismos servicios externamente desde la misma dirección IP. Y esta es una tecnología de clúster comúnmente utilizada en empresas: LVS (Linux Virtual Server, Linux Virtual Server).

Nota: El primer tipo es la expansión vertical y el segundo tipo es la expansión horizontal.

2. Tipos de agrupaciones

1. Según la diferencia de destino del grupo, se puede dividir en tres tipos

Clúster de equilibrio de carga Clúster de
alta disponibilidad Clúster
de computación de alto rendimiento

2. Panorama general de los tres grupos

Clúster de equilibrio de carga

  • Con el objetivo de mejorar la capacidad de respuesta del sistema de aplicaciones, procesar tantas solicitudes de acceso como sea posible y reducir la latencia, se obtiene el rendimiento general de alta concurrencia y carga (LB).
  • La distribución de carga de LB se basa en el algoritmo de descarga del nodo maestro, que distribuye las solicitudes de acceso del cliente a varios nodos del servidor, aliviando así la carga de todo el sistema.

Clúster de alta disponibilidad

  • Para mejorar la confiabilidad del sistema de aplicación y reducir el tiempo de interrupción tanto como sea posible, para asegurar la continuidad del servicio y lograr el efecto de tolerancia a fallas de alta disponibilidad (HA)
  • 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 cuando ocurre una falla, el nodo esclavo puede cambiar automáticamente a el nodo maestro.
    Por ejemplo: "Conmutación por error", "Copia de seguridad en caliente de sistema dual", etc.

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, expandiendo los recursos de hardware y las capacidades de análisis, obtendrá el equivalente a las capacidades de computación de alto rendimiento (HPC) de supercomputadora a gran escala.
  • El alto rendimiento del clúster de computación de 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 y supercomputadoras. .

Tres, arquitectura de clúster de equilibrio de carga

1. Estructura de equilibrio de carga

  • En el primer nivel, el programador de carga (Load Balancer o Director)
    accede a la entrada única de todo el sistema del clúster y utiliza la dirección VIP compartida por todos los servidores externamente, que también se denomina dirección IP del clúster. Por lo general, dos programadores, el principal y el de respaldo, están configurados 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.
  • La segunda capa,
    los servicios de aplicación proporcionados por el grupo de servidores (grupo de servidores) son soportados por el grupo de servidores, donde cada nodo tiene una dirección RIP independiente (IP real) y solo procesa las solicitudes de los clientes 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.
  • La tercera capa, el almacenamiento compartido,
    proporciona servicios de acceso a archivos estables y consistentes para todos los nodos del grupo de servidores, lo que garantiza la unidad de todo el clúster. El almacenamiento compartido puede usar dispositivos NAS o proporcionar servidores dedicados para servicios de uso compartido de NFS.

2. Mecanismo de equilibrio de carga LVS

  • LVS es un equilibrio de carga de cuatro capas, que se basa en la cuarta capa del modelo OSI, la capa de transporte. La capa de transporte tiene el conocido TCP / UDP, y LVS admite el
    equilibrio de carga TCP / UDP .
  • Debido a que LVS es un equilibrio de carga de cuatro capas, en comparación con otras soluciones de equilibrio de carga de alto nivel, como la resolución de rotación de nombres de dominio DNS, la programación de carga de la capa de aplicación, la programación de clientes, etc., su eficiencia es muy alta.

3. Análisis del modo de trabajo del clúster de equilibrio de carga

  • Los clústeres de equilibrio de carga son actualmente el tipo de clúster más utilizado en las empresas.
  • La tecnología de programación de carga del clúster tiene 3 modos de trabajo, los modos son los siguientes

3.1 Modo NAT: traducción de direcciones

  • Traducción de direcciones de red, conocida como modo NAT
  • Similar a la estructura de red privada del 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.La seguridad es mejor que los otros dos métodos.

3.2 Modo TUN: túnel IP

  • Túnel IP, denominado modo TUN
  • Al adoptar una estructura de red abierta, el programador de carga solo sirve como entrada de acceso del cliente, y 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 de Internet, tienen direcciones IP públicas independientes y se comunican con el programador de carga a través de un túnel IP dedicado.

Modo 3.3DR: enrutamiento directo

  • Enrutamiento directo, denominado modo DR
  • Adopta una estructura de red semiabierta, que es similar a la estructura del modelo 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.

En los tres modos de trabajo anteriores

  • El método NAT solo necesita una dirección IP pública, lo que lo hace más fácil de usar el modo de equilibrio de carga con mejor seguridad.Muchos dispositivos de equilibrio de carga de hardware utilizan este método;
  • El modo DR y el modo TUN tienen una mayor capacidad de carga y un rango de aplicación más amplio, pero la seguridad del nodo es un poco peor.

Cuatro, sobre el servidor virtual LVS

1.Servidor Virtual Linux

● Solución de equilibrio de carga desarrollada para el kernel de Linux
● Fundada por el Dr. Zhang Wensong de China en mayo de 1998
● Sitio web oficial: http: //www.linuxvirtualserver.orgl
● LVS es en realidad equivalente a aplicaciones virtualizadas basadas en direcciones IP. Equilibrio de carga basado en La distribución de solicitudes de contenido y direcciones IP propone una solución eficiente

2. La importancia de LVS

LVS ahora se ha convertido en parte del kernel de Linux, compilado como un módulo ip_ vs de forma predeterminada, 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.

#加载ip_va模块
modprobe ip_vs
#确认内核对LVS的支持
cat /proc/net/ip_vs

Inserte la descripción de la imagen aquí

3. Herramienta de gestión de LVS: ipvsadm

función ipvsadm y descripción de la opción

Opciones función
-A Agregar un servidor virtual
-D Eliminar todo el servidor virtual
-s Especificar el algoritmo de programación de carga (sondeo: rr, round-robin ponderado: wrr, conexión mínima: lc, conexión mínima ponderada: wlc)
-a Medios para agregar un servidor real (servidor de nodo)
-D 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
-I 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 Ver servidores virtuales LVS en una lista (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

4. Algoritmo de programación de carga LVS

1) Round Robin

● Las solicitudes de acceso recibidas se asignan a cada nodo (servidor real) en el clúster en orden, y cada servidor se trata por igual, independientemente de la cantidad real de conexiones y la carga del sistema del servidor.

2) Round Robin ponderado

● Distribuya las solicitudes de acuerdo con el valor de peso establecido por el programador. Los nodos con un valor de peso más alto recibirán la tarea primero y se asignarán más solicitudes.
● Asegúrese de que el servidor con un rendimiento sólido tenga más tráfico de acceso

3) Mínimas conexiones

● Según el número de conexiones establecidas por el servidor real, la solicitud de acceso recibida se asigna primero al nodo con el menor número de conexiones.

4) Conexiones menos ponderadas (Conexiones orientales ponderadas)

● Cuando la diferencia de rendimiento de los nodos del servidor es grande, el peso se puede ajustar automáticamente para el servidor real.
● Los nodos con mayor rendimiento soportarán una mayor proporción de la carga de conexión activa.

Cinco, implementación de clúster en modo NAT con equilibrio de carga LVS

El programador LVS se utiliza como puerta de enlace del grupo de servidores web, LVS tiene dos tarjetas de red, respectivamente conectadas a las redes internas y externas, utilizando el algoritmo de programación round-robin (rr)

Despliegue del entorno

Anfitrión Sistema operativo dirección IP Herramientas / servicios necesarios
Programador de carga CentOS7
7-2
Puerta de enlace interna: 192.168.2.4
Puerta de enlace externa: 12.0.0.1
ipvsadm
Servidor NFS CentOS7
7-3
192.168.2.5 rpcbind 、 nfs-utils
Servidor de nodo web 1 CentOS7
7-4
192.168.2.6 rpcbind 、 nfs-utils 、 httpd
Servidor de nodo web 2 CentOS7
7-5
192.168.2.7 rpcbind 、 nfs-utils 、 httpd
Cliente Windows10 12.0.0.10

Inserte la descripción de la imagen aquí

Nota: La puerta de enlace del distribuidor de carga se puede configurar con su propia IP o no. Las puertas de enlace del servidor y el cliente deben estar configuradas, y la dirección son las direcciones de puerta de enlace interna y externa del distribuidor de carga. (Se requiere una puerta de enlace para el acceso entre redes)

Inserte la descripción de la imagen aquí

1. Implementar el almacenamiento compartido NFS

CentOS7-3 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 Web1: CentOS7-4 192.168.2.6

Servidor Web2: CentOS7-5 192.168.2.7

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

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

yum -y install nfs-utils rpcbind

systemctl start rpcbind
systemctl enable rpcbind

showmount -e 192.168.2.5

Inserte la descripción de la imagen aquí

Servidor Web1: CentOS7-4 192.168.2.6

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: CentOS7-5 192.168.2.7

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: puerta de enlace interna ens33: 192.168.2.4, puerta de enlace externa ens36: 12.0.0.1

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

Inserte la descripción de la imagen aquí

1) Configurar las reglas de reenvío de SNAT

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
或
echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p

iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ens36 -j SNAT --to-source 12.0.0.1

Inserte la descripción de la imagen aquí

2) Cargue el módulo del kernel LVS

#加载 ip_vs模块
modprobe ip_vs
#查看 ip_vs版本信息
cat /proc/net/ip_vs

Inserte la descripción de la imagen aquí

3) Instale la herramienta de administración ipvsadm

yum -y install ipvsadm

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

systemctl start ipvsadm.service

Inserte la descripción de la imagen aquí

4) Configure la estrategia de distribución de carga (el modo NAT solo debe configurarse en el servidor, no se requiere una configuración especial para el servidor de nodo)

#清除原有策略
ipvsadm -C

ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.2.6:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.2.7:80 -m
#启用策略
ipvsadm

#查看节点状态,Masq代表 NAT模式
ipvsadm -ln
#保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm

Inserte la descripción de la imagen aquí

4. Resultados de la prueba

Utilice un navegador para visitar http://12.0.0.1/ en un cliente con una IP de 12.0.0.10, actualice y pruebe el efecto de equilibrio de carga a intervalos

Inserte la descripción de la imagen aquí

Supongo que te gusta

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