Linux Virtual Server ( LVS ) es un software de equilibrio de carga para sistemas operativos basados en el kernel de Linux .
LVS es un proyecto gratuito y de código abierto iniciado por Wensong Zhang en mayo de 1998, sujeto a los requisitos de la Licencia Pública General GNU (GPL), versión 2. La misión del proyecto es construir un servidor de alto rendimiento y alta disponibilidad para Linux utilizando tecnología de clustering , que proporcione buena escalabilidad, confiabilidad y capacidad de servicio.
Descripción general

El trabajo principal del proyecto LVS ahora es desarrollar software avanzado de equilibrio de carga IP (IPVS), software de equilibrio de carga a nivel de aplicación (KTCPVS) y componentes de gestión de clúster.
- IPVS : un software avanzado de balanceo de carga de IP implementado dentro del núcleo Linux . El código de IP Virtual Server se fusionó con las versiones 2.4.x y posteriores de la línea principal del núcleo Linux. [1]
- KTCPVS: implementa el equilibrio de carga a nivel de aplicación dentro del kernel de Linux, a febrero de 2011 [actualizar]todavía en desarrollo. [2]
LVS se puede utilizar para crear servicios de red altamente escalables y de alta disponibilidad , como servicios web, de correo electrónico, multimedia y VoIP , e integrar servicios de red escalables en aplicaciones de comercio electrónico o gobierno electrónico confiables a gran escala . Las soluciones basadas en LVS ya se han implementado en muchas aplicaciones reales en todo el mundo, incluida Wikipedia .
Los componentes de LVS dependen del marco Netfilter de Linux y su código fuente está disponible en el net/netfilter/ipvssubdirectorio dentro del código fuente del núcleo de Linux . LVS puede manejar protocolos UDP, TCP de capa 4 y conexiones pasivas FTP mediante la inspección de paquetes de capa 7. Proporciona una jerarquía de contadores en el /procdirectorio.
El programa de utilidad de usuario utilizado para configurar LVS se llama ipvsadm , que requiere privilegios de superusuario para ejecutarse.
Programadores
LVS implementa varios programadores de equilibrio, que se enumeran a continuación con los archivos fuente relevantes: [3]
- Todos contra todos (
ip_vs_rr.c) - Round-robin ponderado (
ip_vs_wrr.c) - Mínima conexión (
ip_vs_lc.c) - Conexión mínima ponderada (
ip_vs_wlc.c) - Conexión mínima basada en localidad (
ip_vs_lblc.c) - Conexión mínima basada en la localidad con la replicación (
ip_vs_lblcr.c) - Hash de destino (
ip_vs_dh.c) - Hashing de origen (
ip_vs_sh.c) - Retraso más corto esperado (
ip_vs_sed.c) - Nunca hagas cola (
ip_vs_nq.c) - Hashing de levitación magnética (
ip_vs_mh.c)
Glosario
Los términos comúnmente utilizados incluyen los siguientes: [4]
- Director LVS : balanceador de carga que recibe todas las solicitudes entrantes de servicios de los clientes y las dirige a un "servidor real" específico para manejar la solicitud.
- Servidores reales : nodos que forman un clúster LVS y que se utilizan para proporcionar servicios en nombre del clúster.
- Equipos cliente : equipos que solicitan servicios del servidor virtual
- VIP (dirección IP virtual) : la dirección IP utilizada por el director para proporcionar servicios a las computadoras cliente
- RIP (dirección IP real) : la dirección IP utilizada para conectarse a los nodos del clúster
- DIP (dirección IP del director) : la dirección IP utilizada por el director para conectarse a la red de direcciones IP reales
- CIP (dirección IP del cliente) : la dirección IP asignada a una computadora cliente, que utiliza como dirección IP de origen para las solicitudes que se envían al clúster.
Ejemplos
Configuración de un servidor HTTP virtual con dos servidores reales:
ipvsadm -A -t 192 .168.0.1:80 -s rr
ipvsadm -a -t 192 .168.0.1:80 -r 172 .16.0.1:80 -m
ipvsadm -a -t 192 .168.0.1:80 -r 172 .16.0.2:80 -m
El primer comando asigna el puerto TCP 80 en la dirección IP 192.168.0.1 al servidor virtual. El algoritmo de programación elegido para el equilibrio de carga es round-robin ( -s rr). El segundo y tercer comando agregan direcciones IP de servidores reales a la configuración de LVS. Los paquetes de red reenviados se enmascararán ( -m). [5]
Consulta del estado de la configuración LVS anterior:
#ipvsadm-L-n
Servidor virtual IP versión 1.0.8 (tamaño=65536)
Prot LocalAddress:Banderas del programador de puertos
-> Dirección remota: Peso de reenvío de puerto ActiveConn InActConn
TCP 192.168.0.1:80 rr
-> 172.16.0.2:80 Masq1 3 1
-> 172.16.0.1:80 Masq1 4 0
Véase también
Referencias
- ^ "Software IPVS - Conmutación avanzada de capa 4". linuxvirtualserver.org. 8 de febrero de 2011. Consultado el 12 de enero de 2014 .
- ^ Wensong Zhang (8 de febrero de 2011). "Software KTCPVS: equilibrio de carga a nivel de aplicación". Linuxvirtualserver.org . Consultado el 25 de marzo de 2014 .
- ^ "Algoritmos de programación de tareas en servidores virtuales Linux". linuxvirtualserver.org. 8 de febrero de 2011. Consultado el 24 de noviembre de 2013 .
- ^ "Servidor virtual Linux: equilibre la carga de sus servicios en red". bobcares.com. 2008. Consultado el 24 de noviembre de 2013 .
- ^ Peter, Jeff. "Understanding Virtual Server" (Entender el servidor virtual) . Consultado el 18 de junio de 2023 .
Enlaces externos
- Sitio web oficial
- Wiki de configuración de servidores virtuales Linux
- IBM eServer BladeCenter, Linux y código abierto: modelo para el comercio electrónico a pedido Archivado el 11 de agosto de 2022 en Wayback Machine (incluye LVS como componente)