上一主题: RPL:事件复制器下一主题: 网关


URLSW:URL 端口交换机

最新版本:3.0.4-1

URLSW:Url 端口交换机

概览

目录

系统

类别

交换机

用户卷

最小 内存

96M

操作系统

Linux

约束

问题/注释

咨询论坛

功能概述

URLSW 是将 HTTP 请求分发给不同输出的交换机,其分发请求的依据是根据组件边界上定义为正则表达式的规则来匹配请求 URI 或请求头。 URLSW 在包含多个 Web 或应用服务器组件的应用中使用,可以在这些应用之间灵活分发 HTTP 请求。 URLSW 的工作方式与对等的 PS8 类似,但更为高级-它将会分析 HTTP 请求,而不分析 tcp/udp 端口。

URLSW 还具有嵌入式运行状况检查程序。 运行状况检查程序定期轮询连接的 out 终端,并确定服务器是否准备好处理请求。 如果任何检查的服务器未运行,URLSW 会将请求重定向到其他最为合适的活动服务器,从而自动禁用发往该服务器的请求流。 如果先前未运行的服务器重新处于活动状态,该服务器将被运行状况检查程序自动检测到,并继续接收请求。

交换机可级联;与任何定义的正则表达式都不匹配的传入流量会在不进行任何修改的情况下通过 aux 终端转发。 在 outX 和 aux 终端上接收的所有传入流量都通过 in 终端转发。

URLSW 通常用于将传入流量路由到应用中的不同组件。

资源

资源

最小值

最大值

默认值

已测试

CPU

0.1

2

0.1

2

内存

96 MB

160 MB

96 MB

128 MB

带宽

1 Mbps

2 Gbps

250 Mbps

1800 Mbps

终端

名称

dir

协议

说明

in

in

HTTP

通用输入。 发送到 in 的流量将定向到其中一个输出,定向的原则是根据定义的正则表达式匹配 URL 或头。

ctl

in

HTTP

控制用于设置正则表达式、启用/禁用输出以及检索输出终端设置和状态的终端。

out1-out8

out

HTTP

配置的输出。 将根据 outX_type 和 outX_value 属性通过特定输出来转发请求。 可将这些输出中的任一输出和所有输出保持未连接状态;定向到未连接输出的请求将被丢弃。

aux

out

HTTP

级联输出。 将通过此终端发送未定向到任一 out1-out8 输出的传入请求。 此终端可保持未连接状态。

log

out

任何

访问用于存储日志(用于调试)的基于 CIFS 的网络文件系统。 已连接的服务器必须允许匿名登录并拥有名称为 share 的读写共享。 如果不使用此终端,可以让它保持未连接状态。

mon

out

CCE

发送性能和资源使用统计信息。 如果未使用该终端,则可将其保持未连接状态。

常规属性

名称

类型

说明

outX_type

字符串

