上一主题: WEB5、WEB64-Web 服务器组件

下一主题: WEBx8-可扩展的 Web 服务器组件

WEBx4-可扩展的 Web 服务器组件

最新版本:2.0.1-1

WEBx4:可扩展 Web 服务器

概览

目录

系统

类别

Web 服务器

用户卷

yes

最小 内存

736 MB

操作系统

Linux

约束

no

问题/注释

咨询论坛

功能概述

WEBx4 是包括单个负载均衡器 (HLB) 和四个 Web 服务器(WEB5)的可扩展 Web 服务器。

WEBx4 提供静态 Web 内容,并从用户可配置的只读内容卷执行脚本。文档和脚本的路径是可配置的,因此,可以在多个 Web 服务器和/或为不同内容提供服务的其他组件之间共享相同卷。

WEBx4 有三个通用输出终端,用于通过内容卷上的脚本访问外部服务。db 终端用于访问 MySQL 数据库;fs 终端用于访问共享文件存储(使用 NFS);aux 终端用于将电子邮件发送到 SMTP 服务器。

可以使用日志终端将 WEBx4 连接到 WEBx4 可在上面存储其日志的共享文件系统。

通过属性提供 Web 服务器的配置。这些属性旨在以易于配置的方式涵盖大多数用法,在大多数情况下,只需要将其中的少数属性设置为非默认值。可以通过内容卷中使用 Apache 配置格式的包含文件来实现高级配置。可以通过内容目录中的 .htaccess 文件进一步具体化内容和脚本文件的访问权限和选项。

如果 WEBx4 组件提供的功能未能符合您的需求,请联系我们的技术支持部门以探讨可行方案。我们也许能够通过提供满足您需要的组件来扩展目录。

边界

资源

资源

最小值

最大值

默认值

CPU

0.5

80

0.6

内存

736 MB

160 GB

800 MB

带宽

5 Mbps

10 Gbps

800 Mbps

终端

名称

目录

协议

说明

in

in

http

为 Web 客户端发出的 HTTP 请求提供服务。为 HTTP/1.1 和 1.0 协议提供服务。

ctl

in

http

用于启用/禁用输出以及从负载均衡器检索输出终端状态的控制终端。

ui

in

http

公开包含负载均衡器运行时统计信息的 Web UI。

db

out

mysql

访问 MySQL 服务器。用法由驻留在内容卷上的任何脚本(如果有)定义。如果不使用此终端,可以让它保持未连接状态。

fs

out

nfs

访问网络文件系统中的共享文件存储,通过 NFS 提供读写文件访问。用法由驻留在内容卷上的任何脚本(如果有)定义。内容卷上的软件将已挂接的远程文件系统视为组件文件系统空间中的 /mnt/fs。如果不使用此终端,可以让它保持未连接状态。连接的服务器必须具有名为 /mnt/data 的读写共享。

log

out

cifs

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

aux

out

any

访问用于发送传出电子邮件的 SMTP 服务器。用法由驻留在内容卷上的任何脚本(如果有)定义。请注意,组件上未配置“sendmail”,需要发送邮件的任何应用只需直接使用 SMTP,同时将“aux”用作目标主机名。对于 Perl CGI 脚本,可以使用 Mail::Mailer 模块执行该操作。
如果不使用此终端,可以让它保持未连接状态。

net

out

any

用于子网访问的网关输出。
如果不使用此终端,可以让它保持未连接状态。

mon

out

cce

发送性能和资源使用统计信息。
如果不使用此终端,可以让它保持未连接状态。

用户卷

说明

目录

只读的可共享卷,提供要由 WEBx4 处理的 Web 内容(文档、媒体和脚本)。

该卷可能为静态和/或动态内容提供一个专用于脚本且可选的可配置目录。从任何目录的脚本执行也可以使用文件名模式进行配置。

