Tema anterior: RPL: replicador de eventos

Tema siguiente: Puertas de enlace


URLSW: conmutador de puerto de URL

Última versión: 2.0.2-1

URLSW: conmutador de puerto de URL

Vista rápida

Catálogo

Sistema

Categoría

Conmutadores

Volúmenes de usuario

no

Memoria mín.

96 MB

SO

Linux

Restricciones

no

Preguntas o comentarios

Pregunte en el foro

Descripción general del funcionamiento

URLSW es un conmutador que distribuye solicitudes HTTP a distintas salidas según las coincidencias encontradas entre la URI de la solicitud o los encabezados de la solicitud con las reglas, definidas como expresiones regulares, en el límite de dispositivo. Se utiliza URLSW en las aplicaciones que tienen más de un dispositivo de servidor de aplicación o Web para distribuir flexiblemente solicitudes HTTP entre ellas. URLSW funciona de forma similar a su homólogo PS8, pero en un nivel superior: analiza las solicitudes HTTP en lugar de los puertos tcp/udp.

URLSW también tiene un controlador de estado incorporado. El controlador de estado sondea periódicamente los terminales out conectados y determina si los servidores están preparados para procesar las solicitudes. Si cualquiera de los servidores comprobados pasa a estar no operacional, URLSW desactiva automáticamente el flujo de solicitudes para este servidor, con lo que las solicitudes se redirigen al servidor activo más apropiado volviendo a dirigir solicitud a otro servidor en directo más apropiado. Si un servidor que previamente ha estado no operacional se activa, el controlador de estado lo detectará automáticamente y seguirá recibiendo solicitudes.

El conmutador está en cascada. El tráfico entrante que no coincide con ninguna de las expresiones regulares definidas se reenvía a través del terminal aux sin ninguna modificación. Todo el tráfico de entrada recibido en los terminales outX y aux se reenvía de vuelta por el terminal in.

URLSW se utiliza normalmente para enrutar tráfico entrante a distintos dispositivos dentro de una aplicación.

Recursos

Recurso

Mínimo

Máximo

Predeterminado

Probado

CPU

0.1

2

0.1

2

Memoria

96 MB

160 MB

96 MB

128 MB

Ancho de banda

1 Mbps

2 Gbps

250 Mbps

1800 Mbps

Terminales

Nombre

Dir.

Prot.

Descripción

in

in

HTTP

Entrada común. Tráfico enviado a in se dirige a una de las salidas, en función de si coinciden con la URL o con los encabezados de las expresiones regulares definidas.

ctl

in

HTTP

Terminal de control usado para establecer las expresiones regulares, activando/desactivando los resultados y recuperando el estado y los valores de configuración del terminal de salida.

out1-out8

Saliente

HTTP

Salidas configuradas. Las solicitudes se envían a través de una salida particular según las propiedades outX_type y outX_value. Todas estas salidas, o cualquiera de ellas, se pueden dejar desconectadas; las solicitudes que se dirigen a salidas desconectadas se descartan.

aux

Saliente

HTTP

Salida en cascada. Las solicitudes entrantes que no están dirigidas a ninguna de las salidas out1-out8 se envían por este terminal. Este terminal se puede dejar desconectado.

log

Saliente

Cualquiera

Acceso a un sistema de archivos de red basado en CIFS para almacenar registros (es decir, para depuración). El servidor conectado debe permitir inicios de sesión anónimos y debe tener un recurso compartido de lectura/escritura denominado "share". Este terminal se puede dejar desconectado si no se está usando.

mon

Saliente

CCE

Envía estadísticas sobre uso de recursos y rendimiento. Este terminal se puede dejar desconectado si no se usa.

Propiedades generales

Nombre

Tipo

Descripción

outX_type

Cadena

