上一主题: INSSLR:带有 SSL 支持的冗余 HTTP 输入网关下一主题: OUT:单一主机输出网关组件


INSSLR2-带有 SSL 支持的冗余 HTTP 输入网关

最新版本:1.0.1-2

APP--INSSLR2 icon--ICO

概览

目录

系统

类别

网关

用户卷

yes

最小 内存

192M

操作系统

Linux

约束

INSSLR2 组件是安全 HTTP 请求的第 7 层网关。 它将请求转换为未编码的 HTTP 请求。 您可以使用此功能支持客户端的安全 HTTP。

不过,后端处理基础架构不会或无法支持 SSL,包括:

如果已配置,则 INSSLR2 也支持客户端证书身份验证。 在进行 SSL 相互身份验证的情况下,客户端和服务器都将交换各自的证书和相应公钥。 客户端和/或服务器可以联系颁发证书的证书颁发机构 (CA),并确认证书是真实的,然后再继续。

在其默认配置中,INSSLR2 充当安全 HTTP 请求的第 7 层网关。 它还提供到应用的网络流量的防火墙入口点。 可以使用 Internet 可访问的静态 IP 地址进行配置。

在配置时,可以在故障切换模式下使用两个 INSSLR2 组件来提供冗余服务。 在这种情况下,INSSLR2 IP 地址仅在其中一个节点上运行,并在失败时自动转移到另一个 INSSLR2 组件。 一次只有一个 INSSLR2 组件为活动状态。 在故障切换模式下运行时,可以将 INSSLR2 配置为在以下几种模式下运行:

在冗余模式下运行时,INSSLR2 在其 ctl 终端上提供一个界面,用于:

INSSLR2 持续不断地监控连接到其 http 终端的后端组件的运行状况。 INSSLR2 执行的运行状况检查可能包含简单的 TCP 连接检查或更复杂的 HTTP 请求(在 INSSLR2 的边界上指定)。

在连接的组件失败时,INSSLR2 会将错误报告给网格显示板,或者(如果处于冗余模式并配置为这样做)故障切换到备份 INSSLR2 组件。

要支持需要在多个服务的单个 IP 地址中显示的应用,可将 INSSLR2 配置为将非 HTTP 流量透明地定向到单独的输出终端。 对于此类连接,组件充当第 3 层防火墙/NAT 路由器。

边界

资源

资源

最小值

最大值

默认值

CPU

0.05

4

0.05

内存

192 MB

2 G

192M

带宽

1 Mbps

2 Gbps

200 Mbps

注释

终端

名称

方向

协议

说明

ctl

in

http

接收有关组件已被强制为主服务器/备份服务器的通知。

仅当 fover_mode 不是 none 时,该终端才接受连接。 使组件主动或被动的有效 http 要求是:

/?action=<active|passive|kill|status

如果另一个节点不活动且故障转移无法完成,此操作可能不成功,且不返回错误。 调用应用通过发出以下请求来检查组件的状态。

/?action=status

状态返回组件的当前主动或被动的状态

kill 进行组件的强制关闭。 如果正在运行,就会使其他节点接管。

in

in

任何

接受所有传入流量

您可以通过使用应用配置编辑器的“接口”选项卡配置连接到此终端的接口。

fover

in

raw

两个 INSSLR2 实例之间的双向通讯的故障切换接口。

您可以通过使用应用配置编辑器的“接口”选项卡配置连接到此终端的接口。

http

out

http

在配置的外部 IP 地址接收的 HTTPS 和/或 HTTP 请求,将在标准 HTTP 端口 80 上作为简单 HTTP 请求定向到输出 http。

除客户端提供的 HTTP 头之外,转发的请求还包含以下信息头:

  • X-Forwarded-For:远程客户端 IP 地址。

    服务器端 CGI 脚本应使用该 IP 地址来代替远程 IP 地址。

  • X-Forwarded-Proto:https

    如果已通过 HTTPS 连接客户端,将存在该头。 后端应用使用此头来区分 HTTP 和 HTTPS 连接。

