14.6. Configure a load-balancing cluster with ISAPI

Task: Configure ISAPI to serve a Load-Balancing Cluster

Complete this task to configure ISAPI to manage applications common to all servers, route requests to JBoss Enterprise Application Platform instances, and redirect requests to live nodes when some nodes are not online or experiencing connectivity issues.
Use the configuration as an example when configuring your ISAPI cluster.

Prerequisites

  1. Create isapi_redirect.properties file

    Create a new file named isapi_redirect.properties in the NATIVE\sbin\ directory.

    Important

    The isapi_redirect.properties file must be in the same directory as the isapi_redirect.dll file.
    Append the following configuration block to the file:
    # Configuration file for the ISAPI Redirector
    # Extension uri definition
    extension_uri=/jboss/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
  2. Optional: Create rewrite.properties file

    The rewrite.properties file allows you to specify simple URL rewrites specific to an application. This configuration file is optional, and can be excluded from the isapi_redirect.properties file if URL rewrites are not required.
    The functionality offered is similar to Apache HTTP Server's mod_rewrite, but is less powerful. You specify the rewrite path using name-value pairs. A simple example is where the app_01 application has an abstract directory name containing images, and you want to remap that directory to something more intuitive.
    #Simple example, images are accessible under abc path
    /app-01/abc/=/app-01/images/
  3. Create uriworkermap.properties file

    The uriworkermap.properties file contains deployed application mapping configuration information. Append the following lines to the file.
    # images, css files, path /status and /web-console will provided by nodes defined in load-balancer
    /css/*=router
    /images/*=router
    /status=router
    /web-console|/*=router
    
    # Example of exclusion from mapping, logo.gif will not be displayed  
    !/web-console/images/logo.gif=*
    
    # Requests to /app-01 and /app-02 will be routed to nodes defined in load-balancer
    /app-01|/*=router
    /app-02|/*=router
    
    # mapping for management console, nodes in cluster can be enabled or disabled here
    /jkmanager|/*=status
  4. Create workers.properties file

    The worker.properties file contains mapping definitions between worker labels and server instances. Append the following lines to the file.
    # 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

    Note

    For an explanation of workers.properties directives, refer to Appendix A, Reference: workers.properties.
  5. Restart IIS

    Restart your IIS server to implement the changes. Execute the following commands for the IIS version you are running:
    IIS 6
    C:\> net stop iisadmin /Y
    C:\> net start w3svc
    IIS 7
    C:\> net stop was /Y
    C:\> net start w3svc
  6. Verify the Logs

    Ensure you check the ISAPI logs once IIS has restarted. The logs are saved to the file location specified in the log_file property in isapi_redirect.properties. You should also check IIS logs and the Event Viewer for other events of type Warning or Error.