定义对传入请求进行匹配的条件。该属性有 4 种选项:Hostname、cookie、url 和 file type。

  • Hostname一按主机名匹配请求。 在划分网站内容以区分服务器并按主机名选择适当服务器时,该选项很有用。
  • cookie一按 cookie 匹配请求。 当存在不同类别的网站用户时,此类型的服务器选择可能有用。 例如:可在以下情况下使用:1. 存在经常访问的用户,并且管理员/仲裁人以及他们的请求应由不同服务器处理;2. 存在 VIP 用户、经常访问的用户和未注册用户,需要在高负载情况下确定请求的优先级;3. 下载区域受限,只有获得授权的用户可从服务器下载,该选项专门用于解决此目的。 在上述所有情况下,都将按照某些 cookie 或其值是否存在来区分用户请求。
  • url一按 url 的指定部分来匹配请求。 完整 url 字符串用于选择目标。 url 的所有部分都可以使用:协议(http:// 或 shttp://)、主机和位置部分或它们的任意组合。
  • file type一按文件扩展名匹配请求。 在不同服务器应提供不同类型的静态或动态内容时非常有用。

默认值:hostname

outX_value

字符串

匹配时所依据的正则表达式。 此处提供了正则表达式的定义。 示例:

  • 表示主机名的“*host1.com、*host.com、iimg.*.slashdot.org”、
  • 表示 cookie 的“*PHPSESSIONID*、GA*”、
  • 表示 url 的“http://host1.com/images/*、*://host2.com/*”和
  • 表示文件类型的“*.jpg、*.png”。

默认值:(空)
值区分大小写。

运行状况检查属性

名称

类型

说明

healthcheck_url

字符串

用于以 http_get 和 http_head 运行状况检查方法执行后端 Web 服务器运行状况检查的 URL。 可将它指定为完整 URL (http://host.name/file/to/check/for.php) 或相对路径 (/file/to/check/for.php)。 如果指定为 URL,则运行状况检查在使用从 Host: 头中的 UR 中提取的主机名执行运行状况检查时将使用 HTTP/1.1 协议。 允许使用虚拟主机。 如果指定为相对路径,运行状况检查将使用 HTTP/1.0 协议,并检查该属性指定的文档。 如果该属性为空,运行状况检查将使用 HTTP/1.0 协议检查默认根目录“/”。
默认值:(空)。

healthcheck_agent

字符串

用作 http_get 和 http_head 运行状况检查方法的代理标识符的字符串。 如果为空,则使用 URLSW-health-check。
默认值:(空)。

healthcheck_method

字符串

用于执行后端 Web 服务器运行状况检查的方法。

  • tcp_connect一使用与 Web 服务器端口 80 建立的连接执行运行状况检查。 如果成功建立连接,则运行状况检查假定 Web 服务器正在运行。 这是最快的方法,且需要的资源最少。
  • http_head一运行状况检查使用 HEAD 方法来请求 healthcheck_url 属性指定的文档。 此方法的速度比 tcp_connect 慢,需要 URLSW 和 Web 服务器上的更多资源,但是更加可靠。 可以根据从 Web 服务器接收的 2xx 或 3xx 状态代码来验证服务器是否正在运行。
  • http_get一运行状况检查使用 GET 方法来请求 healthcheck_url 属性指定的文档。 该方法速度最慢、需要资源最多,但最为可靠。 可以根据从 Web 服务器接收的 2xx 或 3xx 状态代码来验证服务器是否正在运行。 如果已定义 healthcheck_regexp 属性,那么运行状况检查会下载包括所有 HTTP 头和服务器状态代码的文档,并根据 healthcheck_regexp 值检查匹配。 如果找到匹配项,则认为后端服务器正在运行;如果找不到匹配项,则认为已禁用后端服务器。

默认值:tcp_connect。

healthcheck_regexp

字符串

用于 http_get 运行状况检查模式的测试字符串。 使用简短或不具体的字符串(例如 OK)很可能会引起误报匹配。 该字符串是 perl 正则表达式;此处提供了有关 perl 正则表达式的更多详细信息。
默认值:(空)。

healthcheck_interval

Int

后端 Web 服务器运行状况检查之间的时间间隔,指定以秒为单位。
默认值:20 秒。

超时属性

名称

类型

说明

keepalive_timeout

Int

保持连接超时值。 设置超时,在此期间,与客户端的保持连接将不会被服务器关闭。
默认值:75。

client_header_timeout

Int

客户端发送请求头的超时值。 如果在此时间后客户端没有收到完整的头,将返回错误。
默认值:60。

client_body_timeout

Int

客户端发送请求正文的超时值。 该超时值的设置不是指传输请求的整个正文的超时,而是指两次执行读取操作之间的超时。 如果客户端在此时间段内未传输任何数据,将返回错误。
默认值:60。

send_timeout

Int

客户端接收数据的超时值。 如果客户端在该时间间隔内未响应,将关闭连接。 该超时值的设置不是指传输整个响应的超时,而是指两次执行写入操作之间的超时。
默认值:60。

server_timeout

Int

与后端服务器建立 TCP 连接的超时值(秒)。 这包括运行状况检查。
处理此设置时必须特别小心:如果值太小,则高负载情况下运行状况检查可能会超时,从而导致输出被禁用。 建议不要将超时设置为小于 20 秒。
默认值:20。

控制接口属性

名称

类型

说明

ctl_port

Int

用于通过 ctl 终端访问 Web 服务控制接口的端口。
默认值:80。

日志记录属性

名称

类型

说明

enable_access_log

字符串

启用或禁用访问日志。 默认值:no

access_log_filename

字符串

访问日志的文件名。 默认值:access.log

自定义计数器

URLSW 组件通过 mon 终端报告以下自定义计数器。

计数器名称

说明

Active connections

活动连接数

Accepted connections

已接受的连接数

Handled connections

已处理的连接数

Handled requests

已处理的请求数

Active reading connections

活动的读取连接数

Active writing connections

活动的写入连接数

Active waiting connections

活动的等待连接数

性能

请求速率

URLSW 每秒路由不少于 3000 个事务(请求/响应对),具体数目受文档大小和网络带宽可用性的影响。

数据吞吐量

URLSW 以不低于 25 MB/秒的速率路由

并发连接数

URLSW 支持不少于 1000 个并发请求。 在测试阶段,URLSW 支持的同时活动传输数超过 10,000 个。

错误消息

在组件启动失败的情况下,系统日志可能记录以下错误消息:

错误消息

说明

错误: 无法初始化 ctl 终端,请联系 CA Technologies 支持。

初始化 ctl 终端时发生系统错误,请联系 CA Technologies 支持。

错误: 已启用访问日志,但未连接日志终端。

日志终端未连接,但 enable_access_log 设置为 yes。

错误: 无法初始化外部运行状况检查程序,请联系 CA Technologies 支持。

启动外部运行状况检查程序时发生系统错误,请联系 CA Technologies 技术支持。

错误: 无法初始化统计信息报告,请联系 CA Technologies 支持。

在初始化统计信息报告时发生系统错误,请联系 CA Technologies 支持。

输出终端的程序化控制

概览

所配置端口 ctl_port 上的 ctl 终端上显示了一个控制 Web 服务界面,可用于:

协议

输出终端的程序化控制使用提供只读功能的 GET HTTP 方法。 因此,每个支持的协议请求类型都可通过其 URI 和输出结构来定义。 不能在 URI 中使用的特殊字符应通过标准 % 编码进行转义。

下面是所有支持的 URI 的说明。

控制调用

可以调用以下控制调用:

典型用法
使用负载分发的网站

下图显示了包含 4 个 Web 服务器和数据库的 URLSW 组件的典型用法。

正在使用的组件:

示例属性配置:

属性名

注释

out1_type

hostname

按主机名匹配 srv1 的请求

out1_value

static.server.com、images.server.com

srv1 为主机 static.server.com 和 images.server.com 的请求提供服务

out2_type

文件类型

按文件类型匹配 srv2 的请求

out2_value

*.pdf

srv2 为 PDF 文档提供服务

out3_type

文件类型

按文件类型匹配 srv3 的请求

out3_value

*.php

srv3 为 PHP 脚本提供服务

连接到 aux 终端的 srv4 为所有其他请求提供服务

客户端请求到达用户网关。 该网关将请求转发到 URLSW 服务器,后者根据组件属性中定义的规则或者 ctl 终端动态添加的规则,在 4 个 Web 服务器之间分发请求。 ctl 终端可由管理员网关访问。

注释

组件内所用的开源和第三方软件

URLSW 除了使用其基类 LUX6 所用的第三方开源软件包之外,还使用下列第三方/开源软件包。

软件

版本

已修改

许可

注释

nginx-stable

0.8.53

No

GPLv2

不适用

samba-client

3.5.10-125

No

GPLv2

不适用

samba-common

3.5.10-125

No

GPLv2

不适用

thttpd

2.25b

No

BSD

主页