fs

out

nfs

为用于存储密钥的本地密钥卷提供一个 nfs 挂接作为备用位置。

如果同时提供本地密钥卷和 fs 终端连接,组件将无法启动。 此终端可能仍旧未连接。

aux

out

任何

其他协议的输出(如果配置)。

有关详细信息,请参阅 l3_accept_ * 属性。

nfy

out

http

每当发生故障切换时发出通知。

另请参阅 fover_nfy_prefix。 此终端可能仍旧未连接。

mon

out

cce

发送性能和资源使用统计信息

属性

名称

类型

说明

dns1

IP addr

定义主要 DNS 服务器。

如果远程主机由其 IP 地址指定,那么 dns1 可仍为空。 否则,您一定指定 dns1。

默认值:(空)

dns2

IP addr

定义主要 DNS 服务器无响应时使用的备用 DNS 服务器。

默认值:(空)

l7_accept

enum

指定接受将哪种类型的 HTTP 流量转发到 http 终端。

有效值:https、http、both、none

如果设置为 none,则只根据 l3_accept_* 属性重定向所有流量。

默认值:both

l3_accept_proto

enum

指定应将哪些协议转发到 aux 终端。

有效值:none、tcp、udp、raw、all。
如果设置为 tcp 或 udp,则 l3_accept_port 属性可以指定端口。

如果设置为 raw,则由 l3_accept_port 属性指定协议编号。

如果设置为 all,则将外部接口上的所有传入流量转发到 aux 终端。 l7_accept 属性有优先权。

注意:如果您将 l7_accept 设置为不同于 none 的值,那么所有 http(s) 被转发到 http 终端,剩余的流量进入由此属性指定的 aux。

默认值:none

l3_accept_port

字符串

以逗号或空格分隔的协议列表,以便接受并在由 l3_accept_proto 指定的协议路由到 aux 终端。

列表中的协议可指定为端口号或标准的协议名称,如使用 raw 协议指定 TCP 或 UDP 端口或 gre 和 tcp 时的 ftp 和 smtp。 也可将端口范围指定为 1024:10000 或 0:1024。

如果为空,则转发指定协议的所有端口。

注意:如果将 l3_accept_proto 设置为 raw,则必须指定在这种情况下指定协议数目的属性。 可指定多个 raw 协议,但没有协议范围,如允许 20:30。

默认值:all

allowed_hosts

字符串

允许连接的主机和/或子网的列表。 必须使用空格或逗号分隔多个条目。

支持的格式示例:192.168.1.2 192.168.1.0/24 192.168.2.0/255.255.255.0。

默认值:0.0.0.0/0(全部允许)

key_on_fs

字符串

指示密钥通过 fs 终端 (on) 存储在 nfs 挂接上还是存储在本地密钥卷上 (off)。

有效值:on 和 off

默认值:off

cert_file

字符串

该网关实例应为客户端提供的服务器证书的文件名(相对于数据卷根)。

如果将 l7_accept 设置为 http 或 both,有效证书必须出现在由此属性指定的位置上配置的数据卷上。 否则 INSSLR2 无法启动。 有关详细信息,请参阅“卷”。

默认值:server.pem

unsafe_ssl

字符串

启用“不安全的”ssl 密码,以便与旧浏览器兼容。

默认值 disabled 将禁用 SSLv2 密码以及被视为不安全的其他一些 SSLv3 和 TLSv1 密码。

建议将该属性设置为 disabled,除非您需要对仅使用 SSLv2 的传统浏览器支持 http 会话。 设置为“enabled”时,会将系统上所有可用的 SSL 密码用于 https 会话。 这包括 SSLv2。

默认:disabled

版本 1.2.1 中添加了该属性。

keepalive

整数

指定 INSSLR2 和客户端之间的最长保持连接时间。 以秒为单位指定时间。

默认值:15

timeout

整数

指定 INSSLR2 等待后端服务器输出的秒数。

