Tema anterior: Conmutadores

Tema siguiente: L3LB: equilibrador de carga de TCP/UDP


HALB: equilibrador de carga HTTP dependiente de la sesión basado en proxy de HA

Última versión: 2.0.2-1

HALB: equilibrador de carga HTTP dependiente de la sesión

Vista rápida

Catálogo

Sistema

Categoría

Conmutadores

Volúmenes de usuario

no

Memoria mín.

96 MB

SO

Linux

Restricciones

no

Descripción general

HALB es un conmutador para distribuir cargas de trabajo a varios servidores Web del mismo tipo o diferentes. HALB se basa en el paquete de software de equilibrio de carga TCP/HTTP de HAProxy, el cual se ha diseñado para ser sumamente rápido consumiendo poco recursos.

HALB aplica funciones de equilibrio de carga mediante varios algoritmos. Realiza una operación sencilla de equilibrado por turnos que iguala la carga para los servidores de back-end. También admite sesiones persistentes vinculando el cliente a un servidor Web de back-end concreto con cookies de sesión o usando la dirección IP de origen de la solicitud como clave. Mientras se usen cookies de sesión, las nuevas sesiones que no tengan cookies de sesión se distribuirán mediante el algoritmo de operación por turnos. HALB admite sesiones con varias cookies y modifica y/o hace un seguimiento sólo de las necesarias, dejando las otras intactas. Se puede vincular cualquier sesión concreta o cliente a un servidor Web de back-end concreto o a una aplicación mediante la asociación de cookies. HALB puede modificar de forma transparente las cookies existentes para clientes que no admitan solicitudes con varias cookies.

HALB controla constantemente el estado de todos los servidores Web de back-end. Los controles de estado realizados por HALB pueden incluir una comprobación de la conexión TCP sencilla o una solicitud HTTP más compleja (especificada en el límite de HALB). En el caso de que HALB detectara un error del servidor utilizando el método de control de estado parametrizado, HALB pasará el tráfico a un servidor alternativo. Si el servidor fallido finalmente se recupera, HALB puede volver a traspasar el tráfico al servidor recuperado.

HALB 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, HALB 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.

HALB mantiene estadísticas detalladas que incluyen el estado del back-end, el número de solicitudes procesadas por servidor, el número de errores que se han producido, etc. Las estadísticas se comunican a través del terminal mon y también se muestran contadores aparte a través del terminal ui, como una GUI accesible mediante explorador.

HALB se ha diseñado para ser sumamente rápido utilizando muy pocos recursos. Bajo condiciones normales, HALB 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.

Recursos

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 HALB no aumenta el rendimiento ni el tiempo de respuesta. HALB es un dispositivo vinculado al ancho de banda/CPU.

Terminales

Nombre

Dir.

Protocolo

Descripción

in

in

HTTP

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.

ui

in

HTTP

Sirve solicitudes HTTP procedentes de clientes Web. Sirve a los protocolos HTTP/1.1 y 1.0.

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

Propiedades generales

Nombre

Tipo

Descripción

mode

Cadena

Especifica el modo de operación y una forma de usar la llamada "cookie de sesión" para identificarse en la sesión. Los valores válidos son:
passive: la cookie no se modifica. Se espera que un valor de cookie concreto sea siempre único y que otro servidor no utilice nunca el mismo valor.
sync: la cadena de la cookie en la respuesta HTTP de un servidor se modifica de manera que sea única para el terminal del que proviene la respuesta (agregando un ID de terminal de 4 caracteres al valor de la cookie). El "ID del terminal" se elimina antes de reenviar una solicitud a un servidor en uno de los terminales outX. Además de insertar el ID del terminal, la asignación entre los valores de la cookie y los terminales de salida es la misma que para el valor "passive", es decir, se compara el valor de la cookie entera.
insert: el equilibrador de carga inserta él mismo una cookie en las respuestas devueltas al cliente que está como entrante, así cuando el cliente envíe solicitudes posteriormente con esa cookie, se dirigirán al mismo servidor que la primera solicitud de ese cliente. La cookie que inserta HALB no tiene una fecha de caducidad, lo que significa que el software del cliente no la guardará permanentemente.
source: la dirección IP origen de la solicitud se utiliza para vincular la sesión a un servidor Web de back-end concreto. Se ignora la propiedad de la cookie.
Valor predeterminado: passive.

cookie_name

Cadena

