13.6.4. Configure ISAPI to Balance Client Requests Across Multiple JBoss Enterprise Application Platform Servers

Overview

This configuration balances client requests across the JBoss Enterprise Application Platform servers you specify. If you prefer to send client requests to specific JBoss Enterprise Application Platform servers on a per-deployment basis, refer to Section 13.6.3, “Configure the ISAPI Redirector to Send Client Requests to the JBoss Enterprise Application Platform” instead.

This configuration is done on the IIS server, and assumes that the JBoss Enterprise Application Platform is already configured, as per Section 13.2.11, “Configure the JBoss Enterprise Application Platform to Accept Requests From an External HTTPD”.

Procedure 13.14. Task

  1. Create a directory to store logs, property files, and lock files.

    The rest of this procedure assumes that you are using the directory C:\connectors\ for this purpose. If you use a different directory, modify the instructions accordingly.
  2. Create the isapi_redirect.properties file.

    Create a new file called C:\connectors\isapi_redirect.properties. Copy the following contents into the file. Substitute the value JBOSS_NATIVE_HOME with the actual location where you installed the JBoss Native components when you performed the task Section 13.6.2, “Configure Microsoft IIS to Use the ISAPI Redirector”.
    # Configuration file for the ISAPI Redirector
    # Extension uri definition
    extension_uri=JBOSS_NATIVE_HOME/sbin/isapi_redirect.dll
    
    # Full path to the log file for the ISAPI Redirector
    log_file=c:\connectors\isapi_redirect.log
    
    # Log level (debug, info, warn, error or trace)
    # Use debug only testing phase, for production switch to info
    log_level=debug
    
    # Full path to the workers.properties file
    worker_file=c:\connectors\workers.properties
    
    # Full path to the uriworkermap.properties file
    worker_mount_file=c:\connectors\uriworkermap.properties
    
    #OPTIONAL: Full path to the rewrite.properties file 
    rewrite_rule_file=c:\connectors\rewrite.properties
    
    If you do not want to use a rewrite.properties file, comment out the last line by placing a # character at the beginning of the line. See Step 5 for more information.
  3. Create the uriworkermap.properties file.

    The uriworkermap.properties file contains mappings between deployed application URLs and which worker handles requests to them. The following example file shows the syntax of the file, with a load-balanced configuration. The wildcard (*) character sends all requests for various URL sub-directories to the load-balancer called router. The configuration of the load-balancer is covered in Step 4.
    Place your uriworkermap.properties file into C:\connectors\.
    # images, css files, path /status and /web-console will be
    # provided by nodes defined in the load-balancer called "router"
    /css/*=router
    /images/*=router
    /status=router
    /web-console|/*=router
    
    # Example of exclusion from mapping, logo.gif won't be displayed  
    !/web-console/images/logo.gif=*
    
    # Requests to /app-01 and /app-02 will be routed to nodes defined
    # in the load-balancer called "router"
    /app-01|/*=router
    /app-02|/*=router
    
    # mapping for management console, nodes in cluster can be enabled or disabled here
    /jkmanager|/*=status
    
  4. Create the workers.properties file.

    The workers.properties file contains mapping definitions between worker labels and server instances. The following example file shows the syntax of the file. The load balancer is configured near the end of the file, to comprise workers worker01 and worker02. The workers.properties file follows the syntax of the same file used for Apache mod_jk configuration. For more information about the syntax of the workers.propertie file, refer to Section 13.4.4, “Configuration Reference for Apache Mod_jk Workers”.
    Place this file into the C:\connectors\ directory.
    # The advanced router LB worker
    worker.list=router,status
    
    # First EAP server definition, port 8009 is standard port for AJP in EAP
    #
    # lbfactor defines how much the worker will be used. 
    # The higher the number, the more requests are served
    # lbfactor is useful when one machine is more powerful 
    # ping_mode=A – all possible probes will be used to determine that
    # connections are still working
    
    worker.worker01.port=8009
    worker.worker01.host=127.0.0.1
    worker.worker01.type=ajp13
    worker.worker01.ping_mode=A
    worker.worker01.socket_timeout=10
    worker.worker01.lbfactor=3
    
    # Second EAP server definition
    worker.worker02.port=8009
    worker.worker02.host= 127.0.0.100
    worker.worker02.type=ajp13
    worker.worker02.ping_mode=A
    worker.worker02.socket_timeout=10
    worker.worker02.lbfactor=1
    
    # Define the LB worker
    worker.router.type=lb
    worker.router.balance_workers=worker01,worker02
    
    # Define the status worker for jkmanager
    worker.status.type=status
    
  5. Create the rewrite.properties file.

    The rewrite.properties file contains simple URL rewriting rules for specific applications. The rewritten path is specified using name-value pairs, as shown in the example below. Place this file into the C:\connectors\ directory.
    #Simple example
    # Images are accessible under abc path
    /app-01/abc/=/app-01/images/
    
  6. Restart the IIS server.

    Follow the appropriate procedure for restarting your IIS server, depending on its version.
    • IIS 6

      C:\> net stop iisadmin /Y
      C:\> net start w3svc
      
    • IIS 7

      C:\> net stop was /Y
      C:\> net start w3svc
      
Result

The IIS server is configured to send client requests to the JBoss Enterprise Application Platform servers referenced in the workers.properties file, balancing the load equally across the servers.