1.3. Sinopsis de programación de la adición del equilibrador de carga
Una de las ventajas del uso de la adición del equilibrador de carga es la capacidad de realizar balanceo flexible, balanceo de carga nivel IP en el grupo de servidores reales. Esta flexibilidad se debe a la variedad de algoritmos de programación que un administrador puede elegir desde cuando configura la adición del equilibrador de carga. La adición del equilibrador de carga es superior a los métodos menos flexibles, tales como DNS de Round-robin donde la naturaleza jerárquica de DNS y el almacenamiento en caché por máquinas de clientes pueden conducir a desequilibrios. Además, el filtraje de nivel bajo empleado por el enrutador LVS tiene ventajas sobre el envío de la solicitud del nivel de aplicaciones porque las cargas de balanceo en el nivel de paquetes gastos costos de computación mínimos y permite la escalabilidad.
Al usar programación, el enrutador tiene en cuenta la actividad de servidores reales y, opcionalmente, un factor de peso de administrador asignado, cuando se enrutan las solicitudes de servicios. El uso de pesos asignados otorga prioridad arbitraria a las máquinas individuales. Esta forma de programación, permite crear un grupo de servidores reales, mediante una variedad de combinaciones de hardware y software y permite al enrutador activo, cargar equitativamente cada servidor real.
El mecanismo de programación para la adición del equilibrador de carga es proporcionado por una serie de parches de kernel denominados módulos de Servidor virtual IPr o IPVS. Estos módulos habilitan el cambio dela capa de transporte capa 4 (L4), la cual está diseñada para funcionar bien con múltiples servidores en una dirección IP individual.
Para rastrear y dirigir paquetes de forma eficiente a los servidores reales, IPVS crea una tabla IPVS en el kernel. Esta tabla es utilizada por el enrutador activo LVS para redirigir las peticiones de una dirección de servidor virtual y las respuestas de los servidores reales en el grupo.La tabla IPVS es actualizada constantemente por una herramienta denominada ipvsadm —, la cual adiciona o retira miembros de clúster según su disponibilidad.
1.3.1. Programación de algoritmos
La estructura que la tabla IPVS adquiera, depende del algoritmo de programación que el administrador elige para un servidor determinado. Para otorgar un máximo de flexibilidad en los tipos de servicios que puede agrupar y programar estos servicios, Red Hat Enterprise Linux proporciona los algoritmos programados que aparecen a continuación. Para obtener más información sobre cómo asignar algoritmos de programación, consulte la Sección 4.6.1, “La subsección VIRTUAL SERVER”.
- Programación Round-robin
- Distribuye en secuencia cada solicitud alrededor del grupo de los servidores reales. Al usar este algoritmo, todos los servidores reales se manejan del mismo modo, independiente de su capacidad o carga. Este modelo de programación es similar a DNS Round-robin, pero es más granular debido a que es una conexión de red y no se basa en host. La programación Round-Robin de adición de carga no experimenta los desequilibrios causados por solicitudes DNS en caché.
- Programación Round-robin ponderada
- Distribuye en secuencias cada solicitud alrededor del grupo de servidores reales, pero provee más tareas a los servidores con mayor capacidad. La capacidad es indicada por el factor de peso asignado al usuario y se ajusta de arriba a abajo y de abajo a arriba gracias a la información de carga dinámica. Consulte la Sección 1.3.2, “Peso de servidor y programación” para obtener más información sobre cómo ponderar servidores reales.El programador Round-robin ponderado es la elección preferida cuando hay diferencias significativas en la capacidad de servidores reales en el grupo. Sin embargo, si la carga de solicitudes varía dramáticamente, el servidor con más capacidad respondería más de las solicitudes que le corresponden.
- Least-Connection
- Distribuye más solicitudes a los servidores reales que tienen menos conexiones activas. Porque hace seguimiento de conexiones en vivo a los servidores reales a través de la tabla IPVS. least-connection es un tipo de algoritmo de programación dinámico, lo cual lo convierte en una elección ideal cuando hay un alto grado de variaciones en la carga de solicitudes. Se ajusta mejor para un grupo de servidores reales en donde cada nodo de miembro tenga aproximadamente la misma capacidad. Si un grupo de servidores tiene diferentes capacidades, la programación least-connection es la mejor opción.
- Weighted Least-Connections (default)
- Distribuye más solicitudes a los servidores con menos conexiones activas en relación con sus capacidades. La capacidad es indicada por el peso asignado al usuario y se ajusta de arriba a abajo y de abajo a arriba , mediante la información de carga dinámica. La adición de ponderación hace que este algoritmo sea ideal cuando la infraestructura contiene hardware de capacidades de hardware variante. Para más información sobre ponderación de servidores reales, consulte la Sección 1.3.2, “Peso de servidor y programación” .
- Locality-Based Least-Connection Scheduling
- Distribuye más solicitudes a los servidores que tengan un número menor de conexiones activas con relación a las IP de destino. Este algoritmo se utiliza en clúster de servidores proxy-cache. Sirve para asignar los paquetes a una dirección IP al servidor para esa dirección, a menos que ese servidor esté por encima de su capacidad y tenga un servidor en su media carga, en este caso se asigna la dirección IP al servidor real menos cargado.
- Locality-Based Least-Connection Scheduling con programación de replicación
- Distribuye más solicitudes a los servidores que tienen menos conexiones activas en relación con sus IP de destino. Este algoritmo también está diseñado para ser utilizado en un clúster de servidores proxy-cache. Se diferencia de Locality-Based Least-Connection Scheduling al asignar la dirección IP de destino a un subconjunto de nodos de servidores reales. Las solicitudes se envían luego al servidor en este subconjunto con el número más bajo de conexiones. Si todos los nodos para la dirección IP de destino sobrepasan su capacidad, se replica un servidor para esa dirección IP de destino al adicionar el servidor real con el número más bajo de conexiones posibles de todo el grupo de servidores al subconjunto de servidores reales para esa IP de destino. El nodo con mayor carga se saca del subconjunto de servidores reales para evitar un exceso de replicación.
- Destination Hash Scheduling
- Distribuye las solicitudes al grupo de servidores reales al buscar la IP de destino en una tabla hash estática. Este algoritmo está diseñado para ser utilizado en un clúster de servidor proxy-cache.
- Source Hash Scheduling
- Distribuye todas las solicitudes de acuerdo con un diccionario estático de direcciones IP. Este algoritmo se utiliza en enrutadores LVS con varios cortafuegos.