El nombre de la cookie que se usa para identificar una sesión. Para los modos pasivos ("passive" e "sync", consulte la propiedad de modo abajo). Éste es el nombre de la cookie que han usado los servidores de back-end conectados a out1 - out8 para identificar sesiones de cliente. En el modo de inserción, éste es el nombre de la cookie que HALB debe insertar en las respuestas HTTP de manera que cada cliente se "vincule" a un solo servidor. Si esta propiedad se establece como vacía, no se realiza ningún seguimiento de sesión y todas las solicitudes se distribuyen de forma ordenada y sencilla. En el modo de origen se hace caso omiso de esto.
Valor predeterminado: vacío

cookie_check_length

Entero

Determina cuántos bytes del valor de la cookie se utilizan como clave única en el modo pasivo de funcionamiento para hacer coincidir la sesión con el servidor Web de back-end. El valor predeterminado 10 suele ser suficiente para todas las aplicaciones Java y PHP comunes. Este valor debe ser siempre igual o inferior a la longitud del valor de la cookie.
Valor predeterminado: 10.

max_connections

Entero

Número máximo de conexiones activas simultáneas que gestiona el equilibrador de carga. Cuando se alcanza este número, se siguen aceptando nuevas conexiones, pero se retrasa su procesamiento hasta que se cierre otra conexión. En el inicio, HALB 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 igual a 0, se utiliza el valor calculado. Observe que 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: el hecho de establecer un número bajo (o de tener poca memoria) afecta a la respuesta solamente 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 hace que muchas solicitudes permanezcan abiertas al mismo tiempo.
Valor predeterminado: 0

backup_outputs

Cadena

Una lista delimitada por espacios o comas (out1 - out8) de salidas que se consideran copias de seguridad. 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 back-end no disponible o de tiempo de espera agotado.
Valor predeterminado: vacío

Propiedades de tiempo de espera

Nombre

Tipo

Descripción

timeout

Entero

Tiempo de espera en segundos para que caduquen las sesiones inactivas. Si este valor se establece en cero, las sesiones inactivas no caducarán. Si se establece en un valor distinto de cero, las sesiones inactivas reanudadas después de los segundos del tiempo de espera se consideran caducadas y las solicitudes que llevan la cookie "forgotten" se tratan como si no tuvieran ninguna cookie y se dirigen a un servidor aleatorio, mediante el método de operación por turnos habitual. Esta propiedad es solamente válida para el modo pasivo; se hace caso omiso de ella en el resto de los modos.
Valor predeterminado: 0

client_timeout

Entero

Tiempo de espera en segundos para esperar una solicitud de un cliente después de haber establecido la conexión.
Valor predeterminado: 150.

server_timeout

Entero

Tiempo de espera en segundos para esperar una contestación de un servidor Web de back-end después de haber establecido la conexión.
Valor predeterminado: 150.

conn_timeout

Entero

Tiempo de espera en segundos para establecer cualquier conexión tcp. Esto incluye los controles de estado. Se debe prestar gran atención a esta configuración, ya que si en caso de que la carga sea elevada se agota el tiempo de espera de los controles de estado debido a un valor demasiado bajo, HALB comenzará a desactivar las salidas. No se recomienda establecer un valor inferior a 20 segundos.
Valor predeterminado: 20.

Propiedades de los controles de estado

Nombre

Tipo

Descripción

healthcheck_url

Cadena