如果后端服务器在超时秒数内未发送输出,连接将会关闭。

默认值:300

max_request_size

整数

客户端请求的最大大小 (MB)。 如果应用需要处理较大的客户端上载,请增大此值。

默认:10

adv_config

字符串

在 http 和 https 侦听程序(以启用的那一个为准)的位置块内添加要插入到 nginx conf 中的原始配置。

例如:要添加自定义头,请将 adv_config 设置为 proxy_set_header myport $proxy_port;。

这样会向发送给后端服务器的请求中添加 myport: 80。 可将 adv_config 设置为位置块的任何有效语句。 有关详细信息,请参阅 nginx 文档。

可以添加用 ; 分隔的多个配置行。

注意:如果设置,该属性必须采用有效的 nginx 语法(以 ; 结束),否则组件将无法启动。

默认值:(空)

client_cert

字符串

启用客户端证书身份验证。

有效值:on、ask 和 off

如果设置为 on,则强制使用客户端证书身份验证,只有具有有效证书的客户端可以向 INSSLR2 发出成功请求。

如果设置为 ask,将请求客户端提供证书,但即使未提供有效证书也会建立连接。

默认值:off

client_depth

整数

要在成链客户端证书中进行的验证深度。 如果未设置 client_cert,该属性将无效。

有效值:1-9

默认值:1

ca_list_client

字符串

包含 PEM 格式的 CA 证书序列的文件。 连接时,会将所列 CA 证书的名称发送到客户端。 这会通知客户端它应发送哪个客户端证书。

可使用同一列表来验证客户端证书。

该文件名相对于已挂接的密钥卷的根目录或通过 fs 终端进行的 nfs 挂接的根目录,并且可以包含路径,如:

path/to/keys/ca_list_client.pem。 

默认值:ca_list_client.pem。

cert_revocation_list

字符串

包含证书颁发机构生成的证书吊销列表 (CRL) 的文件。 该列表标识 CA 吊销的客户端证书。

将在该列表中搜索提供给 INSSLR2 的每个客户端证书,如果发现该证书已被吊销,INSSLR2 将向客户端发出“SSL 证书错误”响应。

该文件名与 ca_list_client 相似,也相对于已挂接的密钥卷的根目录或通过 fs 终端进行的 nfs 挂接的根目录,并且可以包含路径,如:

path/to/keys/ca_list_client.pem。 

默认值:空

运行状况检查属性

名称

类型

说明

healthcheck_method

字符串

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

  • off:禁用运行状况检查。 所有其他 healthcheck_ properties 不相关。
  • tcp_connect:INSSLR2 连接到 Web 服务器的端口 80。 如果成功建立连接,则 INSSLR2 假定 Web 服务器正在运行。

    这是最快的方法,且需要的资源最少。

  • http_head:INSSLR2 使用 HEAD 方法请求由 healthcheck_url 属性指定的文档。

    此方法的速度比 tcp_connect 慢,需要 INSSLR2 和 Web 服务器上的更多资源,但是更加可靠。 响应针对由 healthcheck_regexp 指定的正则表达式进行匹配。 如果找到匹配,则认为该服务器为活动。

  • http_get:INSSLR2 使用 GET 方法请求由 healthcheck_url 属性指定的文档。

    这是最慢的方法,需要的资源更多,但是最可靠。

    根据 healthcheck_regexp 指定的正则表达式匹配响应(头和正文),如果找到匹配项,则认为服务器处于活动状态。

默认值:off。

healthcheck_url

字符串

用于以 http_get 和 http_head 运行状况检查方法执行后端 Web 服务器运行状况检查的 URL。