除内容之外,内容卷上的文档目录(通过 docs_dir 属性配置)还可以包含以下可选的配置文件,全部采用标准的 Apache 配置格式(请参阅 http://httpd.apache.org/docs/2.0):

.htaccess-按目录的配置。每个目录可能都有自己的 .htaccess 文件,用于为该目录及其子目录中的文件定义选项和访问规则。默认情况下,禁止使用 .htaccess 文件。由于内容卷是只读的并且通常不在运行时进行修改,因此最好在 .apache_conf 目录的自定义配置文件中使用“目录”或“位置”部分配置按目录的访问(请参阅上文)。如果使用配置文件是不可行的,或者如果将一些内容符号链接至在运行时可修改的数据,则允许将 .htaccess 与 use_htaccess 属性结合使用(不推荐)。

属性

属性名

类型

说明

host_name

字符串

网站的主机名。WEBx4 使用此名称在自动生成的页面中显示,还将此名称用于构造绝对 URL,例如:在服务器生成的重定向中(例如:可能在内容卷上安装的自定义配置文件中设置)。注意:尽管很少配置显式重定向,但没有尾随“/”的目录请求会导致将重定向发往附加了“/”的客户端;如果设置了 host_name 的值,此重定向将使用该值。
如果预计在其 HTTP 请求中不发送 Host: 头的早期客户端会访问 WEBx4,建议您正确设置此属性。
如果此属性设置为空字符串,则使用在客户端请求中所用的主机名。
默认值:(空)

admin_email

字符串

服务器管理员的电子邮件地址。WEBx4 使用此名称在自动生成的页面中显示它。
默认值:root@localhost

content_on_fs

字符串

指定内容是相对于 fs 终端上的文件系统还是位于内容卷上。允许值为 on 和 off。如果设为 on,则所有内容均相对于 fs 终端上的文件系统。如果设为 off,则内容位于内容卷上。
默认值:off

docs_dir

字符串

要处理的文档所在的内容卷的根目录。例如:它可能是 /mydocs。如果 docs_dir 设置为空字符串,则使用内容卷的根目录。
此目录必须在内容卷上预先存在。
默认值:(空)

docs_loc

字符串

应在客户端可见的命名空间中显示内容的可选位置(“客户端可见的命名空间”是 URL 的路径部分,或在 URL 中显示在主机名右侧的内容,包括前导 /)。如果设置为非空值,此位置将成为客户端看到的命名空间根,其中会显示文档根目录。例如:如果 docs_loc 设置为 subspace/samples,对 /subspace/samples/file1.html 的 HTTP 请求将处理文档根目录中的 file1.html。请注意,请求 /subspace/samples 外部的位置将返回错误,除非请求脚本目录中的脚本(请参阅 scripts_loc)。
在 WEBx4 处理网站的子空间时,此属性很有用。不要向此值附加尾随斜杠。
默认值:(空)

scripts_dir

字符串

CGI 脚本所在的内容卷的根目录。例如:它可能是 /scripts。应将此属性设置为非空值,表示内容卷上仅包含可执行脚本的目录(不要将它设置为“/”)。
此目录必须在内容卷上预先存在。
默认值:(空)

scripts_loc

字符串

由 scripts_dir 指定的脚本目录应在其中可见的 Web 空间中的位置。必须将其设置为非空字符串,以允许使用专用的脚本目录。典型值可能为 /cgi-bin。不要向此值附加尾随斜杠。
默认值:(空)

logs_enabled

字符串

控制 WEBx4 是否将通过 log 终端向外发送日志。允许值为 on 和 off。如果设置为 on,则必须连接 log 终端。如果设置为 off,则根本不使用访问日志,并将错误日志写入 Web 服务器的根文件系统上的文件中,每周轮转一次,保留过去 4 周的日志 (/var/log/httpd/error_log*)。默认值:off

logs_base_dir

字符串

存储 WEBx4 日志的目录。如果 logs_enabled 设置为 off,则此属性不起作用。默认值:/

error_log_level

字符串

要写入错误日志的消息的重要级别。允许的值为 debug、info、notice、warn、error、crit、alert 和 emerg。debug 写入的消息最多,emerg 只写入紧急消息。默认值:warn

srv2_standby

整数

指出第二个 WEB5 服务器是否处于待机模式。如果为非零,则第二个 WEB5 服务器处于待机模式,否则它不是处于待机模式。
默认值:1

srv3_standby

整数

指定第三个 WEB5 服务器是否处于待机模式。如果为非零,则第三个 WEB5 服务器处于待机模式,否则它不是处于待机模式。
默认值:1

srv4_standby

整数

指定第四个 WEB5 服务器是否处于待机模式。如果为非零,则第四个 WEB5 服务器处于待机模式,否则它不是处于待机模式。
默认值:1

时区

字符串

指定在组件中使用的时区。如果此属性为空,则时区未经修改且保持原样。此处提供可支持时区的列表。默认值:空

重要信息! 所有枚举字符串属性都不区分大小写(一般使用小写)。所有其他字符串属性都区分大小写。

高级属性

这些是通常不需要配置的附加属性。可在非标准情况下使用这些属性来调整 WEBx4。影响负载均衡器操作的属性前面带有 lb,例如 lb_mode。

属性名

类型

说明

lb_mode

字符串

指定运行模式,以及将命名会话 Cookie 用于会话标识的方法。有效值是:
passive-不修改 Cookie。给定的 Cookie 值应该始终唯一,并且同一值永远不会由其他服务器使用。
sync-修改服务器 HTTP 响应中的 Cookie 字符串,使它对发出响应的终端是唯一的(方法是在 Cookie 值中添加一个 4 字符终端 ID)。将请求转发到 outX 终端之一上的服务器之前会去除“终端 ID”。除插入终端 ID 之外,Cookie 值和输出终端之间的映射与 passive 的一样-即对整个 cookie 值进行比较。
insert-负载均衡器本身将在发回到客户端的响应中插入一个 Cookie,因此当客户端用该 Cookie 发送后续请求时,这些请求会定向到与该客户端第一个请求所指向的同一服务器。由 HALB 插入的 Cookie 没有到期日期,这意味着客户端软件不会永久保存它。
source-请求的源 IP 地址用于将会话绑定到特定的后端 Web 服务器。将忽略该 Cookie 属性。
默认值:passive。

lb_cookie_name

字符串

用于标识会话的 Cookie 名称。对于 passive 模式(passive 和 sync-请参阅下面的模式属性),这是连接到 out1-out4 的后端服务器用来标识客户端会话的 cookie 的名称。对于 insert 模式,这是为了使每个客户端继续使用单个服务器,HALB 应插入 HTTP 响应中的 cookie 的名称。如果此属性设为空值,则不执行任何会话跟踪,且所有请求都采用简单循环机制来分发。对 source 模式忽略此属性。
默认值:(空)。

lb_cookie_check_length

Int

定义将 Cookie 值中的多少个字节用作 passive 运行模式的唯一键,以将会话与后端 Web 服务器进行匹配。默认值 10 通常足以满足所有常用的 php 和 java 应用。此值必须始终等于或少于 Cookie 值的长度。
默认值:10。

lb_max_connections

整数

负载均衡器处理的最大并发活动连接数。在达到此数目时,仍会接受新连接,但是其处理会延迟,直到另一个连接关闭。启动时,负载均衡器将基于可用内存自动确定最大连接数,将其与该属性的值进行比较并使用最小值。如果该属性等于 0,则使用计算的值。请注意,可用内存和该属性的显式设置都不会对均衡器的吞吐量或其最大请求率造成直接影响-仅当后端服务器在为每个请求(例如:数据库搜索)执行冗长操作,导致许多请求同时处于打开状态时,设置较小的值(或分配极少的内存)才会影响响应。
默认值:0

lb_backup_outputs

字符串

被视为备份的输出 (out1 - out4) 的空格或逗号分隔列表。仅当所有后端服务器都不可用时,流量才会定向到备份服务器。这些备份服务器的用途是通知客户端出现问题或者重定向客户端,而不是在后端不可用或超时的情况下引发错误。
默认值:(空)。

lb_healthcheck_url

字符串

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

lb_healthcheck_agent

字符串

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

lb_healthcheck_method

字符串

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

lb_healthcheck_regexp

字符串

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

lb_healthcheck_interval

Int

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

lb_timeout

整数

使非活动会话到期的超时(秒)。如果设为零,则非活动会话不会到期。如果设为非零值,超时秒数后恢复的非活动会话被认为已过时,带有“长时间不用的”cookie 的请求被视为根本没有 cookie,并使用普通的循环方向定向到随机服务器。此属性仅对 passive 模式有效,对所有其他模式将被忽略。
默认值:0

lb_client_timeout

Int

建立连接后等待客户端发出请求所用的超时(秒)。
默认值:150。

lb_server_timeout

Int

建立连接后等待后端 Web 服务器发出回复所用的超时(秒)。
默认值:150。

lb_conn_timeout

Int

建立任何 TCP 连接所用的超时(秒)。这包括运行状况检查。必须格外关注此设置,因为如果在负载很重的情况下运行状况检查因该值过小而超时,则导致负载均衡器开始禁用输出。建议不要将它设为低于 20 秒。
默认值:20。

lb_username

字符串

通过 ui 终端访问负载均衡器 GUI 所用的用户名。如果为空,则不进行身份验证。
默认值:(空)。

lb_password

字符串

通过 ui 终端访问负载均衡器 GUI 所用的密码。如果用户名为空,则会忽略密码。
默认值:(空)。

lb_ctl_port

Int

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

lb_ui_port

Int

用于通过 ui 终端访问负载均衡器运行时统计信息 GUI 的端口。
默认值:80。

cgi_ext

字符串

将 CGI 脚本的文件名后缀定义为空格分隔的列表。用于指定要将哪些文件视为可执行的 CGI 脚本(在任意目录中),并可用作替代方法来指定通用脚本目录-请参阅 scripts_dir 和 scripts_loc 属性。默认值:.cgi

shared_perl_ext

字符串

将进程内 Perl 脚本的文件名后缀定义为空格分隔的列表。用于指定要将哪些文件视为要用 mod_perl 运行的 Perl 脚本。与已经在 cgi_ext 中指定的扩展名匹配的任何扩展名将覆盖用于该扩展名的 CGI,并将其配置为改由 mod_perl 运行。进程内 Perl 模块配置为在 CGI 兼容模式下运行具有指定扩展名的脚本-大多数旨在作为 CGI 进程运行的 Perl 脚本在也设置为进程内脚本时应该可以正常运行。注意:由于 mod_perl 运行的所有脚本执行时都不重新启动 Perl 解释器,因此非常重要的一点是,检查脚本是否对所有文件范围的变量进行了正确的初始化,例如:通过 use strict; use warnings;。如果您不确定脚本是否可与 mod_perl 结合使用,请查看 mod_perl 文档了解详细信息:http://perl.apache.org/docs/index.html。
默认值:(空)(即不使用 mod_perl)

index_files

字符串

在客户端请求指向目录名称的 URL 时用作目录索引页的空格分隔的有序文件列表。
默认值:index.html index.html.var

use_htaccess

字符串

指定是否为整个文档树启用 .htaccess 文件。默认情况下禁用,仅应在以下两种情况下使用:您具有的内容目录结构需要精细控制服务器选项,但使用通用配置文件中的一组节来控制又过于复杂;或者您具有已使用 .htaccess 的预配置的内容卷,并且想避免因重新安排该卷引起的麻烦。如果只有文档根自身需要配置选项,则可改为将文档根目录中的设置放入 .htconf 文件-这些设置将按照与 .htacces 完全相同的方式来应用,唯一不同的是该文件在启动时会被读取一次。默认值:off

max_connections

整数

每个 WEB5 服务器可以处理的最大并发活动连接数。如果达到此限制,则其他连接请求将排队(最大限制为 511)并在当前活动连接关闭后得到处理。仅当预计 WEBx4 要处理需要访问较慢的外部数据源的大量请求时(例如:冗长的数据库查询),才应增大此值。如果没有足够的系统内存,则可将并发连接的实际数目限制为低于为此属性设置的值。请参见内存使用情况部分。max_connections 值不能设置为大于 256。
默认值:128

persistent_connections

字符串

控制 WEBx4 是否允许客户端在同一连接中请求多个文档。允许的值为 on 和 off。仅当不正确支持 HTTP/1.1 又不使用 HTTP/1.0 的客户端出现问题时,才可能需要禁用永久连接。默认值:on

idle_timeout_sec

整数

没有请求或响应通过时使客户端连接保持打开状态所用的超时(秒)。仅当 persistent_connections 为 on 时,才使用此属性。将此超时设置得较短可帮助快速丢弃长时间不活动的连接。默认值:15

data_timeout_sec

整数

数据传输已开始但未完成时接收或发送更多数据所用的超时(秒)。具有此超时允许 WEBx4 丢弃被忘记的连接,同时在传输期间仍允许延迟。默认值:300

default_charset

字符串

要为 text/html 或 text/plain 类型的已返回文档报告的默认字符集。应将该属性设置为字符集的名称或 off(在 HTTP 响应中禁止发送字符集头)。对于某些浏览器,设置此属性可以覆盖所处理的 HTML 文档的作者提供的字符集值,并且仅在以下情况下建议使用:有些文档不包含有效的字符集规范,并且提前了解到 WEBx4 处理的所有文档都在同一字符集中。典型的示例值可能为 iso-8859-1 或 utf-8。默认值:Off
注意:要涵盖特殊情况,包括不生成正确的内容类型元标记的旧 CGI 脚本,可以使用内容卷上存储的自定义配置文件实现默认字符集的按目录设置。

info_level

字符串

控制 WEBx4 向 Web 客户端(在 HTTP 响应和自动生成的页面中)透露的有关自身的信息量。允许的值为 full(最多信息)、os、minor、major、prod(最少信息)。作为安全措施,建议您透露最少信息。默认值为 prod

server_signature

字符串

控制 WEBx4 是否在所有生成的页面(例如:错误页面)底部附加服务器签名行。允许的值为 on 和 off。WEBx4 在签名中包括的信息量由 info_level 控制。默认值为 off(无签名)。

env

字符串

用于以“名称=值”对的形式向 WEBx4 传递设置。默认值:(空)

重要信息! 所有枚举字符串属性都不区分大小写(一般使用小写)。所有其他字符串属性都区分大小写。

内存使用情况

WEBx4 中的每个 WEB5 服务器可自动将自身配置为利用广泛的可用内存运行,以适合大小和负载不同的应用。但是,尽管如此,请注意配置计算无法预测内容卷上安装的动态内容脚本的内存使用情况,行为异常的脚本可能会由于过度调配内存而导致服务器发生故障,并导致操作系统终止进程。

默认情况下,每个 WEB5 会根据以下假设配置最大活动连接数:

例如:在 32M 的沙盒配置中,最大活动连接数将设置为 8。

可以使用 max_connections 属性将最大连接数限制在自动计算值以下。请记住,如果 max_connections 值高于可用系统内存实施的限制,系统将会调整该值且不发出警告。

此外,PHP 预处理器的分配限制设置为脚本可用内存的 1/2,也就是说,根据以上规则的计算结果,配置的 PHP 会将正在运行的脚本的内存限制为:

(system_memory - 16MB - max_connections * 1MB) / 2 

其中,max_connections 值是 max_connections 属性值和可用内存实施的限制值中的较小值(计算时假设每个连接 2 MB,如上所述)。如果 max_connections 属性保留为默认值,则会产生以下 PHP 内存限制值:

(system_memory - 16MB) / 4 

注意:所用的“每个脚本使用可用内存的 1/2”规则有点乐观,并且基于这种假设:并非所有活动连接都使用实际会达到该限制的运算密集型 PHP 脚本,或者脚本实际上并不使用分配的所有内存。

提示:如果内存消耗较高的应用在承受负载的情况下开始行为异常(如断开连接),并且无法增加可用内存,那么,请尝试将 max_connections 属性设置为更小的值。这将会减少同时运行的脚本实例的可能数目,并为每个实例分配更多的内存来运行。

设置内容和共享文件存储

本节提供了一些有用信息,以帮助您配置提供动态内容的脚本。

固定目录名称

启动 HTTP 服务器时,每个 WEB5 实例的文件系统空间中会提供下列目录和文件。请注意,不建议在任何脚本或配置文件中使用这些位置以外的绝对目录名称。

/var/www/html-web 根目录,在客户端上显示为“/”。该目录引用内容卷上的某个位置,并且是只读的。请注意,如果设置了 docs_loc 属性,则 /var/www/html 本身将不包含任何数据文件。追加 docs_loc 的值将会生成引用文档根目录的有效符号链接的名称。可以在 Apache 配置文件中使用该目录名称、/var/www/cgi-bin 名称及其任一子目录来设置其他基于目录的设置。这样,这种配置文件就不需要知道 docs_dir 和 scripts_dir 属性的特定设置。

/var/www/cgi-bin-脚本根目录的符号链接(如果使用 scripts_dir 属性进行设置)。

/mnt/fs-连接到 fs 终端的 CIFS 服务器提供的共享读/写文件存储的根目录。如果未连接 NFS 服务器,/mnt/fs 为空。

固定 Web 空间位置

/icons/ 路径是服务器生成的目录列表的库存图标所在目录的别名。因此,内容卷中命名为 icons 的目录将不可见。

访问控制

以用户 48、组 48 身份运行的 HTTP 服务器。CGI 脚本在相同上下文中运行。

每个用户都应该对内容卷上的文件拥有读取权限,这样才能通过 HTTP 为这些文件提供服务。每个用户应该对可执行脚本拥有读取和执行权限。

虽然 Apache 服务器可以采用其他方式来控制文件访问权限,但是您也可以从不应通过 HTTP 访问的文件或目录中删除分配给每个用户的读取权限。对于其某个列表不应可访问的目录,请务必将其 x 位保持设置为打开,但是请包含可访问的文件或子目录。

发送电子邮件

WEBx4 上未配置 sendmail 系统。请不要使用该系统从此组件发送电子邮件。如果使用基于 Perl 的脚本,则可以使用 Mail::Mailer 模块来发送电子邮件(如果该模块已配置为使用 smtp 邮件发送程序)。在所有情况下,应该将您的 SMTP 邮件发送程序设置为使用 aux 作为 SMTP 服务器的主机名。例如:如果使用 Mail::Mailer:

$mailer = new Mail::Mailer 'smtp', (Server => 'aux');
$mailer->open(\%headers); #... 等等

内核

以下是 WEBx4 的内核。

WEBx4 组件的内核

典型用法
可扩展的双层应用

可扩展的双层应用

说明
已知限制

如有问题和建议,请联系技术支持。