Define los criterios con los que tienen que coincidir las solicitudes entrantes. Existen 4 elecciones para esta propiedad: hostname, cookie, url y file type.

  • hostname: la solicitud coincide con el nombre de host. Esta elección es útil cuando el contenido del sitio Web está dividido para separar servidores y el nombre de host selecciona el servidor apropiado.
  • cookie: la solicitud coincide con la cookie. Este tipo de selección de servidor puede ser útil cuando hay diferentes categorías de usuarios de sitio Web. Por ejemplo, se puede utilizar en situaciones en las que: 1. Existen usuarios normales y administradores/moderadores y sus solicitudes deben procesarse por servidores diferentes; 2. Hay usuarios VIP, normales y sin registrar, para dar prioridad a las solicitudes en casos de mucha carga; 3. Hay una zona de descarga limitada y sólo los usuarios autorizados pueden realizar descargas del servidor, que está especialmente diseñado para este fin. En todos los casos anteriores, las solicitudes se diferenciarán por la presencia de alguna cookie o su valor.
  • url: la solicitud coincide con una parte específica de la url. Se utiliza toda la cadena de url para seleccionar un destino. Se pueden utilizar todas las partes de la url: protocolo ("http://" o "shttp://"), host y ubicación o cualquier combinación de estos.
  • file type: la solicitud coincide con una extensión de archivo. Es útil en situaciones donde los distintos servidores deberían servir diferentes tipos de contenido estático o dinámico.

Valor predeterminado: hostname

outX_value

Cadena

Expresiones regulares con las cuales se deberán establecer coincidencias. Para obtener una definición de expresión regular, haga clic aquí. Ejemplos:

  • "*host1.com, *host.com, img.*.slashdot.org" para hostname,
  • "*PHPSESSIONID*, GA*" para cookie,
  • "http://host1.com/images/*, *://host2.com/*" para url y
  • "*.jpg, *.png" para file type.

Valor predeterminado: vacío
Los valores distinguen entre mayúsculas y minúsculas.

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, el control de estado utiliza el protocolo HTTP/1.1 mientras realiza controles de estado mediante el uso del nombre de host extraído de URL en un encabezado Host:. Esto permite el uso de los hosts virtuales. Si se especifica como una ruta relativa, el control de estado utiliza el protocolo HTTP/1.0 y busca el documento especificado por esta propiedad. Si esta propiedad tiene el valor vacío, el control de estado busca la raíz predeterminada "/" utilizando el protocolo 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 "URLSW-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: el control de estado se realiza utilizando una conexión al puerto 80 del servidor Web. Si la conexión está correctamente establecida, el control de estado da por hecho que el servidor Web es operacional. Este es el método más rápido y que requiere menos recursos.
  • http_head: el control de estado utiliza el método HEAD para pedir el documento especificado por la propiedad healthcheck_url. Esto es más lento que tcp_connect, requiere más recursos, tanto en URLSW como en el servidores Web, pero es más fiable. Si se recibe un código de estado 2xx o 3xx desde un servidor Web, indica que el servidor es operacional.
  • http_get: el control de estado utiliza el método GET para pedir el documento especificado por la propiedad healthcheck_url. Este es el método más lento y requiere la mayor parte de los recursos, pero es el más fiable. Si se recibe un código de estado 2xx o 3xx desde un servidor Web, el servidor es operacional. Si la propiedad healthcheck_regexp está definida, el control de estado descarga el documento, incluidos todos los encabezados HTTP y los códigos de estado del servidor, y busca si hay coincidencias con el valor "healthcheck_regexp". Si se encuentra alguna coincidencia, el servidor de back-end se considera operacional; 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 tiempo de espera

Nombre

Tipo

Descripción

keepalive_timeout

Entero

Tiempo de espera para mantener activas las conexiones. Establece el tiempo de espera, durante el cual el servidor no cerrará la conexión que se mantiene activa con el cliente.
Valor predeterminado: 75.

client_header_timeout

Entero

Tiempo de espera para que el cliente envíe el encabezado de la solicitud. Si después de este período de tiempo el cliente no recibe el encabezado completo, se devuelve un error.
Valor predeterminado: 60.

client_body_timeout

Entero

Tiempo de espera para que el cliente envíe el cuerpo de la solicitud. Este tiempo de espera se establece para que no se transfiera todo el cuerpo de la solicitud, sino solamente entre las dos operaciones de lectura. Si el cliente no transmite datos en este período de tiempo, se devuelve un error.
Valor predeterminado: 60.

send_timeout

Entero

Tiempo de espera para que el cliente reciba datos. Si el cliente no responde en este intervalo, la conexión se cierra. Este tiempo de espera se establece para que no se transfiera toda la respuesta, sino solamente entre las dos operaciones de escritura.
Valor predeterminado: 60.

server_timeout

Entero

