Apache HTTP 服务器连接器和负载平衡指南
用于 Red Hat JBoss Core Services 2.4.51
摘要
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
要报告错误或改进文档,请登录到 Red Hat JIRA 帐户并提交问题。如果您没有 Red Hat Jira 帐户,则会提示您创建一个帐户。
流程
- 单击以下链接 以创建 ticket。
- 在 Summary 中输入问题的简短描述。
- 在 Description 中提供问题或功能增强的详细描述。包括一个指向文档中问题的 URL。
- 点 Submit 创建问题,并将问题路由到适当的文档团队。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
第 1 章 HTTP 连接器 复制链接链接已复制到粘贴板!
红帽 JBoss 核心服务(JBCS)包括两种不同的 HTTP 连接器,Apache HTTP 服务器可用于对一组后端 servlet 容器进行负载平衡 HTTP 请求:
-
Apache Tomcat 连接器(
mod_jk) 支持 HTTP 请求对一组 servlet 容器的负载平衡,同时维护粘性会话并通过 Apache JServ 协议 (AJP) 进行通信。 -
JBoss HTTP 连接器 (
mod_proxy_cluster) 是比mod_jk更高级的负载均衡器。mod_proxy_cluster连接器提供mod_jk的所有功能,以及实时负载平衡计算、应用生命周期控制、自动代理发现和多个协议支持等功能。
JBCS 和 Red Hat Enterprise Linux (RHEL)提供 Apache HTTP 服务器的独立分发。您可以使用 Apache HTTP 服务器的 JBCS 发行版,方法是使用 mod_jk、mod_proxy_cluster 或 连接器作为代理连接到后端应用服务器。
mod_proxy
请考虑以下指南:
-
从 RHEL 7 开始,Apache HTTP 服务器的 JBCS 和 RHEL 发行版提供相同的
mod_proxy模块。 -
在 RHEL 版本 7 和 8 中,只有 Apache HTTP 服务器的 JBCS 发行版提供
mod_jk和mod_proxy_cluster连接器。 -
从 RHEL 9 开始,Apache HTTP 服务器的 JBCS 和 RHEL 发行版还提供与
mod_jk连接器和mod_proxy_cluster连接器相同的副本。 -
从存档文件或从 RPM 软件包安装 Apache HTTP 服务器的 JBCS 发行版,使用
groupinstall选项还会自动安装mod_jk和mod_proxy_cluster连接器。 -
安装 Apache HTTP 服务器的 RHEL 9 发行版不会自动安装
mod_jk和mod_proxy_cluster连接器。在这种情况下,您可以使用 RHEL Application Streams 手动安装适当的mod_jk或mod_proxy_cluster软件包。如需更多信息,请参阅Mod_jk安装和升级 。
Apache HTTP 服务器连接器和负载平衡指南描述了如何安装和配置 JBCS 提供的 mod_jk 和 mod_proxy_cluster 连接器。本指南还包括使用 mod_proxy_cluster 进行基本负载平衡的工作示例。
本指南中显示的大多数文件和目录路径都是 Red Hat Enterprise Linux 上 JBCS 的归档安装。对于其他平台,请使用您相应安装的正确路径,如 Red Hat JBoss Core Services Apache HTTP Server 安装指南中的指定。
第 2 章 使用 Apache Tomcat 连接器 (mod_jk) 的负载平衡 复制链接链接已复制到粘贴板!
Apache Tomcat Connector, mod_jk 是一个插件,它允许 Apache HTTP 服务器将 Web 请求转发到后端 servlet 容器。mod_jk 模块还允许 Apache HTTP 服务器将请求负载平衡到一组 servlet 容器,同时维护粘性会话。
2.1. mod_jk 安装 复制链接链接已复制到粘贴板!
红帽 JBoss 核心服务(JBCS)和 Red Hat Enterprise Linux (RHEL)提供单独的 Apache HTTP 服务器分发。您安装的 Apache HTTP 服务器分发决定了 mod_jk 连接器的安装是自动的,还是需要手动步骤。根据您安装的 Apache HTTP 服务器的分发,mod_jk 模块和配置文件的安装路径也会不同。
JBCS Apache HTTP 服务器支持在所有支持的操作系统中使用 mod_jk。RHEL Apache HTTP 服务器只支持在 RHEL 9 上使用 mod_jk。
2.1.1. 使用 JBCS Apache HTTP 服务器安装 mod_jk 复制链接链接已复制到粘贴板!
JBCS 安装的 Apache HTTP 服务器部分会自动安装 mod_jk 模块。
您可以按照 Red Hat JBoss Core Services Apache HTTP Server 安装指南中的步骤为您的操作系统安装 JBCS Apache HTTP 服务器。如需更多信息,请参阅附加资源 链接。
在使用 JBCS Apache HTTP 服务器时,请考虑以下有关 mod_jk 安装的准则:
-
mod_jk.so模块安装在JBCS_HOME/httpd/modules目录中。 -
mod_jk.conf.sample、worker.properties.sample、urworkermap.properties.sample配置文件位于JBCS_HOME/httpd/conf.d目录中。 -
mod_jk.conf.sample文件包含mod_jk模块的LoadModule指令。
JBCS_HOME 代表 JBCS 安装的顶级目录,即 /opt/jbcs-httpd24-2.4。
2.1.2. 使用 RHEL Application Streams 安装 mod_jk 复制链接链接已复制到粘贴板!
如果您使用 Application Streams 从 RPM 软件包安装 Apache HTTP 服务器的 RHEL 9 发行版,RHEL 不会自动安装 mod_jk 软件包。在这种情况下,如果要使用 mod_jk 连接器,您必须手动安装 mod_jk 软件包。
先决条件
- 已使用 Application Streams 在 RHEL 9 上安装了 Apache HTTP 服务器。
流程
以 root 用户身份输入以下命令:
dnf install mod_jk
# dnf install mod_jkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要检查
mod_jk软件包是否已成功安装,请输入以下命令:rpm -q mod_jk
# rpm -q mod_jkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令输出已安装软件包的全名,其中包括版本和平台信息。
在使用 RHEL Application Streams 时,请考虑以下有关 mod_jk 安装的准则:
-
mod_jk.so模块安装在/usr/lib64/httpd/modules目录中。 -
mod_jk.conf.sample、worker.properties.sample、urworkermap.properties.sample配置文件位于/etc/httpd/conf.d目录中。 -
mod_jk.conf.sample文件包含mod_jk模块的LoadModule指令。
2.2. 使用 mod_jk 时 Apache HTTP 服务器负载均衡配置 复制链接链接已复制到粘贴板!
您可以将 Apache HTTP 服务器配置为使用 mod_jk 连接器将请求负载平衡到一组 servlet 容器。此设置包括后端 worker 节点的配置。
根据您是否通过 Red Hat JBoss Core Services (JBCS)或使用 Red Hat Enterprise Linux (RHEL) Application Streams 安装 mod_jk,请考虑以下指南:
-
JBCS 在
JBCS_HOME/httpd/conf.d/ 目录中提供的示例配置文件。mod_jk -
RHEL 在
/etc/httpd/conf.d/目录中提供了mod_jk的示例配置文件。
mod_jk 的示例配置文件名为 、mod_jk.conf.sampleworker.properties.sample、uriworkermap.properties.sample。要使用这些示例而不是创建自己的配置文件,您可以删除 .sample 扩展,并根据需要修改文件内容。
您还可以使用红帽客户门户网站中的 Load Balancer 配置工具,快速为 mod_jk 和 Tomcat worker 节点生成最佳配置模板。当您将 Load Balancer Configuration 工具用于 Apache HTTP Server 2.4.51 时,请确保选择 2.4.x 作为 Apache 版本,然后选择 Tomcat/JWS 作为后端配置。
Red Hat JBoss Core Services 2.4.51 不支持将非升级的连接连接到后端 WebSocket 服务器。这意味着,当您为 mod_proxy_wstunnel 模块配置 ProxyPass 指令时,您必须确保 upgrade 参数没有设置为 NONE。有关 mod_proxy_wstunnel 的更多信息,请参阅 Apache 文档。
2.2.1. 将 Apache HTTP 服务器配置为加载 mod_jk 复制链接链接已复制到粘贴板!
您可以通过在 mod_jk.conf 文件中指定配置设置,将 Apache HTTP 服务器配置为加载 mod_jk。根据您使用的 Apache HTTP 服务器分发,配置文件的位置会有所不同。
您还可以执行以下可选配置步骤:
-
除了
JkMount指令外,您还可以使用JkMountFile指令来指定挂载点的配置文件。配置文件包含多个 Tomcat 转发的 URL 映射。 - 您可以配置作为负载均衡器功能的 Apache HTTP 服务器,以记录处理请求的每个 worker 节点的详细信息。如果您需要对负载均衡器进行故障排除,这非常有用。
先决条件
- 已安装 Apache HTTP 服务器。
-
如果您使用 Application Streams 安装 Apache HTTP 服务器的 RHEL 发行版,您已 手动安装
mod_jk。
流程
进入 Apache HTTP 服务器配置目录:
-
如果您使用 JBCS Apache HTTP 服务器,请转到
JBCS_HOME/httpd/conf.d目录。 -
如果您使用 RHEL Apache HTTP 服务器,请转到
/etc/httpd/conf.d目录。
-
如果您使用 JBCS Apache HTTP 服务器,请转到
创建名为
mod_jk.conf的新文件,并输入以下配置详情:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要确保
LoadModule指令引用您安装的mod_jk原生二进制文件。注意JkMount指令指定 Apache HTTP 服务器可以转发到mod_jk模块的 URL。根据JkMount指令的配置,mod_jk将收到的 URL 转发到正确的 servlet 容器。要启用 Apache HTTP 服务器直接提供静态内容(或 PHP 内容),且只对 Java 应用程序使用负载均衡器,前面的配置示例指定,Apache HTTP 服务器仅向
mod_jk负载均衡器使用 URL/application/*发送请求。另外,您还可以将 Apache HTTP 服务器配置为将所有 URL 转发到
mod_jk,方法是在JkMount指令中指定/*。可选: 要使用
JkMountFile指令为挂载点指定配置文件,请执行以下步骤:进入 Apache HTTP 服务器配置目录:
-
如果您使用 JBCS Apache HTTP 服务器,请转到
JBCS_HOME/httpd/conf.d目录。 -
如果您使用 RHEL Apache HTTP 服务器,请转到
/etc/httpd/conf.d目录。
-
如果您使用 JBCS Apache HTTP 服务器,请转到
-
创建名为
uriworkermap.properties的文件。 指定您要转发的 URL 和 worker 名称。
例如:
Simple worker configuration file Mount the Servlet context to the ajp13 worker
# Simple worker configuration file # Mount the Servlet context to the ajp13 worker /application=loadbalancer /application/*=loadbalancerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意所需的语法格式为:
/URL=WORKER_NAME前面的示例将
mod_jk配置为将/application的请求转发到 JBoss Web Server Tomcat 后端。在
mod_jk.conf文件中,输入以下指令:Use external file for mount points. It will be checked for updates each 60 seconds. The format of the file is: /url=worker /examples/*=loadbalancer
# Use external file for mount points. # It will be checked for updates each 60 seconds. # The format of the file is: /url=worker # /examples/*=loadbalancer JkMountFile conf.d/uriworkermap.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
可选: 要启用 Apache HTTP 服务器日志记录,请执行以下步骤之一:
-
在
JkRequestLogFormat指令中包含%w,如上一步中有关mod_jk.conf设置所示。 -
通过在 Apache HTTP Server
LogFormat(s)中包含%{JK_WORKER_NAME}n,记录您要使用的mod_jkworker 的名称。
-
在
2.2.2. 在 mod_jk中配置 worker 节点 复制链接链接已复制到粘贴板!
您可以通过在 worker .properties 文件中指定设置,将多个 worker 节点配置为处理 Apache HTTP 服务器转发到 servlet 容器的请求。根据您使用的 Apache HTTP 服务器分发,配置文件的位置会有所不同。
此流程中的示例演示了如何在加权循环配置中定义两个 mod_jk worker 节点,该配置使用两个 servlet 容器之间的粘性会话。
先决条件
-
您熟悉
worker.properties指令的格式。 -
您已将 Apache HTTP 服务器配置为加载
mod_jk。
流程
进入 Apache HTTP 服务器配置目录:
-
如果您使用 JBCS Apache HTTP 服务器,请转到
JBCS_HOME/httpd/conf.d目录。 -
如果您使用 RHEL Apache HTTP 服务器,请转到
/etc/httpd/conf.d目录。
-
如果您使用 JBCS Apache HTTP 服务器,请转到
-
创建名为
workers.properties的文件。 输入以下配置详情:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在前面的示例中,确保将
host、port和secret设置替换为与您的环境相关的值。重要使用 Tomcat AJP Connector 时,需要
secret属性。您可以在workers.properties文件中指定 worker 节点或负载均衡器的secret属性。例如:worker.<WORKER_NAME>.secret=<YOUR_AJP_SECRET>在上例中,将
<WORKER_NAME>和<YOUR_AJP_SECRET>替换为与您环境相关的值。
2.2.3. 配置 JBoss Web 服务器以使用 mod_jk 复制链接链接已复制到粘贴板!
默认情况下,JBoss Web 服务器配置为接收来自 mod_jk 连接器的 Apache JServ 协议(AJP)流量。在 JBoss Web Server 主机上,在 JWS_HOME/tomcat <VERSION> /conf/server.xml 文件中默认配置 AJP 连接器。
但是,要使用带有 mod_jk 的 worker 节点,您必须执行以下附加配置步骤:
-
在 JBoss Web Server 主机上,在
server.xml文件中,您必须在每个 worker 节点的 Engine 中为jvmRoute属性配置唯一值。 在 Apache HTTP Server 主机上,在
worker.properties文件中,您必须为 worker 节点或负载均衡器指定secret属性。根据您使用的 Apache HTTP 服务器分发,worker.properties文件的位置会有所不同。注意使用 Tomcat AJP 连接器时需要
secret属性。
流程
在 JBoss Web Server 主机上,为每个 worker 节点的 Engine 中为
jvmRoute属性配置唯一值:-
打开
JWS_HOME/tomcat_<VERSION>_/conf/server.xml文件。 输入以下详情:
<Engine name="Catalina" jvmRoute="node1" >
<Engine name="Catalina" jvmRoute="node1" >Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要确保
jvmRoute属性值与您在 Apache HTTP 服务器主机上worker.properties文件中指定的 worker 名称匹配。
-
打开
在 Apache HTTP Server 主机上,为 worker 节点或负载均衡器指定
secret属性:进入 Apache HTTP 服务器配置目录:
-
如果您使用 JBCS Apache HTTP 服务器,请转到
JBCS_HOME/httpd/conf.d目录。 -
如果您使用 RHEL Apache HTTP 服务器,请转到
/etc/httpd/conf.d目录。
-
如果您使用 JBCS Apache HTTP 服务器,请转到
-
打开
workers.properties文件。 确保
secret属性以以下格式指定:worker.<WORKER_NAME>.secret=<YOUR_AJP_SECRET>`
worker.<WORKER_NAME>.secret=<YOUR_AJP_SECRET>`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意确保将 <
WORKER_NAME> 和 <YOUR_AJP_SECRET> 替换为适合您环境的值。注意如果您使用
ProxyPass指令在负载均衡器上设置secret,负载均衡器的所有成员都会继承这个secret。例如:<Proxy balancer://mycluster>` BalancerMember ajp://node1:8009 route=node1 secret=YOUR_AJP_SECRET BalancerMember ajp://node2:8009 route=node2 secret=YOUR_AJP_SECRET </Proxy> ProxyPass /example/ balancer://mycluster/example/ stickysession=JSESSIONID|jsessionid<Proxy balancer://mycluster>` BalancerMember ajp://node1:8009 route=node1 secret=YOUR_AJP_SECRET BalancerMember ajp://node2:8009 route=node2 secret=YOUR_AJP_SECRET </Proxy> ProxyPass /example/ balancer://mycluster/example/ stickysession=JSESSIONID|jsessionidCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 使用 JBoss HTTP 连接器(mod_proxy_cluster)进行负载平衡. 复制链接链接已复制到粘贴板!
mod_proxy_cluster 连接器是一个减少配置、智能负载平衡解决方案,允许 Apache HTTP 服务器连接后端 JBoss Web 服务器或 JBoss EAP 主机。mod_proxy_cluster 模块基于最初开发 JBoss mod_cluster 社区项目的技术。
3.1. mod_proxy_cluster 关键功能和组件 复制链接链接已复制到粘贴板!
mod_proxy_cluster 模块对 JBoss EAP 和 JBoss Web Server worker 节点的 HTTP 请求进行负载均衡。mod_proxy_cluster 模块使用 Apache HTTP 服务器作为代理服务器。
mod_proxy_cluster的主要功能
与 mod_jk 连接器相比,mod_proxy_cluster 连接器有几个优点:
-
启用
mod_proxy_cluster模块后,mod_proxy_cluster管理协议(MCMP)是 Tomcat 服务器和 Apache HTTP 服务器之间的额外连接。Tomcat 服务器使用 MCMP 将服务器端负载图和生命周期事件传输回 Apache HTTP 服务器,方法是使用自定义的 HTTP 方法。 -
带有
mod_proxy_cluster的 Apache HTTP 服务器的动态配置允许具有mod_proxy_cluster侦听器的 Tomcat 服务器加入负载平衡安排,而无需手动配置。 - Tomcat 服务器执行负载计算,而不是依赖 Apache HTTP 服务器。这使得负载平衡指标比其他连接器更准确。
-
mod_proxy_cluster连接器提供精细的应用程序生命周期控制。每个 Tomcat 服务器将 Web 应用程序上下文生命周期事件转发到 Apache HTTP 服务器。这些生命周期事件包括告知 Apache HTTP 服务器启动或停止特定上下文的路由请求。这可防止最终用户因为资源不可用而看到 HTTP 错误。 -
您可以使用带有
mod_proxy_cluster的 Apache JServ Protocol (AJP)、Hypertext Transfer Protocol (HTTP)或 Hypertext 传输协议安全(HTTPS)传输。
mod_proxy_cluster 组件
在代理服务器中,mod_proxy_cluster 由四个 Apache 模块组成:
| 组件 | 描述 |
|---|---|
|
| Shared Memory Manager 模块与多个 Apache HTTP 服务器进程共享实时 worker 节点信息。 |
|
| Cluster Manager 模块接收并确认来自 worker 节点的信息,包括节点注册、节点加载数据和节点应用程序生命周期事件。 |
|
| Proxy Balancer 模块处理到集群节点的请求路由。Proxy Balancer 根据集群中的应用程序位置、每个集群节点的当前状态和 Session ID (如果请求是已建立的会话的一部分)来选择适当的目标节点。 |
|
| Proxy Advertisement 模块将通过 UDP 多播消息广播代理服务器的存在。服务器公告消息包含 IP 地址和端口号,其中代理服务器正在侦听您要加入负载平衡集群的 worker 节点的响应。 |
3.2. mod_proxy_cluster 安装和升级 复制链接链接已复制到粘贴板!
红帽 JBoss 核心服务(JBCS)和 Red Hat Enterprise Linux (RHEL)提供单独的 Apache HTTP 服务器分发。您安装的 Apache HTTP 服务器分发决定了 mod_proxy_cluster 连接器的安装是自动的,还是需要手动步骤。根据您安装的 Apache HTTP 服务器的发布,mod_proxy_cluster 模块和配置文件的安装路径也会不同。
JBCS Apache HTTP 服务器支持在所有支持的操作系统中使用 mod_proxy_cluster。RHEL Apache HTTP 服务器只支持在 RHEL 9 上使用 mod_proxy_cluster。
3.2.1. 使用 JBCS Apache HTTP 服务器安装 mod_proxy_cluster 复制链接链接已复制到粘贴板!
JBCS 安装的 Apache HTTP 服务器部分会自动安装 mod_proxy_cluster 模块。
您可以按照 Red Hat JBoss Core Services Apache HTTP Server 安装指南中的步骤为您的操作系统安装或升级到最新的 JBCS Apache HTTP 服务器发行版本。如需更多信息,请参阅附加资源 链接。
在使用 JBCS Apache HTTP 服务器时,请考虑以下有关 mod_proxy_cluster 安装的准则:
-
mod_proxy_cluster.so,mod_cluster_slotmem.so,mod_manager.so, 和mod_advertise.so模块安装在JBCS_HOME/httpd/modules目录中。 -
mod_proxy_cluster.conf.sample配置文件位于JBCS_HOME/httpd/conf.d目录中。 -
mod_proxy_cluster.conf.sample文件包含mod_proxy_cluster模块的LoadModule指令。
JBCS_HOME 代表 JBCS 安装的顶级目录,即 /opt/jbcs-httpd24-2.4。
3.2.2. 从以前的 JBCS 发行版本升级 mod_proxy_cluster 复制链接链接已复制到粘贴板!
2.4.37 及更早的版本中提供的 JBCS 的 mod_cluster-native 软件包在 2.4.51 版本中被重命名为 mod_proxy_cluster。作为此更改的一部分,之前版本中可用的 mod_cluster.conf 文件也会在 2.4.51 发行版本中重命名为 mod_proxy_cluster.conf。JBCS 以不同的方式处理现有 mod_proxy_cluster 配置的升级,具体取决于您从归档文件或 RPM 软件包安装 JBCS。
从 RPM 软件包安装时升级 mod_proxy_cluster 配置
如果要升级从 RHEL 7 或 RHEL 8 上的 RPM 软件包安装的现有 JBCS 安装,请考虑以下指南:
-
如果您要从 JBCS 2.4.37 或更早版本升级,则 JBCS 会在升级过程中保留现有的
mod_cluster.conf文件。在这种情况下,升级的 JBCS 2.4.51 部署包括您现有的mod_cluster.conf文件和默认的mod_proxy_cluster.conf文件。如果随后希望迁移到使用mod_proxy_cluster.conf,您可以手动更新默认的mod_proxy_cluster.conf文件以满足您的设置要求。 -
如果您要从现有 JBCS 2.4.51 版本升级,则 JBCS 会在升级过程中保留现有的
mod_proxy_cluster.conf文件。在这种情况下,升级的 JBCS 2.4.51 部署包括您现有的mod_proxy_cluster.conf文件和默认的mod_proxy_cluster.conf.rpmnew文件。
从存档文件安装时升级 mod_proxy_cluster 配置
如果您要升级从存档文件安装的现有 JBCS 安装,请考虑以下准则:
-
如果您要从 JBCS 2.4.37 或更早版本升级,则不需要对提取 2.4.51 归档文件执行任何操作。JBCS 2.4.51 不包含默认的
mod_cluster.conf文件,因此您现有的mod_cluster.conf文件会在产品升级过程中保留。在这种情况下,升级的 JBCS 2.4.51 部署包括您现有的mod_cluster.conf文件和默认的mod_proxy_cluster.conf文件。如果随后希望迁移到使用mod_proxy_cluster.conf,您可以手动更新默认的mod_proxy_cluster.conf文件以满足您的设置要求。 -
如果您要从现有 JBCS 2.4.51 版本升级,您必须首先将现有
mod_proxy_cluster.conf文件复制到临时位置。JBCS 2.4.51 包含默认的mod_proxy_cluster.conf文件,该文件会在产品升级过程中自动覆盖现有的mod_proxy_cluster.conf文件。提取最新的 2.4.51 归档文件后,您可以将现有mod_proxy_cluster.conf文件的备份复制到正确的位置,以覆盖默认文件。
3.2.3. 使用 RHEL Application Streams 安装 mod_proxy_cluster 复制链接链接已复制到粘贴板!
如果您使用 Application Streams 从 RPM 软件包安装 Apache HTTP 服务器的 RHEL 9 发行版,RHEL 不会自动安装 mod_proxy_cluster 软件包。在这种情况下,如果要使用 mod_proxy_cluster 连接器,您必须手动安装 mod_proxy_cluster 软件包。
先决条件
- 已使用 Application Streams 在 RHEL 9 上安装了 Apache HTTP 服务器。
流程
以 root 用户身份输入以下命令:
dnf install mod_proxy_cluster
# dnf install mod_proxy_clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要检查
mod_proxy_cluster软件包是否已成功安装,请输入以下命令:rpm -q mod_proxy_cluster
# rpm -q mod_proxy_clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令输出已安装软件包的全名,其中包括版本和平台信息。
在使用 RHEL Application Streams 时,请考虑以下有关 mod_proxy_cluster 安装的指南:
-
mod_proxy_cluster.so,mod_cluster_slotmem.so,mod_manager.so, 和mod_advertise.so模块安装在/usr/lib64/httpd/modules目录中。 -
mod_proxy_cluster.conf.sample配置文件位于/etc/httpd/conf.d目录中。 -
mod_proxy_cluster.conf.sample文件包含mod_proxy_cluster模块的LoadModule指令。
3.3. 使用 mod_proxy_cluster时 Apache HTTP 服务器负载均衡配置 复制链接链接已复制到粘贴板!
在 Apache HTTP 服务器 2.1 及更高版本中,默认为 Apache HTTP 服务器正确配置 mod_proxy_cluster。有关设置自定义配置的更多信息,请参阅配置 基本代理服务器。
mod_proxy_cluster的配置文件示例
根据您是否通过 Red Hat JBoss Core Services (JBCS)或使用 Red Hat Enterprise Linux (RHEL) Application Streams 安装 mod_proxy_cluster,请考虑以下指南:
-
JBCS 在
JBCS_HOME/httpd/conf.d/ 目录中提供了的示例配置文件。mod_proxy_cluster -
RHEL 在
/etc/httpd/conf.d/目录中提供了mod_proxy_cluster的示例配置文件。
mod_proxy_cluster 的示例配置文件命名为 mod_proxy_cluster.conf.sample。要使用此示例而不是创建自己的配置文件,您可以删除 .sample 扩展,并根据需要修改文件内容。
您还可以使用红帽客户门户网站中的 Load Balancer 配置工具,快速为 mod_proxy_cluster 和 Tomcat worker 节点生成最佳配置模板。当您将 Load Balancer Configuration 工具用于 Apache HTTP Server 2.4.51 时,请确保选择 2.4.x 作为 Apache 版本,然后选择 Tomcat/JWS 作为后端配置。
使用 mod_proxy_cluster的指南
考虑以下使用 mod_proxy_cluster 连接器的准则:
-
当使用
mod_proxy_cluster连接器时,您必须启用mod_proxy模块并禁用mod_proxy_balancer模块。 -
如果您希望
mod_proxy_cluster使用 Apache JServ Protocol (AJP),则必须启用proxy_ajp_module。 -
使用 AJPSecret
your_secret为 AJP 后端提供机密。如果您的_secret与后端中配置的值不匹配,则后端会为通过代理发送的任何请求发送503错误响应。
Red Hat JBoss Core Services 2.4.51 不支持将非升级的连接连接到后端 websocket 服务器。这意味着,当您为 mod_proxy_wstunnel 模块配置 ProxyPass 指令时,您必须确保 upgrade 参数没有设置为 NONE。有关 mod_proxy_wstunnel 的更多信息,请参阅 Apache 文档。
3.3.1. 配置基本代理服务器 复制链接链接已复制到粘贴板!
您可以将 Apache HTTP 服务器配置为充当代理服务器,从而在 Web 客户端和后端 web 服务器之间转发请求和响应。您必须配置代理服务器监听程序,以接收来自后端 worker 节点的连接请求和响应。当您要配置使用 mod_proxy_cluster 的负载平衡代理服务器时,还必须为管理频道配置虚拟主机。
先决条件
- 已安装 Apache HTTP 服务器。
-
如果您使用 Application Streams 安装 Apache HTTP 服务器的 RHEL 发行版,您可以 手动安装
mod_proxy_cluster。 - 为代理服务器侦听器指定的端口必须为传入的 TCP 连接打开。
流程
进入 Apache HTTP 服务器配置目录:
-
如果您使用 JBCS Apache HTTP 服务器,请转到
JBCS_HOME/httpd/conf.d目录。 -
如果您使用 RHEL Apache HTTP 服务器,请转到
/etc/httpd/conf.d目录。
-
如果您使用 JBCS Apache HTTP 服务器,请转到
-
打开
mod_proxy_cluster.conf文件。 要为代理服务器创建
Listen指令,在mod_proxy_cluster.conf文件中输入以下行:Listen IP_ADDRESS:PORT_NUMBER
Listen IP_ADDRESS:PORT_NUMBERCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在前面的示例中,将
IP_ADDRESS替换为代理服务器用来与 worker 节点通信的服务器网络接口的地址,并将PORT_NUMBER替换为代理服务器侦听的端口。确保为进入 TCP 连接开放了端口。
要创建虚拟主机,请在
mod_proxy_cluster.conf文件中输入以下详情:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在前面的示例中,将
IP_ADDRESS和PORT_NUMBER替换为您为Listen指令指定的服务器网络接口地址和端口号。此地址和端口组合仅用于
mod_proxy_cluster管理消息。这个地址和端口组合不用于常规流量。
有关启动 Apache HTTP 服务器服务的更多信息,请参阅 Red Hat JBoss Core Services Apache HTTP Server 安装指南。
3.3.1.1. 禁用服务器公告 复制链接链接已复制到粘贴板!
代理服务器使用 UDP 多播来广告其自身。AdvertiseFrequency 指令指示服务器默认每 10 秒发送服务器广告消息。服务器公告消息包含您在 VirtualHost 定义中指定的 IP_ADDRESS 和 PORT_NUMBER。配置为响应服务器公告的 worker 节点使用此信息在代理服务器中注册自己。如果要防止 worker 节点使用代理服务器注册,您可以选择性地禁用服务器公告。
当代理服务器和 worker 节点之间有 UDP 多播时,服务器公告会添加 worker 节点,而无需进一步在代理服务器中配置。服务器公告只需要在 worker 节点上进行最小配置。
先决条件
流程
进入 Apache HTTP 服务器配置目录:
-
如果您使用 JBCS Apache HTTP 服务器,请转到
JBCS_HOME/httpd/conf.d目录。 -
如果您使用 RHEL Apache HTTP 服务器,请转到
/etc/httpd/conf.d目录。
-
如果您使用 JBCS Apache HTTP 服务器,请转到
-
打开
mod_proxy_cluster.conf文件。 将以下指令添加到
VirtualHost定义中:ServerAdvertise Off
ServerAdvertise OffCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果禁用了服务器公告,或者代理服务器和 worker 节点之间没有 UDP 多播,您可以使用静态的代理服务器列表配置 worker 节点。在这两种情况下,您不需要使用 worker 节点列表配置代理服务器。
3.3.1.2. 日志记录 worker 节点详情 复制链接链接已复制到粘贴板!
当您配置使用 mod_proxy_cluster 的负载均衡代理服务器时,您可以选择将 Apache HTTP 服务器配置为记录处理请求的每个 worker 节点的详情。如果您需要对负载均衡器进行故障排除,日志记录 worker 节点详情非常有用。
先决条件
流程
进入 Apache HTTP 服务器配置目录:
-
如果您使用 JBCS Apache HTTP 服务器,请转到
JBCS_HOME/httpd/conf.d目录。 -
如果您使用 RHEL Apache HTTP 服务器,请转到
/etc/httpd/conf.d目录。
-
如果您使用 JBCS Apache HTTP 服务器,请转到
-
打开
mod_proxy_cluster.conf文件。 在您的 Apache HTTP Server
LogFormat指令中添加以下详情:%{BALANCER_NAME}e :: The name of the balancer that served the request. %{BALANCER_WORKER_NAME}e :: The name of the worker node that served the request.%{BALANCER_NAME}e :: The name of the balancer that served the request. %{BALANCER_WORKER_NAME}e :: The name of the worker node that served the request.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. 在 mod_proxy_cluster中配置 JBoss Web Server worker 节点 复制链接链接已复制到粘贴板!
使用 mod_proxy_cluster 时,您可以将后端 worker 节点配置为仅在非集群模式下运行的 JBoss Web Server Tomcat 服务。在这种情况下,mod_proxy_cluster 在计算负载均衡因素时,在任何特定时间都只能使用一个负载指标。
JBoss Web Server worker 节点只支持 mod_proxy_cluster 功能的子集。JBoss EAP 提供了完整的 mod_proxy_cluster 功能。
先决条件
流程
要为 JBoss Web 服务器添加监听程序,在
JWS_HOME/tomcat <VERSION> /conf/server.xml文件中添加以下Listener元素,在其他Listener元素下:<Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="true" stickySession="true" stickySessionForce="false" stickySessionRemove="true" />
<Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="true" stickySession="true" stickySessionForce="false" stickySessionRemove="true" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要为 worker 节点赋予一个唯一的身份,在
JWS_HOME/tomcat <VERSION> /conf/server.xml文件中,将jvmRoute属性和值添加到Engine元素:<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker01">
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker01">Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要配置
STATUS MCMP消息频率,请修改org.jboss.modcluster.container.catalina.status-frequencyJava 系统属性。例如:
-Dorg.jboss.modcluster.container.catalina.status-frequency=6
-Dorg.jboss.modcluster.container.catalina.status-frequency=6Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意JBoss Web Server worker 节点定期向 Apache HTTP 服务器平衡发送包含其当前负载状态的状态消息。这些消息的默认频率为 10 秒。如果您拥有数百个 worker 节点,则
STATUS MCMP消息可以提高 Apache HTTP 服务器网络上的流量拥塞。您可以通过修改
org.jboss.modcluster.container.catalina.status-frequencyJava 系统属性来配置MCMP消息频率。默认情况下,属性接受以秒为单位指定的值,乘以 10。例如,将 属性设置为1表示 10 秒。在前面的示例中,属性设为6,即 60 秒。可选: 要为代理服务器公告配置防火墙,请完成以下步骤之一在 worker 节点的防火墙上打开端口
23364:对于 RHEL:
firewall-cmd --permanent --zone=public --add-port=23364/udp
firewall-cmd --permanent --zone=public --add-port=23364/udpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于使用 PowerShell 的 Windows Server:
Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "NetSh Advfirewall firewall add rule name="UDP Port 23364" dir=in action=allow protocol=UDP localport=23364"' Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "NetSh Advfirewall firewall add rule name="UDP Port 23364" dir=out action=allow protocol=UDP localport=23364"'
Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "NetSh Advfirewall firewall add rule name="UDP Port 23364" dir=in action=allow protocol=UDP localport=23364"' Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "NetSh Advfirewall firewall add rule name="UDP Port 23364" dir=out action=allow protocol=UDP localport=23364"'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意当代理服务器使用
mod_proxy_cluster时,代理服务器可以使用 UDP 多播来广告其自身。大多数操作系统防火墙默认阻止服务器广告功能。要启用服务器公告并接收这些多播信息,您可以为 worker 节点的防火墙上的 UDP 连接打开端口23364,如上例所示。
3.3.3. 配置 worker 节点以使用静态代理服务器列表运行 复制链接链接已复制到粘贴板!
服务器公告允许 worker 节点动态发现并使用代理服务器注册。如果 UDP 多播不可用,或者禁用服务器广告,则必须使用代理服务器地址和端口的静态列表配置 JBoss Web Server worker 节点。
先决条件
流程
-
打开
JWS_HOME/tomcat <VERSION> /conf/server.xml文件。 要定义
mod_proxy_cluster侦听器并禁用动态代理发现,修改ModClusterListener的Listener元素。例如:
<Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="false" stickySession="true" stickySessionForce="false" stickySessionRemove="true"/>
<Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="false" stickySession="true" stickySessionForce="false" stickySessionRemove="true"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意确保将
advertise属性设置为false。要创建静态代理服务器列表,请使用以下格式添加以逗号分隔的代理列表来更新
proxyList属性:IP_ADDRESS:PORT:IP_ADDRESS:PORT例如:
<Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="false" stickySession="true" stickySessionForce="false" stickySessionRemove="true" proxyList="10.33.144.3:6666,10.33.144.1:6666"/>
<Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="false" stickySession="true" stickySessionForce="false" stickySessionRemove="true" proxyList="10.33.144.3:6666,10.33.144.1:6666"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. mod_proxy_cluster 字符限制 复制链接链接已复制到粘贴板!
mod_proxy_cluster 模块使用共享内存来保持节点描述。共享内存是在 Apache HTTP 服务器启动时创建的,每个项目的结构已被修复。
当您定义代理服务器和 worker 节点属性时,请确保遵循以下字符限制:
| 属性 | 最大字符限制 | 描述 |
|---|---|---|
| 别名长度 | 100 个字符 |
alias 对应于对应虚拟主机的网络名称;该名称在 |
| 上下文长度 | 40 个字符 |
例如,如果 |
| 负载均衡器名称长度 | 40 个字符 |
这是 < |
|
| 80 个字符 |
|
| 域名长度 | 20 个字符 |
这是 < |
| 节点的主机名长度 | 64 个字符 |
这是 < |
| 节点的端口长度 | 7 个字符 |
这是 < |
| 节点的方案长度 | 6 个字符 |
这是连接器的协议。可能的值有 |
| Cookie 名称长度 | 30 个字符 |
这是会话 ID 的标头 Cookie 名称。默认值为 |
| 路径名称长度 | 30 个字符 |
这是会话 ID 的参数名称。默认值为 |
| 会话 ID 长度 | 120 个字符 |
会话 ID 的格式如下: |
第 4 章 使用 mod_proxy_cluster的负载均衡配置示例 复制链接链接已复制到粘贴板!
您可以将 JBCS 配置为使用 mod_proxy_cluster 连接器在 Red Hat Enterprise Linux 系统中进行负载平衡。
当您要配置使用 mod_proxy_cluster 的负载平衡解决方案时,您必须执行以下任务:
4.1. 将 JBCS 设置为代理服务器 复制链接链接已复制到粘贴板!
当您将 JBCS 配置为使用 mod_proxy_cluster 时,您必须通过在 mod_proxy_cluster.conf 文件中指定配置详情将 JBCS 设置为代理服务器。
流程
-
进入
JBCS_HOME/httpd/conf.d/目录。 -
创建名为
mod_proxy_cluster.conf的文件。 输入以下配置详情:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如上例所示,
mod_proxy_cluster软件包要求您将conf.d文件中的MemManagerFile指令设置为cache/mod_proxy_cluster。注意前面的示例演示了如何将 JBCS 设置为侦听
localhost的代理服务器。
4.2. 配置 Tomcat worker 节点 复制链接链接已复制到粘贴板!
当您将 JBCS 配置为使用 mod_proxy_cluster 时,您必须通过将 Listener 元素添加到 server.xml 文件来配置 Tomcat worker 节点。
先决条件
- 您已将 JBCS 设置为代理服务器。
流程
-
打开
JWS_HOME/tomcat <VERSION> /conf/server.xml文件。 添加以下
Listener元素:<Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="true"/>
<Listener className="org.jboss.modcluster.container.catalina.standalone.ModClusterListener" advertise="true"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. 定义 iptables 防火墙规则示例 复制链接链接已复制到粘贴板!
当您将 JBCS 配置为使用 mod_proxy_cluster 时,您必须使用 iptables 定义防火墙规则。
先决条件
流程
使用
iptables定义一组防火墙规则。例如:
/sbin/iptables -I INPUT 5 -p udp -d 224.0.1.0/24 -j ACCEPT -m comment --comment "mod_proxy_cluster traffic" /sbin/iptables -I INPUT 6 -p udp -d 224.0.0.0/4 -j ACCEPT -m comment --comment "JBoss Cluster traffic" /sbin/iptables -I INPUT 9 -p udp -s 192.168.1.0/24 -j ACCEPT -m comment --comment "cluster subnet for inter-node communication" /sbin/iptables -I INPUT 10 -p tcp -s 192.168.1.0/24 -j ACCEPT -m comment --comment "cluster subnet for inter-node communication" /etc/init.d/iptables save
/sbin/iptables -I INPUT 5 -p udp -d 224.0.1.0/24 -j ACCEPT -m comment --comment "mod_proxy_cluster traffic" /sbin/iptables -I INPUT 6 -p udp -d 224.0.0.0/4 -j ACCEPT -m comment --comment "JBoss Cluster traffic" /sbin/iptables -I INPUT 9 -p udp -s 192.168.1.0/24 -j ACCEPT -m comment --comment "cluster subnet for inter-node communication" /sbin/iptables -I INPUT 10 -p tcp -s 192.168.1.0/24 -j ACCEPT -m comment --comment "cluster subnet for inter-node communication" /etc/init.d/iptables saveCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意前面的示例演示了为
192.168.1.0/24子网上的集群节点定义防火墙规则。
附录 A. mod_proxy 连接器模块 复制链接链接已复制到粘贴板!
mod_proxy 连接器包含一组标准 Apache HTTP 服务器模块。这些模块使 Apache HTTP 服务器能够充当代理/网关,用于通过不同类型的协议在 Web 客户端和后端服务器之间发送 Web 流量。
本附录描述了 mod_proxy 连接器使用的模块。
A.1. Mod_proxy.so module 复制链接链接已复制到粘贴板!
mod_proxy.so 模块是一种标准的 Apache HTTP 服务器模块,使服务器能够充当通过 AJP (Apache JServe Protocol)、FTP、CONNECT (用于 SSL)和 HTTP 协议传输的数据的代理。mod_proxy 模块不需要额外的配置。mod_proxy 模块的标识符是 proxy_module。
A.2. Mod_proxy_ajp.so module 复制链接链接已复制到粘贴板!
mod_proxy_ajp.so 模块是标准的 Apache HTTP 服务器模块,为 Apache JServ 协议(AJP)代理提供支持。通过使用 mod_proxy_ajp 模块,Apache HTTP 服务器充当在 Web 客户端和后端服务器之间发送 AJP 请求和响应的中间人。AJP 是一种明文协议,不支持数据加密。
如果要使用 mod_proxy _ ajp,则需要 mod_proxy 模块。mod_proxy_ajp 模块的标识符是 proxy_ajp_module。
此外,在使用 Tomcat AJP Connector 时,需要 secret 属性。您可以使用以下命令将 secret 属性添加到 ProxyPass 设置中:
ProxyPass /example/ ajp://localhost:8009/example/ secret=YOUR_AJP_SECRET
如果在负载均衡器中设置了 secret,则它的所有成员都会继承这个 secret。
mod_proxy_ajp 模块不提供任何配置指令。
A.3. Mod_proxy_http.so module 复制链接链接已复制到粘贴板!
mod_proxy_http.so 模块是标准的 Apache HTTP 服务器模块,它支持 Hypertext 传输协议(HTTP)和 Hypertext 传输协议安全(HTTPS)代理。通过使用 mod_proxy_http 模块,Apache HTTP 服务器充当在 web 客户端和后端服务器之间转发 HTTP 或 HTTPS 请求的中间人。mod_proxy_http 模块支持 HTTP/1.1 和较早版本的 HTTP 协议。
如果要使用 mod_proxy _ http,则需要 mod_proxy 模块。mod_proxy_http 模块的标识符是 proxy_http_module。
mod_proxy_http 模块不提供任何配置指令。除了控制 mod_proxy 模块行为的配置外,mod_proxy_http 模块使用一系列控制 HTTP 协议提供程序行为的环境变量。https://httpd.apache.org/docs/2.4/mod/mod_proxy_http.html#env
A.4. Mod_proxy_http2.so module 复制链接链接已复制到粘贴板!
mod_proxy_http2.so 模块是标准的 Apache HTTP 服务器模块,支持 Hypertext 传输协议 2.0 (HTTP/2)代理。通过使用 mod_proxy_http2 模块,Apache HTTP 服务器充当在 web 客户端和后端服务器之间转发 HTTP/2 请求的中间人。
mod_proxy_http2 模块支持使用 HTTP/1.1 或 HTTP/2 作为通信协议的客户端请求。但是,mod_proxy_http2 模块要求 Apache HTTP 服务器和后端服务器之间的所有通信都仅使用 HTTP/2。
对于具有相同后端目的地的客户端请求,Apache HTTP 服务器会尽可能重复使用相同的 TCP 连接。但是,即使您想将多个客户端请求转发到同一后端,Apache HTTP 服务器会为每个 HTTP/1.1 客户端请求转发一个单独的 HTTP/2 代理请求。
如果要使用 mod_proxy _ http2,还需要 mod_proxy 模块。mod_proxy_http2 模块的标识符是 proxy_http2_module。
mod_proxy_http2 模块不提供任何配置指令。
mod_proxy_http2 模块是一种实验性 Apache 功能,要求将 libnghttp2 库用于核心 HTTP/2 引擎。
附录 B. mod_jk connector 模块 复制链接链接已复制到粘贴板!
Apache Tomcat Connector, mod_jk 是 Apache Tomcat 项目提供的 Web 服务器插件。Apache HTTP 服务器可以使用 mod_jk 模块将 HTTP 客户端请求负载平衡到后端 servlet 容器,同时维护粘性会话并通过 Apache JServ 协议(AJP)进行通信。mod_jk 模块包含在 JBoss 核心服务安装的 Apache HTTP 服务器部分。
mod_jk 模块要求您在 Apache HTTP 服务器主机上创建 mod_jk.conf 文件和 workers.properties 文件。mod_jk.conf 文件指定要加载和配置 mod_jk.so 模块的设置。worker.properties 文件指定后端 worker 节点详情。您还必须在 [JWSShortName] 主机上配置一些设置以启用 mod_jk 支持。
附录 C. mod_proxy_cluster 连接器模块 复制链接链接已复制到粘贴板!
mod_proxy_cluster 连接器是基于最初开发的 JBoss mod_cluster 社区项目的技术减少了配置智能负载平衡解决方案。mod_proxy_cluster 连接器使 Apache HTTP 服务器充当高级负载平衡器,用于将流量转发到在 JBoss Web 服务器或 JBoss EAP 主机上运行的后端应用。mod_proxy_cluster 连接器提供 mod_jk 的所有功能,以及实时负载平衡计算、应用生命周期控制、自动代理发现和多个协议支持等功能。
本附录描述了 mod_proxy_cluster 连接器使用的模块。
您可以使用 mod_proxy 的可配置指令(如 ProxyIOBufferSize )配置 mod_proxy_cluster 连接器。
C.1. Mod_manager.so 模块和指令 复制链接链接已复制到粘贴板!
集群管理器模块 mod_manager.so 接收和确认来自节点的消息,包括 worker 节点注册、worker 节点加载数据和 worker 节点应用程序生命周期事件。
LoadModule manager_module modules/mod_manager.so
LoadModule manager_module modules/mod_manager.so
mod_manager.so的可配置指令
< VirtualHost> 元素中的可配置指令如下:
- EnableMCPMReceive
-
允许
VirtualHost接收 mod_cluster 管理协议(MCMP)消息。在 Apache HTTP 服务器配置中添加一个EnableMCPMReceive指令,以允许mod_proxy_cluster正确运行。EnableMCPMReceive必须添加到配置advertise的位置的VirtualHost配置中。 - MaxMCMPMaxMessSize
-
定义 MCMP 消息的最大大小。默认值从其他
Max指令计算。最小值为1024。 - AllowDisplay
-
在
mod_cluster-manager主页上切换附加显示。默认值为off,这会导致在mod_cluster-manager主页面中仅显示版本信息。 - AllowCmd
-
使用
mod_cluster-managerURL 切换命令的权限。默认值为on,它允许命令。 - ReduceDisplay
-
切换在
mod_cluster-manager页面中显示的信息减少。减少信息可让更多节点在页面中显示。默认值为off,允许显示所有可用信息。 - MemManagerFile
-
定义 mod_manager 存储配置详细信息的文件的位置。mod_manager 还将此位置用于共享内存和锁定文件。这必须是绝对路径名。建议此路径位于本地驱动器中,而不是 NFS 共享。默认值为
/logs/。 - Maxcontext
-
mod_proxy_cluster将使用的最大上下文数。默认值为100。 - Maxnode
-
mod_proxy_cluster将使用的最大 worker 节点数量。默认值为20。 - Maxhost
-
mod_proxy_cluster将要使用的主机(别名)的最大数量。这也是负载均衡器的最大数量。默认值为20。 - Maxsessionid
-
存储的活动会话标识符的最大数量。当从该会话收到任何信息达到五分钟时,会话将被视为不活跃。这仅用于演示和调试目的。默认值为
0,它会禁用这个逻辑。 - ManagerBalancerName
-
在 worker 节点不提供负载均衡器名称时使用的负载均衡器名称。默认值为
mycluster。 - PersistSlots
-
如果设置为
上的,则文件中将保留节点、别名和上下文。默认值为off。 - CheckNonce
当设置为
上的时,会检查会话标识符,以确保它们是唯一的,且之前尚未发生。默认值为on。注意将此指令设置为
off会使服务器易受重播攻击。- SetHandler mod_cluster-manager
定义显示集群中 worker 节点信息的处理程序。这在
Location元素中定义:<Location $LOCATION> SetHandler mod_cluster-manager Require ip 127.0.0.1 </Location>
<Location $LOCATION> SetHandler mod_cluster-manager Require ip 127.0.0.1 </Location>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这种情况下,
$LOCATION也定义为mod_cluster_manager。在访问浏览器中
Location元素中定义的$LOCATION时请考虑以下指南:-
转让对应于发送到 worker 节点的 POST 数据。 -
连接到请求此状态页面时已处理的请求数。 -
会话对应于活跃会话的数量。Maxsessionid为0时不存在此字段。
-
C.2. mod_proxy_cluster.so 模块和指令 复制链接链接已复制到粘贴板!
Proxy Balancer 模块 mod_proxy_cluster.so,处理到集群节点的请求路由。Proxy Balancer 选择适当的节点,以根据集群中的应用程序位置、每个集群节点的当前状态和 Session ID (如果请求是已建立的会话的一部分)。
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
Configurable directives for mod_proxy_cluster.so
您还可以在 < VirtualHost> 元素中配置以下指令来更改负载均衡行为。
- CreateBalancers
定义如何在 Apache HTTP 服务器虚拟主机中创建负载均衡器。以下值在
CreateBalancers中有效:-
0:在 Apache HTTP 服务器中定义的所有虚拟主机中创建负载均衡器。记得在ProxyPass指令中配置负载均衡器。 -
1:不要创建负载均衡器。使用这个值时,还必须在ProxyPass或ProxyPassMatch中定义负载均衡器名称。 -
2:仅创建主服务器。这是CreateBalancers的默认值。
-
- UseAlias
定义是否检查定义的
Alias是否与ServerName对应。以下值对UseAlias有效:-
0:忽略 worker 节点的别名信息。这是UseAlias的默认值。 -
1:验证定义的别名是否与 worker 节点的服务器名称对应。
-
- LBstatusRecalTime
-
定义代理计算 worker 节点状态之间的间隔(以秒为单位)。默认间隔为
5秒。 - ProxyPassMatch; ProxyPass
ProxyPass将远程服务器映射到本地服务器命名空间。如果本地服务器具有如http://local.com/的地址,以下ProxyPass指令会将http://local.com/requested/file1的本地请求转换为http://worker.local.com/file1的代理请求。ProxyPass /requested/ http://worker.local.com/
ProxyPass /requested/ http://worker.local.com/Copy to Clipboard Copied! Toggle word wrap Toggle overflow ProxyPassMatch使用正则表达式匹配代理 URL 应用到的本地路径。对于任一指令,
!表示指定的路径是 local,并且该路径的请求不应路由到远程服务器。例如,以下指令指定gif文件应在本地提供。ProxyPassMatch ^(/.*\.gif)$ !
ProxyPassMatch ^(/.*\.gif)$ !Copy to Clipboard Copied! Toggle word wrap Toggle overflow - UseNocanon
定义是否在不修改的情况下将原始 URL 路径转发到后端。
默认值为
Off。当UseNocanon指令设置为Off时,代理可将修改的 URL 转发到后端。但是,如果后端应用需要客户端请求的原始 URL 路径,则修改后的 URL 路径可能会导致意外问题。当您将
UseNocanon指令设置为On时,代理可以在不需要任何修改的情况下将原始 URL 路径转发到后端。在这种情况下,代理行为取决于您是否也在mod_proxy_cluster.conf文件中为请求的 URL 定义上下文和ProxyPass指令。上下文也称为 虚拟主机定义。当您将
UseNocanon指令设置为On时,请考虑以下准则:-
如果您为请求的 URL 定义上下文,但没有为这个 URL 定义
ProxyPass指令,代理将使用UseNocanon指令。 -
如果您为请求的 URL 定义上下文和
ProxyPass指令,并且ProxyPass指令包含nocanon标志,代理使用nocanon标志并忽略UseNocanon指令。 -
如果您为请求的 URL 定义上下文和
ProxyPass指令,并且ProxyPass指令排除nocanon标志,代理会忽略UseNocanon指令。
注意如果没有为请求的 URL 定义上下文,
mod_proxy_cluster会返回404错误。-
如果您为请求的 URL 定义上下文,但没有为这个 URL 定义
C.3. Mod_advertise.so 模块和指令 复制链接链接已复制到粘贴板!
代理广告模块 mod_advertise.so 通过 UDP 多播消息广播代理服务器的存在。服务器公告消息包含 IP 地址和端口号,代理正在侦听希望加入负载平衡集群的节点的响应。
mod_advertise 模块必须与 VirtualHost 元素中的 mod_manager 模块一起定义。在以下示例中,mod_advertise 模块的标识符是 advertise_module :
LoadModule advertise_module modules/mod_advertise.so
LoadModule advertise_module modules/mod_advertise.so
mod_advertise.so的可配置指令
mod_advertise 模块可以通过以下指令进行配置:
- ServerAdvertise
定义如何使用广告机制。
默认值为
Off。当设置为Off时,代理不会公告其位置。当设置为
On时,广告机制用于告知 worker 节点向这个代理发送状态信息。您还可以使用以下语法指定主机名和端口:ServerAdvertise On http://HOSTNAME:PORT/。这只在使用基于名称的虚拟主机或未定义虚拟主机时才需要。- AdvertiseGroup
定义要公告的多播地址。语法为
AdvertiseGroup ADDRESS:PORT,其中ADDRESS必须与AdvertiseGroupAddress对应,PORT必须与 worker 节点上的AdvertisePort对应。如果您的 worker 节点基于 JBoss EAP,并且在启动时使用
-u开关,则默认的AdvertiseGroupAddress是通过-u交换机传递的值。默认值为
224.0.1.105:23364。如果没有指定端口,端口默认为23364。- AdvertiseFrequency
-
多播消息之间广告 IP 地址和端口之间的间隔(以秒为单位)。默认值为
10。 - AdvertiseSecurityKey
-
定义用于在 Apache HTTP 服务器中识别
mod_proxy_cluster的字符串。默认情况下,不会设置此指令,不会发送任何信息。 - AdvertiseManagerUrl
- 定义 worker 节点应该用来向代理服务器发送信息的 URL。默认情况下不设置此指令,不会发送任何信息。
- AdvertiseBindAddress
-
定义发送多播消息的地址和端口。语法为
AdvertiseBindAddress ADDRESS:PORT。这允许使用多个 IP 地址在机器上指定一个地址。默认值为0.0.0.0:23364。
C.4. Mod_cluster_slotmem.so module 复制链接链接已复制到粘贴板!
mod_cluster_slotmem.so 模块是用于创建和访问数据集在"slots"中的共享内存段的共享内存提供程序。
mod_cluster_slotmem 模块不需要任何配置指令。
附录 D. Workers.properties file for mod_jk 复制链接链接已复制到粘贴板!
如果要使用 mod_jk 连接器,您必须在 Apache HTTP 服务器主机上创建一个JBCS_HOME/httpd/conf/workers.properties 文件来定义后端 worker 节点。worker 节点是 servlet 容器,您可以映射到 mod_jk 负载均衡器。worker.properties 文件指定 servlet 容器的位置,以及如何在这些 servlet 容器中平衡调用。
本附录描述了 worker.properties 文件的布局和内容。
根据您使用的 Apache HTTP 服务器分布,worker.properties 文件的位置会有所不同:
-
如果您使用 JBCS Apache HTTP 服务器,
worker.properties 文件位于JBCS_HOME/httpd/conf.d目录中。 如果您使用 RHEL Apache HTTP 服务器,
worker.properties 文件位于/etc/httpd/conf.d目录中。注意RHEL Apache HTTP 服务器只支持在 RHEL 9 上使用
mod_jk。
D.1. workers.properties 概述 复制链接链接已复制到粘贴板!
worker.properties 文件包含全局 properties 部分和 worker properties 部分。
- 全局属性
- 本节包含适用于所有 worker 的指令。
- worker 属性
- 本节包含应用于每个 worker 的指令。
每个节点都使用 worker 属性命名规则定义。worker 名称只能包含小写字母、大写字母、数字和特定特殊字符(_、/)。
worker 属性的结构是 worker。WORKER_NAME.DIRECTIVE。
worker- 所有 worker 属性的常量前缀。
WORKER_NAME-
提供给 worker 的任意名称。例如:
node1、node_01、Node_1。 指令- 需要的特定指令。
D.2. workers.properties 指令 复制链接链接已复制到粘贴板!
worker.properties 文件指令被分为全局、强制、连接和负载平衡分类。
worker.properties 的全局指令
- worker.list
指定
mod_jk使用的 worker 名称列表。此列表中的 worker 可用于将请求映射到。注意不是由负载均衡器管理的单一节点配置必须设置为
worker.list=WORKER_NAME。
worker.properties的必要指令
- type
指定 worker 的类型,它决定了适用于 worker 的指令。默认值为
ajp13,这是为 Web 服务器和 Apache HTTP 服务器之间的通信的首选 worker 类型。其他值包括
lb和status。有关 AJPv13 的详细信息,请参见 Apache Tomcat Connector - AJP 协议参考。
worker.properties的连接指令
- 主机
worker 的主机名或 IP 地址。worker 节点必须支持 ajp13 协议堆栈。默认值为
localhost。您可以通过在主机名或 IP 地址后附加
端口号,将 port 指令指定为 host 指令的一部分。例如:worker.node1.host=192.168.2.1:8009或worker.node1.host=node1.example.com:8009。- port
-
侦听定义的协议请求的远程服务器实例的端口号。默认值为
8009,这是 AJPv13 工作程序的默认监听端口。 - ping_mode
指定在其当前网络健康中探测连接的条件。
该探测对
CPing使用一个空的 AJPv13 数据包,并期望在一个特定的超时期间内,在返回中有一个CPong。您可以使用 指令标记的组合来指定条件。标志不用逗号分开。例如,设置了正确的指令标志为
worker.node1.ping_mode=CI。- c (connect)
-
指定连接在连接到服务器后被探测一次。您可以使用
connect_timeout指令指定超时,否则使用ping_timeout的值。 - p (prepost)
-
指定在向服务器发送每个请求前探测连接。您可以使用
prepost_timeout指令指定超时,否则使用ping_timeout的值。 - i (interval)
-
指定连接在常规内部维护周期内探测到。您可以使用
connection_ping_interval指令指定每个间隔之间的空闲时间,否则使用ping_timeout的值。 - a (all)
-
最常见的设置,指定应用所有指令标志。有关
\*_timeout高级指令的详情,请查看 Apache Tomcat Connector - 参考指南。
- ping_timeout
-
指定对一个
CPing连接侦测的CPong回答的时间(请参阅ping_mode)。默认值为10000(毫秒)。
worker.properties 的负载均衡指令
- lbfactor
指定单个 worker 的负载均衡因素,且只为负载均衡器的成员 worker 指定。
与集群中的其他 worker 相比,此指令定义了分发到 worker 的 HTTP 请求负载的相对数量。
应用此指令的一个常见示例是您想区分比集群中的其他人更多的处理能力的服务器。例如,如果您需要 worker 与其他 worker 相比有三次,请指定
worker。WORKER_NAME.lbfactor=3。- balance_workers
-
指定负载均衡器必须管理的 worker 节点。该指令可以多次用于同一负载均衡器,由 worker
.properties文件中指定的、以逗号分隔的 worker 名称列表组成。 - sticky_session
指定对带有 SESSION ID 的 worker 的请求是否路由到同一 worker。默认值为
0(false)。当设置为1 (true)时,负载均衡器持久性会被启用。例如,如果您指定了
worker.loadbalancer.sticky_session=0,则每个请求会在集群中的每个节点之间平衡负载。换句话说,同一会话的不同请求可以进入基于服务器负载的不同服务器。如果您指定了
worker.loadbalancer.sticky_session=1,则每个会话都会保留(锁定)到一台服务器,直到会话被终止,提供该服务器可用。
附录 E. mod_proxy_cluster的 worker 节点配置参考 复制链接链接已复制到粘贴板!
E.1. Worker 节点配置 复制链接链接已复制到粘贴板!
配置值会在以下条件下发送到代理:
- 在服务器启动期间
- 当通过广告机制检测到代理时
- 在重置代理配置时出错恢复
| 值 | 默认 | 描述 |
|---|---|---|
|
| true | 指定以后对给定会话的请求是否应该路由到同一节点(如果可能)。 |
|
| false |
指定如果负载均衡器无法将请求路由到它所卡住的节点,Apache HTTP 服务器代理是否应该删除会话粘性。如果 |
|
| true |
指定如果负载均衡器无法将请求路由到它所卡住的节点,则 Apache HTTP 服务器代理是否应该返回错误。如果 |
|
| -1 |
指定等待 worker 可用以处理请求的秒数。当负载均衡器的所有 worker 不可用时, |
|
| 1 |
指定 Apache HTTP 服务器代理在中止前尝试向 worker 发送给定请求的次数。最小值为 |
|
| false | 指定是否启用或禁用数据包清除。 |
|
| -1 |
指定在清除数据包前等待的时间。值 |
|
| 10 | 等待(以秒为单位)对 ping 做出 pong 回答的时间。 |
|
|
指定软最大空闲连接数。最大值由 Apache HTTP 服务器线程配置( | |
|
| 60 |
指定 |
|
| -1 |
指定在返回错误前, |
|
| mycluster | 指定负载均衡器的名称。 |
|
|
指定同一负载平衡组内 |
E.2. mod_proxy_cluster的代理和代理发现配置属性 复制链接链接已复制到粘贴板!
下表包含有关 mod_proxy_cluster 的代理和代理发现配置属性的属性和信息。
| 属性 | 属性 | 默认值 |
|---|---|---|
| proxy-list |
| |
| proxy-url |
| |
| advertise |
| true |
| advertise-security-key |
| |
| excluded-contexts |
| |
| auto-enable-contexts |
| true |
| stop-context-timeout |
| 10 秒(以秒为单位) |
| socket-timeout |
| 20 秒(以毫秒为单位) |
如果未定义 nodeTimeout,则使用 ProxyTimeout 指令 Proxy。如果没有定义 ProxyTimeout,则使用服务器超时(Timeout)(默认为 JBCS httpd.conf 中的120 秒)。nodeTimeout, ProxyTimeout, 和 Timeout 在套接字级别设置。
| 属性 | 属性 | 默认值 |
|---|---|---|
| sticky-session |
| true |
| sticky-session-remove |
| false |
| sticky-session-force |
| true |
| node-timeout |
| -1 |
| max-attempts |
| 1 |
| flush-packets |
| false |
| flush-wait |
| -1 |
| ping |
| 10 (秒) |
| smax |
| -1 (使用默认值) |
| ttl |
| -1 (使用默认值) |
| domain |
| |
| load-balancing-group |
|
E.3. Tomcat 的负载配置 复制链接链接已复制到粘贴板!
当您想要将 mod_proxy_cluster 与 Apache Tomcat 搭配使用时,您可以为加载指标配置以下附加属性。
| 属性 | 默认值 | 描述 |
|---|---|---|
| loadMetricClass |
|
实施 |
| loadMetricCapacity | 1 |
通过 |
| loadHistory | 9 | 在负载均衡因子计算中必须考虑的历史负载值的数量 |
| loadDecayFactor | 2 | 历史负载值降低的因素 |
附录 F. 多处理模块(MPM) 复制链接链接已复制到粘贴板!
Red Hat JBoss Core Services 包括各种多处理模块(MPM)。您可以使用这些 MPM 来定制 Apache HTTP 服务器如何响应传入请求。
MPM 是互斥的。您可以随时启用并使用一个 MPM。
F.1. MPMs 概述 复制链接链接已复制到粘贴板!
多处理模块(MPM)可用于 Red Hat Enterprise Linux (RHEL)和 Windows Server。在 RHEL 上,默认的 MPM 因操作系统版本而异。
用于 RHEL 的 MPM
preforkpreforkMPM 实施非线程、预分叉 web 服务器。preforkMPM 使用单个控制进程,它启动侦听和服务传入连接的子进程。单个进程处理特定的请求,以确保每个请求被隔离,不会影响任何其他请求。注意preforkMPM 是 RHEL 7 中默认的 MPM。worker-
workerMPM 实施混合多进程多线程服务器。每个子进程创建固定数量的服务器线程,允许服务器处理大量具有较少系统资源的请求。 event事件MPM 基于workerMPM。事件MPM 允许通过将某些处理工作委派给监听程序线程来同时提供额外的请求,从而释放 worker 线程来满足新的请求。注意事件MPM 是 RHEL 版本 8 和 9 的默认 MPM。
用于 Microsoft Windows 的 MPM
winnt-
winntMPM 是唯一可用于 Windows 系统的 MPM。winntMPM 使用单个控制进程,它启动为传入请求创建线程的另一个进程。
F.2. 切换 MPM 复制链接链接已复制到粘贴板!
服务器根据 Apache HTTP 服务器主机上的 00-mpm.conf 文件中的 LoadModule 指令选择 MPM。您可以通过从 00-mpm.conf 文件中的 MPM 的 LoadModule 指令中删除注释字符(#)来选择特定的 MPM。
根据您使用的 Apache HTTP 服务器分发,00- mpm.conf 文件的位置会有所不同:
-
如果您使用 JBCS Apache HTTP 服务器,00-
mpm.conf 文件位于JBCS_HOME/httpd/conf.modules.d目录中。 -
如果您使用 RHEL Apache HTTP 服务器,00-
mpm.conf 文件位于/etc/httpd/conf.modules.d目录中。
根据您使用的操作系统版本,请考虑以下准则:
在 RHEL 版本 8 和 9 中,默认选择
事件MPM。例如:event MPM: A variant of the worker MPM with the goal of consuming threads only for connections with active processing See: http://httpd.apache.org/docs/2.4/mod/event.html
# event MPM: A variant of the worker MPM with the goal of consuming # threads only for connections with active processing # See: http://httpd.apache.org/docs/2.4/mod/event.html # LoadModule mpm_event_module modules/mod_mpm_event.soCopy to Clipboard Copied! Toggle word wrap Toggle overflow 事件MPM 是多线程,旨在提供优化的性能。如果您使用 RHEL 版本 8 或 9,切换到另一个 MPM,如prefork可能会导致性能问题。在 RHEL 7 中,默认选择
preforkMPM。例如:prefork MPM: Implements a non-threaded, pre-forking web server See: http://httpd.apache.org/docs/2.4/mod/prefork.html
# prefork MPM: Implements a non-threaded, pre-forking web server # See: http://httpd.apache.org/docs/2.4/mod/prefork.html LoadModule mpm_prefork_module modules/mod_mpm_prefork.soCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用 RHEL 7,请考虑切换到另一个 MPM,如
worker或event,以避免可能出现性能问题。
为了说明这一点,以下步骤描述了如何从 预 分叉 MPM 切换到 worker MPM。
流程
进入包含
00-mpm.conf文件的目录:-
如果您使用 JBCS Apache HTTP 服务器,请转到
JBCS_HOME/httpd/conf.modules.d目录。 -
如果您使用 RHEL Apache HTTP 服务器,请转到
/etc/httpd/conf.modules.d目录。
-
如果您使用 JBCS Apache HTTP 服务器,请转到
编辑
00-mpm.conf,将注释(#)字符添加到preforkMPM 的LoadModule指令中。例如:
prefork MPM: Implements a non-threaded, pre-forking web server See: http://httpd.apache.org/docs/2.4/mod/prefork.html
# prefork MPM: Implements a non-threaded, pre-forking web server # See: http://httpd.apache.org/docs/2.4/mod/prefork.html #LoadModule mpm_prefork_module modules/mod_mpm_prefork.soCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在同一个
00-mpm.conf文件中,从您要切换到的 MPM 的LoadModule指令中删除注释(#)字符。这些行位于preforkMPM 下。例如,要加载
workerMPM,请从workerMPM 的LoadModule指令中删除注释(#)字符:worker MPM: Multi-Processing Module implementing a hybrid multi-threaded multi-process web server See: http://httpd.apache.org/docs/2.4/mod/worker.html
# worker MPM: Multi-Processing Module implementing a hybrid # multi-threaded multi-process web server # See: http://httpd.apache.org/docs/2.4/mod/worker.html LoadModule mpm_worker_module modules/mod_mpm_worker.soCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证 MPM 是否已正确配置,请输入以下命令:
sbin/apachectl -V
$ sbin/apachectl -VCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的 命令显示当前的 MPM。
例如:
Server MPM: worker
Server MPM: workerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
F.3. MPM 性能设置 复制链接链接已复制到粘贴板!
对于每种 MPM,您可以配置各种设置来优化 MPM 性能。
MPM 性能设置的类型
MPM 性能设置指定以下类型的条件:
- 启动时要创建的服务器进程的初始数量
- 最小和最大闲置线程或服务器进程数
- 处理请求的线程或服务器进程的最大数量
- 单个服务器进程可以处理的请求数
-
每个服务器进程创建的线程数(仅限
worker和事件MPM) -
对于在服务器生命周期内启动的最大服务器进程数上限(仅限
preforkMPM)
MPM 性能设置的配置文件
从 JBCS 2.4.51 开始,您可以在 mpm.conf 文件中配置 MPM 性能设置。根据您使用的 Apache HTTP 服务器分发,mpm.conf 文件的位置会有所不同:
-
如果您使用 JBCS Apache HTTP 服务器,
mpm.conf文件位于JBCS_HOME/httpd/conf.d目录中。 -
如果您使用 RHEL Apache HTTP 服务器,
mpm.conf文件位于/etc/httpd/conf.d目录中。
在 JBCS 2.4.37 或更早版本中,conf.modules.d/00-mpm.conf 文件包含 MPM 性能设置。从 JBCS 2.4.51 开始,conf.d/mpm.conf 文件包含这些设置。
如果您要从 JBCS 2.4.37 或更早版本升级,请确保为升级的 2.4.51 安装配置 conf.d/mpm.conf 文件,以匹配之前在 conf.modules.d/00-mpm.conf 中配置的任何自定义设置。否则,升级的 JBCS 2.4.51 安装会自动使用 conf.d/mpm.conf 文件中的默认设置,这可能会导致意外的性能问题。
有关可用性能设置和相关默认值的更多信息,请参阅 Apache HTTP 服务器安装中的 conf.d/mpm.conf 文件。