Última versión: 2.0.2-1

|
Vista rápida |
|
|
Catálogo |
Sistema |
|
Categoría |
Conmutadores |
|
Volúmenes de usuario |
no |
|
Memoria mín. |
96 MB |
|
SO |
Linux |
|
Restricciones |
no |
L3LB es un conmutador para distribuir sesiones TCP/UDP entrantes a servidores del tipo mismo o diferentes. La funcionalidad de equilibrio de carga TCP se basa en el paquete de software de equilibrio de carga de TCP/HTTP de HAProxy; el equilibrio de carga UDP se basa en Netfilter.
L3LB equilibra la carga del tráfico de entrada mediante varios algoritmos diferentes. Para el tráfico TCP, L3LB realiza una operación sencilla por turnos para equilibrar la carga, igualando la carga para los servidores de back-end. L3LB también es compatible con sesiones persistentes TCP, vinculando el cliente a un servidor de back-end concreto usando la dirección IP de origen de la solicitud como clave. Para el tráfico UDP, L3LB utiliza el algoritmo de operación por turnos (este es el único algoritmo disponible para el tráfico UDP).
L3LB controla constantemente el estado de todos los servidores de back-end. Mientras se está en el modo TCP, los controles de estado que realiza L3LB consisten en controles sencillos de la conexión TCP. En el caso de que L3LB detectara un error del servidor utilizando el método de control de estado parametrizado, L3LB pasará el tráfico a un servidor alternativo. Si el servidor fallido finalmente se recupera, L3LB puede volver a traspasar el tráfico al servidor recuperado. Para el modo UDP se utiliza un método PING de ICMP para verificar la disponibilidad de un servidor de back-end.
L3LB muestra una interfaz del servicio Web en su terminal ctl. Esta interfaz permite que un usuario active/desactive los terminales de salida out1 - out8 pragmáticamente y también que recupere el estado de todos los terminales. Esto es útil en aquellos casos en los que se produce algún tipo de error de back-end (es decir, en un dispositivo de base de datos o de almacenamiento) donde la propia aplicación puede desactivar automáticamente el tráfico a un conjunto específico de servidores. En este caso, L3LB es incapaz de detectar por sí mismo este tipo de error; así pues, será la aplicación la que tendrá que detectar el error y desactivar el conjunto correspondiente de servidores de back-end.
L3LB se ha diseñado para ser sumamente rápido utilizando muy pocos recursos. Bajo condiciones normales, L3LB consume sobre 25 kB de memoria en cada sesión, o 1 GB en 40.000 sesiones simultáneas, y procesa hasta 6.000 solicitudes por segundo.
|
Recurso |
Mínimo |
Máximo |
Predeterminado |
|
CPU |
0.1 |
16 |
0.4 |
|
Memoria |
96 MB |
32 GB |
96 MB |
|
Ancho de banda |
1 Mbps |
2 Gbps |
250 Mbps |
La cantidad de memoria proporcionada a L3LB no aumenta el rendimiento ni el tiempo de respuesta. L3LB es un dispositivo vinculado al ancho de banda/CPU.
|
Nombre |
Dir. |
Prot. |
Descripción |
|
in |
in |
Cualquiera |
Entrada común. Las solicitudes TCP recibidas se dirigen a una de las salidas mediante información de sesión basada en el origen o en la selección de una operación por turnos. |
|
ctl |
in |
HTTP |
Terminal de control que se usa para activar o desactivar las salidas y recuperar el estado del terminal de salida. |
|
out1-out8 |
Saliente |
Cualquiera |
Salidas equilibradas. Se puede dejar sin conexión cualquiera de estas salidas; el tráfico sólo se distribuye a las salidas activadas y conectadas. De forma predeterminada, todos los terminales están activados. |
|
mon |
Saliente |
CCE |
Se usa para enviar estadísticas de uso de recursos y rendimiento. |
Propiedades generales
|
Nombre |
Tipo |
Descripción |
|
mode |
Cadena |
Especifica el modo de operación. Los valores válidos son: |
|
ports |
Cadena |
Una lista delimitada por comas o espacios de puertos e intervalos de puertos que L3LB envía a servidores de back-end. Se especifican intervalos de puertos como puerto_inferior:puerto_superior con guión ("-") o dos puntos (":") como separador entre ellos. Ejemplo: 80,81,90-99 110:120 140 141. Se coloca el tráfico recibido en un puerto sin especificar. |
|
max_connections |
Entero |
El número máximo de conexiones simultáneamente activas que L3LB puede gestionar. Cuando se alcanza este número, se siguen aceptando nuevas conexiones, pero se retrasa su procesamiento hasta que se cierre otra conexión. Al iniciarse el dispositivo, L3LB determina automáticamente el número máximo de conexiones basándose en la memoria disponible, lo compara con el valor de esta propiedad y utiliza el valor más bajo. Si esta propiedad es 0, se utiliza el valor calculado. Ni la memoria disponible ni una configuración explícita de esta propiedad tienen un efecto directo sobre el rendimiento del equilibrador o su tasa de solicitud máxima. Establecer un número bajo (o tener poca memoria) afecta a la respuesta sólo si los servidores de back-end están realizando operaciones largas para cada solicitud (por ejemplo, búsquedas en una base de datos), lo que haría que muchas solicitudes permaneciesen abiertas al mismo tiempo. Esta propiedad es sólo válida para los modos de operación tcp_roundrobin y tcp_source. |
|
backup_outputs |
Cadena |
Una lista delimitada por espacios o comas (out1 - out8) de salidas que se consideran servidores de copia de seguridad. No se admiten intervalos de salida (out1-out3). El tráfico se dirige a los servidores de copia de seguridad solamente si ninguno de los servidores de back-end está disponible. La finalidad de estos servidores de copia de seguridad es notificar a los clientes que algo está mal o redirigirlos, en lugar de generar errores de servidor de back-end no disponible o de tiempo de espera agotado. Ejemplo: out1,out2,out3. Si está vacío, no se usa ningún servidor de copia de seguridad. |
Propiedades de los controles de estado
Para los modos de operación tcp_roundrobin y tcp_source se usa una conexión TCP sencilla al primer puerto especificado en la propiedad de puerto. En el modo de operación udp_roundrobin se utiliza siempre un método ping de ICMP.
|
Nombre |
Tipo |
Descripción |
|
healthcheck_interval |
Entero |
Intervalo entre controles de estado; especificado en segundos. No se realiza ninguna comprobación si esta propiedad es 0. |
Propiedades de tiempo de espera
Estas propiedades son solamente válidas para los modos de operación tcp_roundrobin y tcp_source.
|
Nombre |
Tipo |
Descripción |
|
client_timeout |
Entero |
Tiempo de espera en segundos para esperar una solicitud de un cliente después de haber establecido la conexión. |
|
server_timeout |
Entero |
Tiempo de espera en segundos para esperar una contestación de un servidor de back-end después de haber establecido la conexión. |
|
conn_timeout |
Entero |
Tiempo de espera en segundos para establecer cualquier conexión TCP desde dentro de L3LB a través de uno de sus terminales (se incluyen los controles de estado). Tenga en cuenta que cuando L3LB tiene una carga de red importante, las comprobaciones del estado pueden agotar el tiempo de espera por error cuando este valor se establece en un valor muy bajo (en estos casos L3LB comenzará a desactivar salidas que pueden generar un funcionamiento inesperado de las aplicaciones). No se recomienda establecer esta propiedad en un valor inferior a 20 segundos. |
Propiedades de interfaz de servicios Web
|
Nombre |
Tipo |
Descripción |
|
ctl_port |
Entero |
Puerto que se usa para acceder a la interfaz de control de servicios Web a través del terminal ctl. |
El dispositivo L3LB informa sobre los siguientes contadores personalizados a través del terminal "mon".
Los contadores siguientes pertenecen al grupo de contadores de L3LB. X puede tener un valor comprendido entre 1 y 8.
|
Nombre del contador |
Descripción |
|
outX_status |
Estado del terminal de salida outX: 0: activado y operativo, 1: activado y no operativo, 100: desconectado. |
|
outX_queue |
Número de solicitudes en cola del terminal outX. No se informa de este contador mientras se encuentra en modo udp_roundrobin. |
|
outX_queue_max |
Máximo histórico de solicitudes en cola simultáneas del terminal outX. No se informa de este contador mientras se encuentra en modo udp_roundrobin. |
|
outX_sessions |
Número de sesiones activas del terminal outX. |
|
outX_sessions_max |
Número máximo de sesiones activas simultáneas del terminal outX. |
|
outX_sessions_total |
Número de sesiones completadas del terminal outX. No se informa de este contador mientras se encuentra en modo udp_roundrobin. |
|
outX_errors |
Número de controles de estado incorrectos del terminal outX. |
|
queue |
Longitud de la cola actual, acumulada para out1 - out8. No se informa de este contador mientras se encuentra en modo udp_roundrobin. |
|
queue_max |
Máximo histórico de solicitudes en cola simultáneas, acumulado para out1 - out8. No se informa de este contador mientras se encuentra en modo udp_roundrobin. |
|
sessions_active |
Número de sesiones activas, acumulado para out1 - out8. |
|
sessions_max |
Número máximo histórico de sesiones activas, acumulado para out1 - out8. |
|
sessions_total |
Número de sesiones completadas, acumulado para out1 - out8. No se informa de este contador mientras se encuentra en modo udp_roundrobin. |
|
errors |
Número total de errores de control de estado, acumulado para out1 - out8. |
Tasa de solicitudes
L3LB enruta un mínimo de 6.000 transacciones (pares solicitud/respuesta) por segundo, según el tamaño del documento y el ancho de banda de la red disponible.
Rendimiento de los datos
L3LB enruta un mínimo de 15 MBytes por segundo
Conexiones simultáneas
L3LB admite un mínimo de 2.000 solicitudes simultáneas pendientes. (Una "solicitud pendiente" es una conexión TCP abierta desde el cliente, donde hay una o varias sesiones TCP sin completar en curso). El número máximo de conexiones simultáneas depende de la memoria libre disponible y puede tener un valor máximo de 40.000. L3LB se ha sometido a pruebas para admitir más de 15.000 transferencias activas simultáneas.
En caso de error al iniciar el dispositivo, pueden aparecer los errores siguientes en el registro del sistema:
|
Mensaje de error |
Descripción |
|
Error: unable to determine appliance memory configuration, please contact CA Technologies support. |
L3LB dio error al detectar la cantidad de memoria disponible. Póngase en contacto con Soporte técnico de CA. |
|
Error: failed to create the HAProxy config file, please contact CA Technologies support. |
L3LB dio error al crear el archivo de configuración de HAProxy. Póngase en contacto con Soporte técnico de CA (posiblemente se deba a que queda poco espacio en el disco). |
|
Error: failed to determine number of available CPUs, please contact CA Technologies support. |
L3LB dio error al detectar el número de CPU disponibles. Póngase en contacto con Soporte técnico de CA. |
|
Error: invalid operation mode specified |
Modo especificado no válido. Debería ser tcp_roundrobin, tcp_source o udp_roundrobin. |
|
Error: ctl_port value must be between 1 and 65535. |
El valor de ctl_port debe ser mayor que 1 y menor que 65535. |
|
Error: failed to start L3LB, please see '/var/log/appliance/log' log file for details. |
Se ha producido un error del sistema al iniciar L3LB. Póngase en contacto con Soporte técnico de CA. |
|
Error: failed to initialize the control web service interface, please contact CA Technologies support. |
Se ha producido un error del sistema mientras se inicializaba la interfaz de servicio Web de control que se muestra en el terminal de control. Póngase en contacto con Soporte técnico de CA. |
|
Error: failed to initialize statistics reporting, please contact CA Technologies support. |
Se ha producido un error del sistema mientras se inicializaba el informe de estadísticas. Póngase en contacto con Soporte técnico de CA. |
|
Error: failed to initialize the user interface terminal, please contact CA Technologies support. |
Se ha producido un error del sistema mientras se inicializaba la interfaz de usuario gráfica que se muestra en el terminal ui. Póngase en contacto con Soporte técnico de CA. |
El terminal ctl (en el puerto configurado) muestra una interfaz de servicio Web de control que permite activar o desactivar los terminales de salida (out1 - out8) y recuperar el estado del terminal actual.
Este protocolo únicamente utiliza el método GET HTTP, ya que sólo proporciona funcionalidad de lectura. Por ello, todos los tipos de solicitudes de protocolo compatibles se pueden definir mediante su URI y la estructura de salida. Los caracteres que el URI deba considerar especiales deberán llevar caracteres de escape mediante la codificación % estándar.
A continuación, se ofrece una descripción de todos los URI compatibles.
Desactivación de los terminales de salida
Hay dos formatos distintos para desactivar la llamada de control en función de cómo se identifique el terminal de salida:
Solicitud: /api/disable?channel=out3 (desactiva el terminal de salida out3)
Solicitud: /api/disable?10.11.12.13 (desactiva el terminal de salida que se conecta al servidor Web con la dirección IP 10.11.12.13)
Respuesta:
L3LB devuelve la estructura siguiente con un código de estado y un mensaje de estado opcional:
{
"status":
{
"code": valor_de_código,
"message": "mensaje_de_estado"
}
}
A continuación se indican los posibles valores de código de estado:
|
Valor de código |
Descripción |
|
0 |
La operación ha tenido éxito y el terminal se ha desactivado. |
|
10 |
La operación no se realizado correctamente; la configuración de L3LB no se ha modificado. La causa más probable es que el terminal ya esté desactivado o que la dirección IP especificada no sea válida. |
|
100 |
Se ha producido un error al procesar la solicitud. Encontrará más detalles en el mensaje de estado. |
Hay dos formatos distintos para activar la llamada de control en función de cómo se identifique el terminal de salida:
Solicitud: /api/enable?channel=out3 (activa el terminal de salida out3)
Solicitud: /api/enable?10.11.12.13 (activa el terminal de salida que está conectado al servidor Web con la dirección IP 10.11.12.13)
Respuesta:
L3LB devuelve la estructura siguiente con un código de estado y un mensaje de estado opcional:
{
"status":
{
"code": valor_de_código,
"message": "mensaje_de_estado"
}
}
A continuación se indican los posibles valores de código de estado:
|
Valor de código |
Descripción |
|
0 |
La operación ha tenido éxito y el terminal se ha activado. |
|
10 |
La operación no se realizado correctamente; la configuración de L3LB no se ha modificado. La causa más probable es que el terminal ya esté activado o que la dirección IP especificada no sea válida. |
|
100 |
Se ha producido un error al procesar la solicitud. Encontrará más detalles en el mensaje de estado. |
Solicitud: /api/status (devuelve el estado de todos los terminales de salida)
Respuesta:
L3LB devuelve la estructura siguiente con un código de estado y un mensaje de estado opcional:
{
"status":
{
"code": valor_de_código,
"message": "mensaje_de_estado",
"terminal_id": "estado_de_terminal",
"terminal_id": "estado_de_terminal",
...
}
}
Sólo se devuelve la información de estado correspondientes a todos los terminales conectados; no se comunica el estado de los terminales desactivados o desconectados.
A continuación se indican los posibles valores de código de estado:
|
Valor de código |
Descripción |
|
0 |
La operación se ha realizado correctamente. |
|
100 |
Se ha producido un error al procesar la solicitud. Encontrará más detalles en el mensaje de estado. |
Los posibles valores de terminal están comprendidos entre out1 y out8.
Los posibles valores de estado son:
|
Valor de estado |
Descripción |
|
up |
El terminal está conectado y activo. |
|
down |
El terminal está inactivo. El servidor Web que está conectado a este terminal está inactivo o ha dado error al realizar el control de estado de L3LB. |
Ejemplo de salida de estado:
{
"status":
{
"code": 0,
"message": "",
"out1": "up",
"out2": "up",
"out3": "down",
"out4": "up"
}
El correo electrónico se ha convertido en una parte importante de los procesos de negocio de hoy en día, por lo que los clústeres de correo Web deben estar disponibles las 24 horas al día los 7 días de la semana. El ejemplo a continuación muestra cómo se pueden utilizar HALB y L3LB conjuntamente para equilibrar la carga y aumentar la disponibilidad de los servidores de correo Web y SMTP. En caso de error, los servidores pueden desactivar las salidas de HALB o L3LB a través de la interfaz ctl. El modo tcp_roundrobin de L3LB se utiliza en este caso.

Raramente un sitio Web moderno sirve solamente contenido estático. Normalmente gran parte de las tareas de procesamiento del lado del servidor se producen en el lado del servidor. Este diagrama de ejemplo muestra una forma de equilibrar la carga de accesos ininterrumpidos desde un clúster de servidores Web a varios servidores de aplicaciones, Apache Tomcat en este caso. El modo de operación tcp_source garantiza la compatibilidad adecuada para las sesiones de servidor Web a servidor de aplicaciones.

Los protocolos de voz sobre IP (VoIP) comunes utilizan UDP como protocolo principal; equilibrar la carga de este tráfico es una tarea crucial para disfrutar de una escalabilidad sencilla en los clústeres de VoIP. En este ejemplo se utiliza el modo de operación udp_roundrobin.

Software de fuente abierta y de terceros utilizado dentro del dispositivo
L3LB utiliza los siguientes paquetes de fuente abierta de terceros, además de los paquetes de fuente abierta de terceros que utiliza su clase base LUX5.
|
Software |
Versión |
Modificado |
Licencia |
Notes |
|
haproxy |
1.2.18 |
No |
GPLv2 |
Página principal |
|
libxml2 |
2.6.26 |
No |
MIT |
N/A |
|
php-thttpd |
2.25b |
No |
BSD |
N/A |
|
libipt_statistic |
1.3.5-1.2.1 |
No |
GPLv2 |
Página principal |
|
iptables |
1.3.5-1.2.1 |
No |
GPLv2 |
Página principal |
La imagen del dispositivo LUX5 se utiliza como la clase base para los dispositivos L3LB.
No se necesita cambiar el tamaño del disco, L3LB está utilizando los valores predeterminados definidos para la clase base LUX5.
El software L3LB se instala en el subárbol /appliance.
Se instalan los siguientes paquetes estándar (del duplicado oficial):
Además, se instalan los siguientes paquetes personalizados (fuentes incluidas).
Contenido del directorio de la versión:
Imagen del dispositivo exportada:
Fuentes:
Pruebas (consulte el plan de pruebas CatSwitchesL3LBTp y las notas de versión CatSwitchesL3LBRelNotes):
L3LB utiliza un solo servicio en segundo plano: el equilibrador de carga de TCP/HTTP de HAProxy (http://haproxy.1wt.eu). Para equilibrar la carga de tcp, solamente se activa el modo de operación TCP.
Se definen un número de oyentes y de back-ends en el archivo de configuración haproxy.cfg, que se crea por el script appliance.sh al inicio del dispositivo mediante los valores de propiedad configurados. Se crea un oyente para el terminal in y se utiliza para todo el tráfico de red entrante que necesita un equilibrado de carga. Se crea otro oyente en la interfaz ui para exportar la GUI de estadísticas al usuario. Se crea otro oyente en la interfaz "lo0" interna de bucle invertido para extraer las estadísticas de tiempo de ejecución y comunicarlas a través del terminal mon. Todos los terminales outX conectados se definen como un back-end, hacia donde se puede reenviar el tráfico de entrada.
El oyente del terminal in recibe una solicitud HTTP y, en función del modo de operación, modifica la cookie en los modos passive, insert y sync. A continuación, la solicitud se reenvía a uno de los servidores de back-end. Si hay una sesión existente para esta solicitud, se reenvía al mismo servidor de back-end de todas las solicitudes anteriores. Si no hay ninguna sesión existente para esta solicitud, el servidor de back-end se selecciona mediante una operación por turnos. Posiblemente la respuesta del servidor se modifica de nuevo y se vuelve a reenviar al cliente.
El script inicial appliance.sh genera el archivo de configuración para HAProxy durante el inicio. Usa las propiedades definidas en /etc/applogic.sh para crear un archivo de configuración /appliance/haproxy.cfg. Se escriben un número de propiedades adicionales, que se calculan en el momento de inicio, en el archivo de configuración (ulimit-n, nbproc, dirección de enlace).
El registro de solicitudes se desactiva en L3LB, solamente se comunican los errores graves al registro del sistema (los demás errores no se registran).
Notes
Software de fuente abierta y de terceros utilizado dentro del dispositivo
L3LB utiliza los siguientes paquetes de fuente abierta de terceros, además de los paquetes de fuente abierta de terceros que utiliza su clase base LUX5.
|
Software |
Versión |
Modificado |
Licencia |
Notes |
|
haproxy |
1.4.9 |
No |
GPLv2 |
Página principal |
|
php-thttpd |
2.25b |
No |
BSD |
N/A |
|
libipt_statistic |
1.3.5-1.2.1 |
No |
GPLv2 |
Página principal |
|
iptables |
1.3.5-5.3.el5_4 |
No |
GPLv2 |
Página principal |
| Copyright © 2012 CA. Todos los derechos reservados. |
|