24.5. 使用外部 Web 服务器作为代理服务器

JBoss EAP 可以使用支持的 HTTP、HTTPS 或 AJP 协议接受来自外部 Web 服务器的请求,具体取决于外部 Web 服务器配置。

如需有关每个 web 服务器支持的 HTTP 连接器的详细信息,请参阅 HTTP Connectors 概述。旦决定使用哪个 Web 服务器和 HTTP 连接器,请参阅有关配置连接器的相应部分:

有关 HTTP 连接器受支持配置的最新信息,请参阅 JBoss EAP 支持的配置

您还需要确保将 JBoss EAP 配置为 接受来自外部 Web 服务器的请求

24.5.1. HTTP 连接器概述

JBoss EAP 能够使用内置于外部 Web 服务器的负载平衡和群集机制,如 Apache HTTP 服务器、Microsoft IIS 和 Oracle iPlanet 以及通过 Undertow。JBoss EAP 使用连接器与 Web 服务器通信。这些连接器在 JBoss EAP 的 undertow 子系统内配置。

Web 服务器包含软件模块,这些模块控制 HTTP 请求路由到 JBoss EAP 节点的方式。每个模块的运行方式和配置方式都有所不同。模块配置为在多个 JBoss EAP 节点之间平衡工作负载,从而在出现故障时或同时将工作负载迁移到备用服务器。

JBoss EAP 支持多种不同的连接器:您选择的某个服务器取决于正在使用的 Web 服务器以及您需要的功能。下表中列出了与 JBoss EAP 兼容的各种 HTTP 连接器所支持配置和功能的比较。

有关 HTTP 连接器受支持配置的最新信息,请参阅 JBoss EAP 支持的配置

表 24.1. HTTP 连接器支持的配置

连接器Web 服务器支持的操作系统支持的协议

mod_cluster

红帽 JBoss 核心服务 Apache HTTP 服务器, 红帽 JBoss Web 服务器 Apache HTTP 服务器, JBoss EAP(Undertow)

红帽企业 Linux、Microsoft Windows Server、Oracle Solaris

HTTP、HTTPS、AJP、WebSocket

mod_jk

Red Hat JBoss Core Services Apache HTTP Server, Red Hat JBoss Web Server Apache HTTP Server

红帽企业 Linux、Microsoft Windows Server、Oracle Solaris

AJP

mod_proxy

Red Hat JBoss Core Services Apache HTTP Server, Red Hat JBoss Web Server Apache HTTP Server

红帽企业 Linux、Microsoft Windows Server、Oracle Solaris

HTTP、HTTPS、AJP

ISAPI 连接器

Microsoft IIS

Microsoft Windows Server

AJP

NSAPI 连接器

Oracle iPlanet Web 服务器

Oracle Solaris

AJP

表 24.2. HTTP 连接器功能

连接器支持粘滞会话适应部署状态

mod_cluster

是。检测应用的部署和取消部署,并根据应用是否在该服务器上部署,动态决定是否将客户端请求定向到服务器。

mod_jk

否。只要容器可用,无论应用状态如何,直接向容器发出客户端请求。

mod_proxy

否。只要容器可用,无论应用状态如何,直接向容器发出客户端请求。

ISAPI 连接器

否。只要容器可用,无论应用状态如何,直接向容器发出客户端请求。

NSAPI 连接器

否。只要容器可用,无论应用状态如何,直接向容器发出客户端请求。

24.5.2. Apache HTTP 服务器

现在,可以使用 Red Hat JBoss Core Services 单独下载 Apache HTTP Server 捆绑包。这简化了安装和配置,并实现了更加一致的更新体验。

24.5.2.1. 安装 Apache HTTP 服务器

有关安装 Apache HTTP 服务器的详情请参考 JBoss 核心服务 Apache HTTP 服务器安装指南

24.5.3. 接受来自外部 Web 服务器的请求

只要配置了正确的协议处理程序,如 AJP、HTTP 或 HTTPS,JBoss EAP 不要求任何特殊配置开始接受来自代理服务器的请求。

如果代理服务器使用 mod_jk、mod_proxy、ISAPI 或 NSAPI,它将请求发送到 JBoss EAP 和 JBoss EAP 只需提供响应。使用 mod_cluster,您还必须配置网络,以允许 JBoss EAP 向其当前负载、应用程序生命周期事件和健康状态等信息发送信息,以帮助它确定路由请求的位置。有关配置 mod_cluster 代理服务器的详情,请参考 mod_cluster HTTP 连接器

更新 JBoss EAP 配置

在以下步骤中,将示例中的协议和端口替换为您需要配置的协议和端口。

  1. 配置 Undertow 的 instance-id 属性。

    外部 Web 服务器使用 instance-id 在其连接器配置中标识 JBoss EAP 实例。使用以下管理 CLI 命令,在 Undertow 中设置 instance-id 属性:

    /subsystem=undertow:write-attribute(name=instance-id,value=node1)

    在上例中,外部 Web 服务器将当前的 JBoss EAP 实例识别为 node1

  2. 将所需的监听程序添加到 Undertow:

    为了使外部 Web 服务器能够连接 JBoss EAP,Undertow 需要侦听器。每一协议需要自己的侦听器,它们绑定到套接字绑定。

    注意

    根据您所需的协议和端口配置,此步骤可能并不是必需的。在所有默认 JBoss EAP 配置中配置 HTTP 侦听器,如果您使用 hafull-ha 配置文件,则会配置 AJP 侦听器。

    您可以通过读取默认服务器配置来检查是否已配置了所需的监听程序:

    /subsystem=undertow/server=default-server:read-resource

    若要向 Undertow 添加侦听器,它必须具有套接字绑定:套接字绑定添加到您的服务器或服务器组使用的套接字绑定组中。以下管理 CLI 命令向 标准套接字绑定添加了 ajp 套接字 绑定(绑定到端口 8009

    /socket-binding-group=standard-sockets/socket-binding=ajp:add(port=8009)

    以下管理 CLI 命令使用 ajp 套接字绑定向 Undertow 添加 ajp 侦听器:

    /subsystem=undertow/server=default-server/ajp-listener=ajp:add(socket-binding=ajp)