URL que se utiliza para ejecutar el control de estado de los servidores Web de back-end en los métodos de control de estado http_get y http_head. Se puede especificar como una URL completa (http://host.name/file/to/check/for.php) o como una ruta relativa (/file/to/check/for.php). Si se especifica como una URL, HALB utiliza el protocolo HTTP/1.1 mientras realiza controles del estado mediante el uso del nombre de host extraído de UR en un encabezado Host:. Esto permite usar hosts virtuales. Si se especifica como una ruta relativa, HALB utiliza el protocolo HTTP/1.0 y busca el documento especificado por esta propiedad. Si esta propiedad está vacía, HALB busca la raíz predeterminada "/" utilizando el protocolo de HTTP/1.0.
Valor predeterminado: vacío

healthcheck_agent

Cadena

Cadena que se utiliza como un identificador de agente para los métodos de control de estado http_get y http_head. Si está vacío, se utiliza "HALB-health-check".
Valor predeterminado: vacío

healthcheck_method

Cadena

Método utilizado para el control de estado de los servidores Web de back-end.
tcp_connect: HALB se conecta al puerto 80 del servidor Web. Si la conexión se ha establecido correctamente, HALB supone que el servidor Web está operativo. Este es el método más rápido y que requiere menos recursos.
http_head: HALB utiliza el método HEAD para solicitar el documento especificado mediante la propiedad healthcheck_url. Esto es más lento que tcp_connect y requiere más recursos tanto en HALB como en el servidor Web, pero es más fiable. Si se recibe un código de estado 2xx o 3xx desde un servidor Web, el servidor es operacional.
http_get: HALB utiliza el método GET para solicitar el documento especificado mediante la propiedad healthcheck_url. Este es el método más lento y que requiere mayor cantidad de recursos, pero es más fiable. Si se recibe un código de estado 2xx o 3xx desde un servidor Web, significa que el servidor es operacional. Si se define la propiedad healthcheck_regexp, HALB descarga el documento incluyendo todos los encabezados HTTP y el código de estado del servidor, y busca coincidencias con el valor de healthcheck_regexp. Si se encuentra alguna coincidencia, el servidor de back-end se considera operativo; en caso contrario, se considerará que está desactivado.
Valor predeterminado: tcp_connect.

healthcheck_regexp

Cadena

Cadena de prueba utilizada con el modo de control de estado http_get. Los valores cortos o comunes (por ejemplo, OK) probablemente generarán falsos positivos. Esta cadena es una expresión normal de Perl. Aquí puede encontrar más detalles sobre las expresiones normales de Perl.
Valor predeterminado: vacío

healthcheck_interval

Entero

Intervalo entre los controles de estado de los servidores Web de back-end (especificado en segundos).
Valor predeterminado: 20 segundos.

Propiedades de interfaz de servicio de UI/Web

Nombre

Tipo

Descripción

username

Cadena

Nombre de usuario para acceder a la GUI de HALB a través del terminal ui. Si no se especifica ningún valor, no se realizará ninguna autenticación.
Valor predeterminado: vacío

password

Cadena

Contraseña para acceder a la GUI de HALB a través del terminal ui. La contraseña se ignora si el nombre de usuario está vacío.
Valor predeterminado: vacío

ctl_port

Entero

Puerto que se usa para acceder a la interfaz de control de servicios Web a través del terminal ctl.
Valor predeterminado: 80.

ui_port

Entero

Puerto que se usa para acceder a la GUI de estadísticas de tiempo de ejecución de HALB a través del terminal ui.
Valor predeterminado: 80.

Contadores personalizados

El dispositivo HALB informa sobre los siguientes contadores personalizados a través del terminal "mon".

Los contadores siguientes pertenecen al grupo de contadores de HALB. 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.

outX_queue_max

Máximo histórico de solicitudes en cola simultáneas del terminal outX.

outX_sessions_active

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.

outX_errors

Número de controles de estado incorrectos del terminal outX.

queue

Longitud de la cola actual, acumulada para out1 - out8.

queue_max

Máximo histórico de solicitudes en cola simultáneas, acumulado para out1 - out8.

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.

errors

Número total de errores de control de estado, acumulado para out1 - out8.

Rendimiento

Tasa de solicitudes

HALB 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

HALB enruta un mínimo de 15 MBytes por segundo

Conexiones simultáneas

HALB 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 solicitudes HTTP 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. HALB se ha sometido a pruebas para admitir más de 15.000 transferencias activas simultáneas.

Mensajes de error

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.

HALB 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.

HALB 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.

HALB dio error al detectar el número de CPU disponibles. Póngase en contacto con Soporte técnico de CA.

Error: the healthcheck_url, when specified as an URL, must begin with http:// and contain a full path to the document ( ex: http://host.name.domain/file/to/check/for.html ).

El valor de la propiedad healthcheck_url es incorrecto. Debería empezar con "http://" y contener una ruta completa, p. ej.: http://dominio.nombre.host/archivo/que/comprobar.html

Error: unknown health check method healthcheck_method specified.

El valor de la propiedad healthcheck_method es incorrecto. Debería ser uno tcp_connect, http_head o http_get.

Error: invalid operation mode specified

El modo especificado no es válido. Debería ser uno passive, sync, insert o source.

Error: ui_port value must be between 1 and 65535.

El valor de ui_port debe ser mayor que 1 y menor que 65535.

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 HALB, please see '/var/log/appliance/log' log file for details.

Se ha producido un error del sistema al iniciar HALB. 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.

Error: failed to initialize external health checker, please contact CA Technologies support.

Se ha producido un error al iniciar el comprobador de estado externo compatible con expresiones regulares. Póngase en contacto con Soporte técnico de CA.

Descripción general

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.

Protocolo

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.

Llamadas de control

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:

HALB 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 HALB 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.

Activación de los terminales de salida

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:

HALB 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 HALB 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.

Recuperación del estado del terminal de salida

Solicitud: /api/status (devuelve el estado de todos los terminales de salida)

Respuesta:

HALB 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 correspondiente 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 HALB.

Ejemplo de salida de estado:

{
   "status":
   {
   "code": 0,
   "message": "",
   "out1": "up",
   "out2": "up",
   "out3": "down",
   "out4": "up"   
   }
}
GUI Web

HALB muestra una GUI de estadísticas a través del terminal ui. Hay disponible distinta información de tiempo de ejecución en esta GUI:

Parameter

Descripción

nbcproc

Número de CPU disponibles para HALB.

uptime

Tiempo de actividad de HALB.

system limits

Límites de recursos que el sistema operativo impone a HALB.

memmax

Memoria máxima disponible para HALB.

ulimit-n

Cantidad máxima de archivos abiertos simultáneamente. Los socket de red se consideran archivos.

maxsock

Cantidad máxima de sockets abiertos simultáneamente.

maxconn

Cantidad máxima de conexiones simultáneas. Cuando se alcanza este número, todas las conexiones nuevas se colocan en cola de espera.

current conns

Número actual de conexiones activas.

Server Status

Estado de un servidor de back-end. UP: el servidor está operativo, DOWN: el servidor no está operativo.

Queue Curr.

Longitud de la cola de solicitud actual del servidor de back-end.

Queue Max.

Longitud máxima alcanzada de la cola de solicitud actual del servidor de back-end.

Sessions Curr.

Número de sesiones actualmente activas.

Sessions Max.

Número máximo alcanzado de sesiones actualmente activas.

Sessions Cumul.

Número total de sesiones completadas.

Errors Conn.

Número de errores ocurridos mientras se realiza la conexión al servidor de back-end.

Errors Resp.

Número de errores 5xx comunicados por el servidor de back-end.

Errors Check

Número de controles de estado erróneos de un servidor de back-end.

Errors Down

Número de veces que el servidor de back-end pasó del estado UP al DOWN.

Equilibrio de carga de aplicaciones lentas de contenido dinámico

Si su aplicación requiere realizar muchos cálculos para producir cada página, por naturaleza podrá servir a una cantidad limitada de clientes simultáneamente. Sin embargo, si el origen de datos es lo bastante rápido o se puede replicar y servir desde varios servidores, se podrá utilizar HALB para aumentar el número de conexiones que se pueden gestionar simultáneamente. Un ejemplo típico puede ser servir mapas desde una base de datos de cartografía. La base de datos lee rápidamente, pero para cargar cada página es necesario procesar el mapa como un archivo de imagen.

El diagrama a continuación muestra cómo se puede utilizar HALB para emplear varias CPU para servir el mismo contenido, proporcionando una respuesta más rápida en caso de carga elevada.

Cómo se puede utilizar HALB para hacer que varias CPU sirvan el mismo contenido

Configuración de mantenimiento de sesiones en el servidor: Bugzilla

Los ejemplos de configuración enumeran solamente propiedades establecidas como valores no predeterminados.

Propiedad

Valor

Notes

cookie_name

Bugzilla_logincookie

Este es el nombre utilizado por Bugzilla para su cookie de inicio de sesión.

mode

passive

Bugzilla emite cookies únicas para cada combinación de dirección IP/nombre de usuario, por lo tanto dos instancias de Bugzilla que se conecten a la misma base de datos nunca devolverán la misma cookie. Es así pues seguro utilizar el modo pasivo más sencillo. Para otros tipos de servidor, la configuración de sync puede ser más apropiada.

Equilibrio de carga persistente para servidores sin sesión mediante el uso de cookies

En el caso de servidores que no tienen sesiones pero que guardan algunos datos en caché y que se podrían beneficiar de que se dirigiera un cliente siempre al mismo servidor, la función de control de cookies pasivo no funciona, ya que no hay ninguna cookie que controlar. En este caso se utiliza el modo de inserción, como se muestra en la tabla:

Propiedad

Valor

Notes

cookie_name

session_id

Nombre arbitrario pero que ayuda a garantizar que no coincida con un nombre que utilicen los servidores para otra cosa.

mode

insert

HALB inserta un encabezado Set-Cookie:.

Equilibrio de carga con control del estado de la infraestructura

Un control de estado correcto de un servidor Web de back-end no garantiza que los datos devueltos sean válidos o que la base de datos de la cual depende esté todavía operativa. Una característica distintiva de HALB es la capacidad de utilizar no solamente el sistema convencional de control de estado (conectarse simplemente al puerto 80 de un servidor Web), sino también más métodos avanzados, como http_head y http_get. La utilización correcta de esta posibilidad garantiza no solamente la disponibilidad de servidores Web de back-end, sino también sus servidores de almacenamiento, dependencias, bases de datos, aplicaciones. En este ejemplo se usan dos funciones de control de estado de HALB. Primero se crea un archivo especial health_check.php y se especifica su URL completa en la propiedad healthcheck_url. Cuando se accede a este archivo, evalúa la disponibilidad de los servidores de bases de datos, aplicaciones o NAS y devuelve un documento de estado con el texto ALL_SERVICES_ARE_OK. Este valor se especifica en la propiedad healthcheck_regexp.

El dispositivo HALB comprueba todas las salidas (out1 - out8) con solicitudes GET de HTTP/1.1 mediante el sitio en el encabezado Host: HTTP y /health_check.php como una URL del documento. Estos valores se extraen de la propiedad healthcheck_url (http://site/health_check.php). En el documento, recuperado de cada servidor de back-end, HALB busca el valor de healthcheck_regexp (ALL_SERVICES_ARE_OK). Si se encuentra esta línea, el servidor se considera operativo/activo; de lo contrario, el terminal de salida está desactivado. Si la salida está desactivada y más tarde el control de estado de HALB se realiza correctamente, la salida de vuelve a activar.

Si no se usan hosts virtuales, o si el servidor de back-end no admite el protocolo HTTP/1.1, el valor healthcheck_url se puede especificar de forma simple (/health_check.php). En este caso, HALB utiliza el protocolo HTTP/1.0 y no especifica el encabezado Host: HTTP.

Propiedad

Valor

Notes

healthcheck_mode

http_get

HALB utiliza el modo de control de estado http_get.

healthcheck_url

http://site/health_check.php

La URL que HALB comprueba.

healthcheck_regexp

ALL_SERVICES_ARE_OK

 

Uso de servidores de copia de seguridad

Se usan servidores de copia de seguridad cuando ninguno de los servidores de back-end está disponible y se debe entregar al cliente un mensaje al respecto o una página de redireccionamiento, en lugar de errores o finalización del tiempo de espera. En el ejemplo a continuación, se ha configurado un servidor de copia de seguridad como servidor de último recurso que servirá solamente una página estática que indicará a los clientes que se están llevando a cabo tareas técnicas de mantenimiento. Una vez quedan no operativos los cuatro servidores srv1 - srv4, se sirve el contenido del servidor de copia de seguridad.

Uso de servidores de copia de seguridad

Propiedad

Valor

Notes

backup_outputs

out8

 

Uso de la interfaz de servicio Web de control

La interfaz de servicio Web de control permite activar o desactivar dinámicamente y mediante programación los terminales de salida de HALB. Se puede utilizar también para recuperar el estado actual de todos los terminales de salida. Esta interfaz se muestra a través del terminal ctl de HALB.

El diagrama a continuación muestra un entorno agrupado con varios servidores Web y de bases de datos. Todos los servidores Web y de bases de datos tienen una conexión de evaluación al terminal ctl de HALB. Si un servidor Web detecta un problema con una base de datos, de conectividad o de rendimiento, puede desactivar el terminal de salida correspondiente y de esta forma indicar a HALB que deje de dirigir tráfico al servidor Web. De forma parecida, cualquier servidor de base de datos puede desactivar los terminales de salida de HALB y de esta forma desactivar todo el tráfico de entrada. Después de solucionar el problema, se podrán volver a activar los terminales de salida.

Un entorno agrupado con varios servidores Web y de base de datos

Notes

Software de fuente abierta y de terceros utilizado dentro del dispositivo

HALB 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