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 /application=loadbalancer /application/*=loadbalancer
# 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 JkMountFile conf.d/uriworkermap.properties
# 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