Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

1.3. Sinopsis de la programación LVS

Una de las ventajas de utilizar LVS es la habilidad de ejecutar balance de carga de IP flexible en un grupo de servidores reales. Esta flexibilidad se debe a la variedad de algoritmos de programación que un administrador puede escoger cuando configura LVS. El balance de carga de LVS es superior a métodos menos flexibles, tal como Round-Robin DNS en donde la naturaleza jerárquica de DNS y el proceso de caché en las máquinas clientes puede conllevar a un desbalances de carga. Además, el filtro de bajo nivel empleado por el enrutado LVS tiene ventajas sobre el reenvío de solicitudes a nivel de aplicaciones porque el balance de carga en el nivel de paquetes de red causa una sobrecarga computacional mínima y permite mayor escalabilidad.
Using scheduling, the active router can take into account the real servers' activity and, optionally, an administrator-assigned weight factor when routing service requests. Using assigned weights gives arbitrary priorities to individual machines. Using this form of scheduling, it is possible to create a group of real servers using a variety of hardware and software combinations and the active router can evenly load each real server.
El mecanismo de programación para LVS es proporcionado por una colección de parches del kernel llamada IPVS (siglas en inglés de IP Virtual Server). Estos módulos permiten interrupción de capas de transporte L4 (Layer 4), la cual está diseñada para funcionar bien con múltiples servidores en una dirección IP única.
Para enrutar y sondear paquetes a los servidores reales de forma eficiente, IPVS construye una Tabla IPVS en el kernel. Esta tabla es utilizada por el servidor activo LVS para redireccionar solicitudes desde la dirección de servidores virtuales a y desde los servidores reales en el grupo. La tabla IPVS es constantemente actualizada por una utilidad llamada ipvsadmin — añadiendo o removiendo miembros del cluster dependiendo de su disponibilidad.

1.3.1. Algoritmos de programación

The structure that the IPVS table takes depends on the scheduling algorithm that the administrator chooses for any given virtual server. To allow for maximum flexibility in the types of services you can cluster and how these services are scheduled, Red Hat Enterprise Linux provides the following scheduling algorithms listed below. For instructions on how to assign scheduling algorithms refer to Sección 4.6.1, “La subsección VIRTUAL SERVER.
Round-Robin Scheduling
Distribuye cada solicitud secuencialmente a lo largo del grupo de servidores reales. Con este algoritmo, todos los servidores reales son tratados como iguales sin importar la capacidad o carga. Este modelo de programación se asemeja a round-robin DNS, pero es más detallado porque se basa en las conexiones de red y no en el host. LVS round-robin tampoco sufre desbalances causados por el proceso de caché de las solicitudes DNS.
Weighted Round-Robin Scheduling
Distributes each request sequentially around the pool of real servers but gives more jobs to servers with greater capacity. Capacity is indicated by a user-assigned weight factor, which is then adjusted upward or downward by dynamic load information. Refer to Sección 1.3.2, “Peso del servidor y programación” for more on weighting real servers.
La programación weighted round-robin es la preferida si hay diferencias en las capacidades de los servidores reales en el grupo. Sin embargo, si la carga de solicitudes varía de forma dramática, los servidores con una capacidad mayor podrían responder más solicitudes de las que deberían.
Least-Connection
Distribuye más solicitudes a los servidores reales con menos conexiones activas. Ya que rastrea las conexiones vivas a los servidores reales a través de la tabla IPVS, least-connection es un tipo de algoritmo de programación dinámica, siendo una mejor opción si hay un alto grado de variaciones en la carga de solicitudes. Es adecuado para grupos de servidores reales en donde cada nodo miembro tiene la misma capacidad. Si un grupo de servidores tiene capacidades diferentes, la programación weighted least-connection es una mejor opción.
Weighted Least-Connections (default)
Distributes more requests to servers with fewer active connections relative to their capacities. Capacity is indicated by a user-assigned weight, which is then adjusted upward or downward by dynamic load information. The addition of weighting makes this algorithm ideal when the real server pool contains hardware of varying capacity. Refer to Sección 1.3.2, “Peso del servidor y programación” for more on weighting real servers.
Locality-Based Least-Connection Scheduling
Distribuye más solicitudes a los servidores con menos conexiones activas en relación con sus IP de destino. Este algoritmo se utiliza en cluster de servidores de caché proxy. Enruta el paquete para una dirección IP para el servidor con esa dirección a menos que el servidor esté sobrecargado y tenga más de la mitad de su carga, en dicho caso se asigna la dirección IP al servidor real con menos carga.
Locality-Based Least-Connection Scheduling with Replication Scheduling
Distribuye más solicitudes a los servidores con menos conexiones activas de acuerdo al IP de destino. Este algoritmo es usado en servidores de caché de proxy. Se diferencia de la programación "Locality-Based Least-Connection" al relacionar la dirección IP objetivo con un grupo de servidores reales. Las solicitudes son luego enviadas al servidor en el grupo con menos número de conexiones. Si la capacidad de todos los nodos para el IP de destino está sobre el límite, este método añade un nuevo servidor real del grupo general al grupo de servidores para el IP de destino. El nodo con mayor carga es desplazado fuera del grupo para evitar un exceso de replicación.
Destination Hash Scheduling
Distribuye las solicitudes al grupo de servidores reales buscando el IP de destino en una tabla hash estática. Este algoritmo está diseñado para ser usado en un cluster de servidor de caché de proxy.
Source Hash Scheduling
Distribuye todas las solicitudes de acuerdo a un diccionario estático de direcciones IP. Este algoritmo se utiliza en enrutadores LVS con varios cortafuegos.