22.5. 使用外部 Web 服务器作为代理服务器
JBoss EAP 可以使用支持的 HTTP、HTTPS 或 AJP 协议来接受来自外部 Web 服务器的请求,具体取决于外部 Web 服务器配置。
如需了解每个 web 服务器支持的 HTTP 连接器的详情,请参阅 HTTP Connectors 概述。确定要使用的 Web 服务器和 HTTP 连接器后,请参阅适当的部分,以了解有关配置连接器的信息:
- 请参阅 Apache HTTP 服务器的 mod_cluster、mod_jk 或 mod_proxy 部分。
- 请参阅 Microsoft IIS 的 ISAPI 连接器 部分。
- 请参阅 Oracle iPlanet Web Server 的 NSAPI 连接器 部分。
有关 HTTP 连接器支持的配置的最新信息,请参阅 JBoss EAP 支持的配置。
您还需要确保 JBoss EAP 配置为接受来自外部 Web 服务器的请求。
22.5.1. HTTP Connectors 概述
JBoss EAP 能够使用内置于外部 Web 服务器中的负载平衡和集群机制,如 Apache HTTP 服务器、MicrosoftSign 和 Oracle iPlanet 以及 Undertow。JBoss EAP 使用连接器与 Web 服务器通信。这些连接器在 JBoss EAP 的 undertow
子系统中配置。
Web 服务器包括控制 HTTP 请求路由到 JBoss EAP 节点的软件模块。每个模块都因其工作方式和配置方式而异。模块配置为在多个 JBoss EAP 节点之间平衡工作负载,以便在出现故障时将工作负载移到备用服务器。
JBoss EAP 支持多种不同的连接器。您选择的服务器取决于使用的 Web 服务器以及您需要的功能。下表包括了与 JBoss EAP 兼容的各种 HTTP 连接器支持的配置和功能的比较。
有关 HTTP 连接器支持的配置的最新信息,请参阅 JBoss EAP 支持的配置。
连接器 | Web 服务器 | 支持的操作系统 | 支持的协议 |
---|---|---|---|
Red Hat JBoss Core Services Apache HTTP Server, Red Hat JBoss Web Server Apache HTTP Server, JBoss EAP (Undertow) | Red Hat Enterprise Linux, Microsoft Windows Server, Oracle Solaris | HTTP, HTTPS, AJP, WebSocket | |
Red Hat JBoss Core Services Apache HTTP Server, Red Hat JBoss Web Server Apache HTTP Server | Red Hat Enterprise Linux, Microsoft Windows Server, Oracle Solaris | AJP | |
Red Hat JBoss Core Services Apache HTTP Server, Red Hat JBoss Web Server Apache HTTP Server | Red Hat Enterprise Linux, Microsoft Windows Server, Oracle Solaris | HTTP, HTTPS, AJP | |
Microsoft IIS | Microsoft Windows Server | AJP | |
Oracle iPlanet Web Server | Oracle Solaris | AJP |
连接器 | 支持粘性会话 | 适应部署状态 |
---|---|---|
是 | 是。检测应用程序的部署和取消部署,并动态决定根据应用程序是否部署到该服务器上,将客户端请求定向到服务器。 | |
是 | 否。只要容器可用,将客户端请求定向到容器,而不考虑应用状态。 | |
是 | 否。只要容器可用,将客户端请求定向到容器,而不考虑应用状态。 | |
是 | 否。只要容器可用,将客户端请求定向到容器,而不考虑应用状态。 | |
是 | 否。只要容器可用,将客户端请求定向到容器,而不考虑应用状态。 |
22.5.2. Apache HTTP 服务器
现在,一个独立的 Apache HTTP 服务器捆绑包作为 Red Hat JBoss Core Services 的单独下载。这简化了安装和配置,并允许获得更加一致的更新体验。
22.5.2.1. 安装 Apache HTTP 服务器
有关安装 Apache HTTP 服务器的详情,请参考 JBoss Core Services Apache HTTP Server 安装指南。
22.5.3. 接受来自外部 Web 服务器的请求
JBoss EAP 不需要任何特殊配置,即可开始接受代理服务器的请求,只要配置了 correct protocol 处理程序,如 AJP、HTTP 或 HTTPS。
如果代理服务器使用 mod_jk、mod_proxy、ISAPI 或 NSAPI,它将请求发送到 JBoss EAP,JBoss EAP 仅提供响应。使用 mod_cluster 时,您还必须配置网络,以允许 JBoss EAP 将信息(如其当前负载、应用程序生命周期事件和健康状态)发送到代理服务器,以帮助它确定路由请求的位置。有关配置 mod_cluster 代理服务器的更多信息,请参阅 mod_cluster HTTP Connector。
更新 JBoss EAP 配置
在以下步骤中,将示例中的协议和端口替换为您需要配置的。
配置 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
。将所需的监听程序添加到 Undertow。
若要让外部 Web 服务器能够连接 JBoss EAP,Undertow 需要侦听器。每个协议需要自己的监听程序,该监听程序与套接字绑定相关联。
注意根据您的所需协议和端口配置,可能不需要这一步。HTTP 侦听器在所有默认 JBoss EAP 配置中配置,如果您使用 ha 或 full-ha 配置文件,则配置了 AJP 侦听器。
您可以通过读取默认服务器配置来检查所需的监听程序是否已配置:
/subsystem=undertow/server=default-server:read-resource
若要向 Undertow 添加侦听器,它必须具有套接字绑定。套接字绑定添加到服务器或服务器组使用的套接字绑定组中。以下管理 CLI 命令将绑定到端口
8009
的ajp
套接字绑定添加到standard-sockets
套接字绑定组中/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)