Tiempo de espera en segundos para establecer una conexión tcp a los servidores de back-end. Incluye el control de estado.
Hay que prestar especial atención a esta configuración: si el valor es demasiado pequeño, es posible que el tiempo de espera del control de estado se agote cuando se somete a mucha carga, lo que provocaría que se desactivaran las salidas. No se recomienda establecer un tiempo de espera inferior a 20.
Valor predeterminado: 20.

Propiedades de interfaz de control

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.
Valor predeterminado: 80.

Registro de propiedades

Nombre

Tipo

Descripción

enable_access_log

Cadena

Activa o deshabilita el registro de acceso. Valor predeterminado: no

access_log_filename

Cadena

Nombre de archivo del registro de acceso. Valor predeterminado: access.log

Contadores personalizados

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

Nombre del contador

Descripción

Conexiones activas

Número de conexiones activas

Conexiones aceptadas

Número de conexiones aceptadas

Conexiones gestionadas

Número de conexiones gestionadas

Solicitudes gestionadas

Número de solicitudes gestionadas

Conexiones de lectura activas

Número de conexiones de lectura activas

Conexiones de escritura activas

Número de conexiones de escritura activas

Conexiones de espera activas

Número de conexiones de espera activas

Rendimiento

Tasa de solicitudes

URLSW enruta no menos de 3.000 transacciones (parejas de solicitud/respuesta) por segundo, según el tamaño de los documentos y el ancho de banda de red disponible.

Rendimiento de los datos

URLSW enruta no menos de 25 MBytes/segundo.

Conexiones simultáneas

URLSW admite no menos de 1.000 solicitudes simultáneas. Durante las pruebas, URLSW ha aceptado más de 10.000 trasferencias simultáneas activas.

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: failed to initialize ctl terminal, please contact CA Technologies support.

Se produce un error del sistema mientras se inicializa el terminal ctl. Póngase en contacto con el Soporte técnico de CA.

Error: access log is enabled, but log terminal is not connected.

El terminal de registros no está conectado, pero enable_access_log está establecido como "yes".

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

Se produce un error del sistema mientras se inicializa el control de estado externo. Póngase en contacto con el Soporte técnico de CA.

Error: failed to initialize statistics reporting, please contact CA Technologies support.

Se produce un error del sistema mientras se inicializa la generación de informes de estadística. Póngase en contacto con el Soporte técnico de CA.

Control programático de los terminales de salida

Descripción general

Se muestra una interfaz de servicio Web de control en el terminal ctl del puerto configurado ctl_port que permite:

Protocolo

El control programático de los terminales de salida utiliza el método de HTTP GET que proporciona solamente función 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 se consideran especiales para el URI se deben escapar mediante la codificación % estándar.

A continuación, se ofrece una descripción de todos los URI compatibles.

Llamadas de control

Se pueden invocar las siguientes llamadas de control:

Uso típico
Sitio Web con distribución de carga

El siguiente diagrama muestra un uso típico del dispositivo URLSW en una pequeña aplicación con 4 servidores Web y bases de datos.

Uso típico del dispositivo URLSW con 4 servidores Web y base de datos

Dispositivos en uso:

Ejemplo de configuración de las propiedades:

Nombre de la propiedad

Valor

Notes

out1_type

hostname

Las solicitudes de srv1 se ajustan según el nombre de host.

out1_value

static.server.com, images.server.com

srv1 sirve las solicitudes de los hosts static.server.com e images.server.com.

out2_type

tipo de archivo

Las solicitudes de srv2 coinciden según el tipo de archivo.

out2_value

*.pdf

srv2 sirve los documentos PDF.

out3_type

tipo de archivo

Las solicitudes de srv3 coinciden según el tipo de archivo.

out3_value

*.php

srv3 sirve scripts PHP.

srv4 sirve todas las demás solicitudes, pues está conectado al terminal aux.

La solicitud del cliente llega a la puerta de enlace de usuario. La puerta de enlace envía las solicitudes al servidor URLSW, que las distribuye entre los 4 servidores Web en función de las reglas definidas en las propiedades del dispositivo o agregadas dinámicamente por el terminal ctl. Se puede accede al terminal ctl por la puerta de enlace de administrador.

Notes

Software de fuente abierta y de terceros utilizado dentro del dispositivo

URLSW 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

nginx-stable

0.8.53

No

GPLv2

N/A

samba-client

3.0.28-0.el5.8

No

GPLv2

N/A

samba-common

3.0.28-0.el5.8

No

GPLv2

N/A

thttpd

2.25b

No

BSD

Página principal