Red Hat Training

A Red Hat training course is available for Red Hat JBoss Web Server

Chapter 2. Configure Load Balancing Using Apache and mod_jk

2.1. Configure Load Balancing Using Apache and mod_jk

Follow the tasks in this chapter to correctly configure load balancing using Apache and the mod_jk connector.

Procedure 2.1. Configure Apache to Load mod_jk

Ensure that Apache and mod_jk are installed (see Section 1.2, “Download and Install”).
To configure Apache to Load mod_jk:
  1. Open HTTPD_DIST/conf/httpd.conf and add a single line at the end of the file.
    # Include mod_jk's specific configuration file  
    Include conf/mod-jk.conf
    
  2. Create a new file named HTTPD_DIST/conf/mod-jk.conf
  3. Add the following configuration to the mod-jk.conf file.

    Important

    The LoadModule directive must reference the mod_jk library directory location applicable to the native binary you installed.

    Note

    The JkMount directive specifies which URLs Apache should forward to the mod_jk module. Based on the directive's configuration, mod_jk forwards the received URL onto the correct Servlet containers.
    To enable Apache to serve static content (or PHP content) directly, and only use the load balancer for Java applications, the suggested configuration specifies all requests with URL path /application/* are sent to the mod_jk load-balancer.
    Only mod_jk is used as a load balancer, forward all URLs to mod_jk by specifying /* in the directive.
    # 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/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
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Location>
    
  4. Optional: JKMountFile Directive

    In addition to the JkMount directive, use the JkMountFile directive to specify a mount points configuration file. The configuration file contains multiple Tomcat forwarding URL mappings.
    1. Navigate to HTTPD_DIST/conf.
    2. Create a file named uriworkermap.properties.
    3. Specify the URL to forward and the worker name using the following syntax example as a guide.
      The example block will configure mod_jk to forward requests to /jmx-console and /web-console to Apache.
      The syntax required takes the form /url=worker_name.
      # Simple worker configuration file
      
      # Mount the Servlet context to the ajp13 worker
      /jmx-console=loadbalancer
      /jmx-console/*=loadbalancer
      /web-console=loadbalancer
      /web-console/*=loadbalancer
      
    4. In HTTPD_DIST/conf/mod-jk.conf, append the following directive.
      # 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/uriworkermap.properties