12.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
- Complete the relevant Microsoft IIS clustering setup procedure. Refer to Section 12.3, “Microsoft IIS 6 Initial Clustering Configuration” or Section 12.4, “Microsoft IIS 7 Initial Clustering Configuration” for more information.
- The following steps assume that the
C:\connectors
directory is used to store logs, properties files, and NSAPI locks.
Create isapi_redirect.properties file
Create a new file namedisapi_redirect.properties
in theC:\connectors\jboss-ep-5.1\native\sbin\
Important
Theisapi_redirect.properties
file must be in the same directory as theisapi_redirect.dll
file.Append the following configuration lines into 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
Optional: Create rewrite.properties file
Therewrite.properties
file allows you to specify simple URL rewrites specific to an application. This configuration file is optional, and can be excluded from theisapi_redirect.properties
file if URL rewrites are not required.The functionality offered is similar to Apache 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/
Create uriworkermap.properties file
Theuriworkermap.properties
file contains deployed application mapping configuration information. Append the following lines into 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 won't 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
Create workers.properties file
Theworker.properties
file contains mapping definitions between worker labels and server instances. Append the following lines into 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 ofworkers.properties
directives, refer to Appendix A, workers.properties Reference.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
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 inisapi_redirect.properties
. You should also check IIS logs and the Event Viewer for other events.