可指定为完整 URL(如,http://host.name/file/to/check/for.php)或相对路径(如,/file/to/check/for.php)。

如果指定为 URL,INSSLR2 在使用从 Host: 头中的 UR 中提取的主机名执行运行状况检查时将使用 HTTP/1.1 协议。 允许使用虚拟主机。

如果指定为相对路径,INSSLR2 将使用 HTTP/1.0 协议,并检查该属性指定的文档。

默认值:/

healthcheck_agent

字符串

用作 http_get 和 http_head 运行状况检查方法的代理标识符的字符串。

默认值:INSSLR2-health-check

healthcheck_regexp

字符串

用于 http_head 和 http_get 运行状况检查模式的测试字符串。 短或通用值,如“OK”,将可能引起误报匹配。 此字符串是一个 perl 正则表达式

默认值:^HTTP\/1\.\d\s+200

healthcheck_interval

整数

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

默认值:60 秒。

healthcheck_timeout

整数

运行状况检查花费的最长时间(秒)。

如果超过超时。 将此检查视为失败且被终止。 启动新检查。

默认:10

healthcheck_alert

整数

在 INSSLR2 开始在网格显示板上转储错误之前的后续运行状况检查失败数。

如果设置为 0,则不向显示板报告任何错误,但仍启用运行状况检查。

为了避免在启动/停止应用时出现误报,请勿将此值设置得太低。

如果在冗余模式下运行 INSSLR2 并且要在后端服务器出现故障的情况下切换到备份节点,有关详细信息另请参阅 fover_on_healthcheck。

默认值:3

用于故障切换方案的高级属性

名称

类型

说明

fover_mode

字符串

故障切换模式。

有效值:none(无故障切换)、symmetric 和 asymetric

设置为 none 时,INSSLR2 如 INSSLR2 组件一样操作且不提供故障切换功能。

设置为 symmetric 时,INSSLR2 以对称故障切换模式运行。 您需要两个 INSSLR2 组件,两者以对称故障切换模式运行。

设置为 asymmetric 时,INSSLR2 以非对称故障切换模式运行。 您需要两个 INSSLR2 组件,两者以非对称故障切换模式运行。

注意:在故障切换模式下运行时,两个组件都必须将 fover_mode 设置为相同的值。

默认值:none

fover_remote_ip

IP addr

用于故障切换模式的其他 INSSLR2 组件的远程 IP 地址。

注意:如果已将 fover_mode 设置为 none,则可将该属性留空。

默认值:(空)

fover_nfy_prefix

字符串

每当发生故障切换时请求的 Url 前缀。

请求的 URL 是:

http://nfy/ fover_nfy_prefix fover_mode= fover_mode &state= <start|stop> &ip_addr= ip_addr &fover_local_ip= fover_local_ip &fover_remote_ip= fover_remote_ip &fover_netmask= fover_netmask 并通过 nfy 终端。

默认值:?

fover_on_healthcheck

整数

指定如果对 http 终端的运行状况检查失败,INSSLR2 是否应故障切换到备份节点。

如果设置为非零值,INSSLR2 将在后续的许多运行状况检查失败后进行故障切换。 为了避免在启动/停止应用时出现误报,请勿将此值设置得太低。

如果您只是需要失败的通知,参阅 healthcheck_alert。

默认值:0(禁用)。

名称

说明

key

一个只读数据卷(占位符),至少包含 SSL 服务器签名密钥。 该文件应为 PEM 格式。

除非已修改 cert_file 属性来指定不同名称,否则证书应位于名为 server.pem 的密钥卷的根目录中。

错误消息

当组件无法启动时,网格控制器的组件日志文件或系统日志中可能会出现下列消息:

性能
应用故障切换

INSSLR2 以大约 10 秒的时间检测到 INSSLR2 失败,并需要另外的 10 秒时间故障切换到其他应用。 从最初发生应用故障到其他应用接管流量的总时间大约为 20 秒。

请求速率

INSSLR2 每秒路由的事务数不少于 3000 个(请求/响应对),此速率受文档大小和可用网络带宽的限制。

数据吞吐量

INSSLR2 路由速率不低于 7 MB/秒,受文档大小和可用网络带宽的限制

并发连接数

在使用默认内存的情况下,INSSLR2 支持不少于 500 个并发的未决请求。 未决请求是来自客户端的开放 TCP 连接,其中有一个或多个未完成的 HTTP 请求正在进行中。

最大并发连接数取决于可用内存。 每增加 16 MB 内存可将并发的 http 事务数增加 500。

例如,如果您在冗余模式下运行且要提供 2000 个并发连接,那么您需要 100M + 3*16M = 148M。 在冗余模式下运行的最小内存是 100M。

通知

在以冗余模式运行(fover_mode 不是 none)时,每当 INSSLR2 变为主动/被动时都将触发通知。 这种情况在活动节点启动或发生故障切换时执行。 每个节点发送变为主动或被动的通知。

INSSLR2 发送两则通知:

您可以使用 fover_nfy_prefix 来更改所调用的远程脚本的位置和/或添加其他参数。

fover_nfy_prefix 值的示例:

/path/to/script.php?, /path/to/script.php?username=user&password=pass&。 

注意:

运行状况检查

INSSLR2 每分钟运行一次 cronjob 以检查:

如果上面任何一项为“是”,则将错误消息发送到网格显示板。 如果多个测试失败,网格显示板上将发布包含所有错误的摘要消息。

每小时只会向网格显示板发送每条错误一次。 在组件启动之后的开始 5 分钟内,没有报告错误。 在复制的另一个节点没有启动时,这可以防止误报。

服务器证书

要使用 SSL,您需要已签名的证书以及对其进行加密的私钥。 私钥和证书应采用 PEM 格式,并放在 cert_file 属性指定的单个文件中。

生成服务器证书

您可以生成由信任的证书颁发机构 (CA) 签署的服务器证书(收费),或创建自签名证书。

完成以下步骤:

  1. 使用以下命令生成私钥:
    openssl genrsa -out privkey.pem 2048 
    

    您也可以使用以下命令生成一个通行受保护密钥。 然而,如果创建通行受保护密钥,您需要在 INSSLR2 中使用它之前删除该密码。 INSSLR2 需要无密码密钥。

    openssl genrsa -des3 -out privkey.pem 2048 
    
  2. 使用以下选项之一创建证书:

使用服务器证书

您现在可以将证书和密钥放置在文件中,并通过执行以下命令,在 INSSLR2 使用它:

cat privkey.pem  server.crt > server.pem 

如果您的密钥受密码保护,则可通过执行以下命令来删除密码:

openssl rsa -in key_with_pass.pem -out privkey.pem 

使用现有的 apache+mod_ssl 服务器证书

INSSLR2 允许您使用在 Apache 中使用的现有证书。 使用以上步骤验证该密钥不受密码保护,然后将专用证书和密钥放置在单个文件中。

例如:

如果使用成链的证书,还应包括颁发者提供的中间证书。 按顺序将私钥、证书和中间证书放置在单个文件中。

例如:

重要信息! 服务器签名密钥是网站的身份证明。 由于未对密钥的密码进行加密(以便组件无需您的帮助即可读取该密钥),因此该密钥也容易受到攻击。

在数据卷上安装时,要采取措施保护密钥文件。 不要将相同的数据卷用于其他目的,且对于 Web 服务器不可见。 例如,对于主机 Web 可访问的数据,如 HTML 页面和脚本。

客户端证书

以下示例概述了如何创建您自己的证书颁发机构,并通过 OpenSSL 使用该机构来签署自己的证书。 此操作已使用 OpenSSL 0.9.8b(与安装在 INSSLR2 中的版本相同)进行测试。

创建证书颁发机构

如果您已有自己的用于创建自签名服务器证书的证书颁发机构,则可跳过此步骤并使用该证书颁发机构。 在为应用创建可信颁发机构的规范时,环境安全非常重要。

重要信息! 证书颁发机构的私钥是应用的信任基础。 不要错放或向其他方提供。

完成以下步骤:

  1. 在安全的主机上创建工作目录,在该目录中创建:
  2. 为 CA 创建密钥长度为 2048 位的受密码保护的 RSA 密钥:
    openssl genrsa -des3 -out CA/private/CA_key.pem 2048 
    
  3. 从私钥创建 CA 的公钥证书:
    openssl req -new -key CA/private/CA_key.pem -x509 -days 365 -out CA/CA_cert.pem 
    

创建由证书颁发机构签署的客户端证书

您可以创建由证书颁发机构签署的客户端证书。

完成以下步骤:

  1. 生成 RSA 私钥:
    openssl genrsa -out clientA_privkey.pem 2048 
    

    要创建受密码保护的密钥,请使用 -des3 选项

  2. 基于私钥生成证书签名请求 (CSR):
    openssl req -new -key clientA_privkey.pem -out clientA_request.csr 
    
  3. 使用为 CA 生成的证书签署 CSR 中包含的证书:
    openssl x509 -req -days 365 -in clientA_request.csr -CA CA/CA_cert.pem -CAkey CA/private/CA_key.pem -CAcreateserial -out clientA.cer 
    

注意:

创建 INSSLR2 使用的 CA 列表文件

吊销 CA 签署的客户端证书

要吊销 CA 颁发的客户端证书,请使用以下命令:

openssl ca -config openssl.conf -revoke clientB.cer -crl_reason keyCompromise 

下面显示了一个示例 openssl.confcrl_reason 参数为下列其中一项:unspecified、keyCompromise、CACompromise、affiliationChanged、superseded、cessationOfOperation、certificateHold 或 removeFromCRL。 原因的匹配不区分大小写。

重新生成证书吊销列表 (CRL):

openssl ca -config openssl.conf -gencrl -out CA/crl.pem 

在该示例中,crl.pem 是应作为 cert_revocation_list 属性提供给 INSSLR2 的文件。

用于以上示例的示例配置文件为: 
      ####################################################################
      [ ca ]
      default_ca      = CA_default            # The default ca section

      ####################################################################
      [ CA_default ]

      dir             = ./CA                  # Where everything is kept
      certs           = $dir/certs            # Where the issued certs are kept
      crl_dir         = $dir/crl              # Where the issued crl are kept
      database        = $dir/index.txt        # database index file.
      #unique_subject = no                    # Set to 'no' to allow creation of
                                        # several ctificates with same subject.
      new_certs_dir   = $dir/newcerts         # default place for new certs.

      certificate     = $dir/cacert.pem       # The CA certificate
      serial          = $dir/serial           # The current serial number
      crlnumber       = $dir/crlnumber        # the current crl number
                                        # must be commented out to leave a V1 CRL
      crl             = $dir/crl.pem          # The current CRL
      private_key     = $dir/private/cakey.pem# The private key
      RANDFILE        = $dir/private/.rand    # private random number file

      default_days    = 365                   # how long to certify for
      default_crl_days= 30                    # how long before next CRL
      default_md      = sha1                  # which md to use.
      preserve        = no                    # keep passed DN ordering

      policy          = policy_anything

      [ policy_anything ]
      countryName             = optional
      stateOrProvinceName     = optional
      localityName            = optional
      organizationName        = optional
      organizationalUnitName  = optional
      commonName              = supplied
      emailAddress            = optional

创建 INSSLR2 使用的证书颁发机构列表文件

您可以创建 INSSLR2 使用的证书颁发机构列表文件。

创建 ca_list_client 属性标识的文件:

  1. 访问以下文件:
    cat CA/private/CA_key.pem CA/CA_cert.pem > ca_list_client.pem 
    
  2. 将该文件放置在密钥卷上,或放置在通过 fs 终端挂接了 nfs 的卷上。

    如果需要,也可以按照与创建客户端证书相同的方式创建 INSSLR2 服务器证书(例如:server.pem)并由创建的证书颁发机构签署。 不要对此证书使用密码。

  3. 创建 server.pem 和 ca_list_client.pem 后,可按如下方式对客户端证书身份验证进行测试:

客户端证书头

如果客户端使用 HTTPS 连接到 INSSLR2,并且存在客户端证书,INSSLR2 会向其返回到后端服务器的请求添加以下头:

使用或不使用这些头是应用的责任。 INSSLR2 只是传递此信息而不进行验证,除签名和加密的正确性之外。

典型用法

Web 应用

要向您的应用提供 http(s) 访问,请将 http 终端直接连接到 WEB 组件。

APP--Web Applications_Provide HTTPS--ICO

针对可扩展 Web 应用,将 http 终端连接到 HALB 组件。

APP--Web Applications_Scalable--ICO

配置示例只列出了设为非默认值的属性。

名称

类型

说明

17_accept

http/https/both

指定所使用的 l7 协议。

如果指定 https 或 both,密钥卷应包含 cert_file 属性指定的 ssl 证书。

带有附加服务的 Web 应用

如果应用中除包含 http 之外还包含其他服务,可以使用 INSSLR2 向其 http 终端传递 http 流量,并将 aux 终端用于其他服务。


APP--Web App w Additional Services--ICO

属性

注释

17_accept

http/https/both

指定使用的 l7 协议。

如果指定 https 或 both,密钥卷应包含 cert_file 属性指定的 ssl 证书。

l3_accept_proto

tcp

将 tcp 端口 25、110、143 重定向到 aux 终端。

l3_accept_port

25,110,143

将 tcp 端口 25、110、143 重定向到 aux 终端。

带有多个附加服务的 Web 应用

如果有多个 TCP/UDP 服务和 HTTP,您可以使用 INSSLR2 将 HTTP 流量传送给其 HTTP 终端,并使用 aux 将剩余流量馈送给 PS8。 然后 PS8 将所需的流量馈送给后端服务器。

APP--Web App w Multiple Additional Services--ICO

属性

注释

17_accept

http/https/both

指定使用的 l7 协议。

如果指定 https 或 both,密钥卷应包含 cert_file 属性指定的 ssl 证书。

l3_accept_proto

all

将未传递到 http 终端的所有 IP(icmp 除外)流量都重定向到 aux 终端。

冗余的 Web 应用

要提供冗余的 Web 应用,可以复制应用并使用 INSSLR2 为外部 IP 地址提供故障切换功能。

注意:如果相同应用中的两个 INSSLR2 组件配置为以冗余模式运行,当您在两个不同的接口上配置相同的 IP 地址时,会显示警告消息。 请忽略该错误。

备份 Web 应用

如果您需要一个备份应用,用于针对停机时间向用户发出通知,则可使用 INSSLR2 来生成需要最少资源的备份应用。

正在使用的组件:

主应用中的 INSSLR2

属性

注释

fover_mode

asymmetric

只在主应用关闭时使用备份应用,因此在非对称模式下运行。

fover_remote_ip

192.168.100.2

在两个应用中的 INSSLR2 组件之间通信所用的远程 IP 地址。

备份应用中的 INSSLR2

属性

注释

fover_mode

asymmetric

只在主应用关闭时使用备份应用,因此在非对称模式下运行。

fover_remote_ip

192.168.100.1

在两个应用中的 INSSLR2 组件之间通信所用的远程 IP 地址。

注意:您可以使用应用配置编辑器的“接口”选项卡配置连接到 fover 终端的接口属性。 例如,fover_local_ip 以及 fover_netmask 属性。

单个应用中的冗余 Web 应用

要在没有创建新应用的情况下,以冗余模式运行应用,您可以加倍组件并以冗余模式运行。 因为这涉及在正常模式中使用至少二个 Web 服务器和两个数据库组件,所以使用提供可扩展性的全部组件。 然而,在一个组件失败的情况下,另外一个可以提供单独的应用服务。

如果需要更多的可扩展性,则可添加更多 Web 和数据库组件。 在此示例中,一半组件(in1、sw1、web1、db1)在一个故障切换组中运行,其余组件(in2、sw2、web2、db2)在另一个故障切换组中,因此当一台服务器崩溃时,应用可以幸免。 该应用以极低的成本提供冗余,因为所有组件(一个 INSSLR2 和一个 HALB 组件除外,它们需要的资源极少)都处于活动状态,并且不需要为只在主应用出现故障时运行的备份应用花费资源。

APP--Redundant Web application_single application_ICO

in1

属性

注释

fover_mode

symmetric

以对称模式运行。

fover_remote_ip

192.168.100.2

在两个应用中的 INSSLR2 组件之间通信所用的远程 IP 地址。

in2

属性

注释

fover_mode

symmetric

以对称模式运行。

fover_remote_ip

192.168.100.1

在两个应用中的 INSSLR2 组件之间通信所用的远程 IP 地址。

db1

属性名

注释

auto_create

1

如果卷为空,则创建数据库。

server_id

1

主服务器 1。 在远程应用中应有所不同

rpl_mode

master_and_slave

主服务器和从服务器

db2

属性名

注释

auto_create

1

如果卷为空,则创建数据库。

server_id

1

主服务器 1,在远程应用中应有所不同

rpl_mode

master_and_slave

主服务器和从服务器

带有两个相同应用的冗余 Web 应用

您可以在相同的网格上运行两个相同的应用,但是在单独服务器或不同网格上则无法运行(如果从两个网格都可以访问该 IP 地址)。 这种情况允许服务器失败仅影响一个应用。

注意:如果相同应用中的两个 INSSLR2 组件配置为以冗余模式运行,当您在两个不同的接口上配置相同的 IP 地址时,会显示警告消息。 请忽略该错误。

以下示例显示使用也在冗余模式下运行的数据库组件的应用。 如果一个应用失败,另外一个应用可以在没有数据丢失的情况下接管。

APP--Redundant Web application_two identical applications--ICO

正在使用的组件:

客户端请求到达 insslr 网关。 该网关将请求转发给 web_lb 负载均衡器,后者将请求定向到 Web 服务器 web1 或 web2 中的一个。

Web 服务器访问 db 数据库。 db 组件连接到远程应用。 为了复制数据库,远程应用是相同的副本,而唯一的差异是 db 的 server_id 和网络设置。

远程应用通过 repl_in 网关连接到 db 组件,该网关配置为只允许来自远程应用的 repl_out 网关的连接。 两个应用中的 db 组件以主服务器-主服务器设置运行,确保它们的数据始终相同。

示例属性配置

未列出的属性应保留为其默认值。 使用端口 8080 上的 admin 网关可以对 db 进行 Web 访问。

insslr

属性

注释

fover_mode

symmetric

以对称模式运行。

fover_remote_ip

192.168.100.2

在两个应用中的 INSSLR2 组件之间通信所用的远程 IP 地址。 在远程应用中将此值更改为 192.168.100.1。

db

属性名

注释

auto_create

1

如果卷为空,则创建数据库。

error_log_filename

db.error

要在日志数据卷上存储的错误日志文件的名称。

error_log_level

error

错误日志记录级别

server_id

1

主服务器 1,在第二个应用中该值应该不同

rpl_mode

master_and_slave

主服务器和从服务器

重要信息! 在任何时候只有一个应用处于活动状态,另一个只为故障切换而运行并在活动应用出现故障时使用。

注意:

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

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

软件

版本

已修改

许可

注释

PyXML

0.8.4-19

No

BSD

不适用

heartbeat

3.0.4-1

No

LGPLv2.1

不适用

heartbeat-libs

3.0.4-1

No

LGPLv2.1

不适用

iptables

1.4.7-5.1.el6_2

No

GPLv2

不适用

libgcrypt

1.4.5-9.el6_2.2

No

GPLv2

不适用

libgpg-error

1.7-4

No

LGPLv2.1

不适用

lighttpd

1.4.18-1

No

BSD

不适用

nginx

0.7.62-1

Yes

BSD

不适用

sudo

1.7.4p5-13.el6_3

No

BSD

不适用

telnet

0.17-47

No

BSD

不适用