24.7. Apache mod_jk HTTP 连接器

Apache mod_jk 是一个 HTTP 连接器,为出于兼容性需要它的客户提供。

JBoss EAP 可以接受来自 Apache HTTP 代理服务器的工作负载。代理服务器接受来自 Web 前端的客户端请求,并将工作传递到参与的 JBoss EAP 服务器。如果启用了粘性会话,则相同的客户端请求始终发送到同一 JBoss EAP 服务器,除非该服务器不可用。

mod_jk 通过 AJP 1.3 协议进行通信。其他协议可与 mod_cluster 或 mod_ proxy 一起使用。如需更多信息,请参阅 HTTP 连接器概述

注意

mod_cluster 是比 mod_jk 更高级的负载平衡器,是推荐的 HTTP 连接器。mod_cluster 提供 mod_jk 的所有功能,以及其他功能。与 JBoss EAP mod_cluster HTTP 连接器不同,Apache mod_jk HTTP 连接器不知道服务器或服务器组上的部署状态,也无法适应其相应地发送工作的位置。

如需更多信息,请参阅 Apache mod_jk 文档

24.7.1. 在 Apache HTTP 服务器中配置 mod_jk

安装 JBoss Core Services Apache HTTP 服务器或使用 JBoss Web 服务器时,已包含 mod_jk 模块 mod_jk.so ;但是,默认情况下不加载它。

注意

自 3.1.0 版开始,Apache HTTP 服务器不再通过 JBoss Web 服务器分发。

使用以下步骤在 Apache HTTP 服务器中加载和配置 mod_jk:请注意,这些步骤假定您已导航到 Apache HTTP 服务器的 httpd/ 目录,这些服务器将根据您的平台而有所不同。如需更多信息,请参阅 JBoss Core Services Apache HTTP Server 安装指南中 的平台安装说明。

注意

红帽客户还可以使用红帽客户门户上的 负载平衡器配置工具,为 mod_jk 和其他连接器快速生成最佳配置模板。请注意,您必须登录才能访问此工具。

  1. 配置 mod_jk 模块。

    注意

    在conf. d/mod_jk.conf.sample 中提供了一个示例 mod_jk 配置文件。您可以使用这个示例而不是自行创建文件,方法是删除 .sample 扩展名并根据需要修改其内容。

    创建名为 conf.d/mod_jk.conf 的新文件。将以下配置添加到 文件中,确保将内容修改为您需要的套件。

    # Load mod_jk module
    # Specify the filename of the mod_jk lib
    LoadModule jk_module modules/mod_jk.so
    
    # Where to find workers.properties
    JkWorkersFile conf.d/workers.properties
    
    # Where to put jk logs
    JkLogFile logs/mod_jk.log
    
    # Set the jk log level [debug/error/info]
    JkLogLevel info
    
    # Select the log format
    JkLogStampFormat  "[%a %b %d %H:%M:%S %Y]"
    
    # JkOptions indicates to send SSK KEY SIZE
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
    
    # JkRequestLogFormat
    JkRequestLogFormat "%w %V %T"
    
    # Mount your applications
    JkMount /application/* loadbalancer
    
    # Add shared memory.
    # This directive is present with 1.2.10 and
    # later versions of mod_jk, and is needed for
    # for load balancing to work properly
    JkShmFile logs/jk.shm
    
    # Add jkstatus for managing runtime data
    <Location /jkstatus/>
        JkMount status
        Require ip 127.0.0.1
    </Location>
    注意

    JkMount 指令指定 Apache HTTP 服务器必须转发到 mod_jk 模块的 URL。根据指令的配置,mod_jk 会将收到的 URL 发送到正确的工作程序。要直接提供静态内容并只使用 Java 应用程序的负载均衡器,URL 路径必须是 /application/*。要将 mod_jk 用作负载均衡器,请使用值 /* 将所有 URL 转发到 mod_jk。

    除了常规的 mod_jk 配置外,此文件还指定加载 mod_jk.so 模块,并定义在何处查找 workers.properties 文件。

  2. 配置 mod_jk 工作程序节点。

    注意

    at conf.d/workers.properties.sample 提供了 worker 配置文件示例。您可以使用这个示例而不是自行创建文件,方法是删除 .sample 扩展名并根据需要修改其内容。

    创建名为 conf.d/workers.properties 的新文件。将以下配置添加到 文件中,确保将内容修改为您需要的套件。

    # Define list of workers that will be used
    # for mapping requests
    worker.list=loadbalancer,status
    
    # Define Node1
    # modify the host as your host IP or DNS name.
    worker.node1.port=8009
    worker.node1.host=node1.mydomain.com
    worker.node1.type=ajp13
    worker.node1.ping_mode=A
    worker.node1.lbfactor=1
    
    # Define Node2
    # modify the host as your host IP or DNS name.
    worker.node2.port=8009
    worker.node2.host=node2.mydomain.com
    worker.node2.type=ajp13
    worker.node2.ping_mode=A
    worker.node2.lbfactor=1
    
    # Load-balancing behavior
    worker.loadbalancer.type=lb
    worker.loadbalancer.balance_workers=node1,node2
    worker.loadbalancer.sticky_session=1
    
    # Status worker for managing load balancer
    worker.status.type=status

    有关 mod_jk workers.properties 文件和其他高级配置选项的语法详情,请参阅 mod_jk Worker Properties

  3. (可选)指定 JKMountFile 指令。

    除了 mod-jk.conf 中的 JKMount 指令外,您还可以指定一个文件,其中包含要转发到 mod_jk 的多个 URL 模式。

    1. 创建 uriworkermap.properties 文件。

      注意

      at conf.d/uriworkermap.properties.sample 提供了 URI worker 映射配置文件示例。您可以使用这个示例而不是自行创建文件,方法是删除 .sample 扩展名并根据需要修改其内容。

      创建名为 conf.d/uriworkermap.properties 的新文件。为要匹配的每个 URL 模式添加一行,例如:

      # Simple worker configuration file
      /*=loadbalancer
    2. 更新配置,以指向 uriworkermap.properties 文件。

      将以下内容附加到 conf.d/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

有关配置 mod_jk 的详情,请参阅 JBoss Web 服务器 HTTP 连接器和负载平衡指南中的将 Apache HTTP 服务器配置为载入 mod_jk 部分。

24.7.2. 将 JBoss EAP 配置为与 mod_jk 通信

JBoss EAP undertow 子系统需要指定侦听器,以便接受来自 的请求并将回复发回给外部 Web 服务器。由于 mod_jk 使用 AJP 协议,因此必须配置 AJP 侦听器。

如果您使用的是默认高可用性配置 hafull-ha,则已经配置了 AJP 侦听器。

具体步骤请查看 从外部 Web 服务器接受请求