Child pages
  • Apache HTTP Server Configuration
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

3. Using Apache HTTP Server for load-balancing
Using Apache HTTP server as a front-end to load-balance a cluster of Servoy Application Servers is optional. You should be able to do this in other ways, including custom balancing inside a Tomcat instance application or using other HTTP servers such as IIS that support (or have modules for) AJP1.3. Read through the section even if you do not plan to use Apache HTTP Server as it also shows configuration changes needed for Servoy Application Servers to run in a similar setup.

Smart clients will connect directly to the individual Servoy Application Servers in the cluster. The load-balancing is done by serving the JNLP file from different servers when the Apache HTTP front-end is accessed. Add to each of the Servoy Application Server's "servoy.properties" files the following line (needed for smart client load balancing):

servoy.jnlpCodebaseOverride=http://thisServersHostnameAsSeenByClients:port
What you should also take into consideration when setting up a load-balanced cluster is allowing smart-clients to connect directly to individual servers in the cluster. This means that all Servoy Application Servers should be accessible from the client side - and you might want to isolate the cluster so that connections to ports used by Terracotta (see tc-config.xml) are only allowed from withing the cluster, even if connections from client machines on Servoy ports should be allowed to all Servoy Application Servers.

3.1 Configure Apache HTTP Server
install downloaded Apache HTTP Server.
apply any standard configuration that you want/need (ServerName, ServerAdmin, ...) if any is needed to make HTTP server operational.
copy your mod_jk-1.2.28-httpd-2.2.3.so to yourApacheHTTPServerDir/modules and rename it to mod_jk.so. (name might be slightly different depending on OS; see instructions on download page)
in yourApacheHTTPServerDir/conf/httpd.conf (for more info on available options, see http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html) add these lines after all other LoadModule lines:
LoadModule jk_module modules/mod_jk.so

  1. JK/Worker configuration
  1. Where to find workers.properties
    JkWorkersFile conf/workers.properties
  2. Where to put jk logs
    JkLogFile logs/mod_jk.log
  3. Set the jk log level debug/error/info
    JkLogLevel info
    JkMount /* loadbalancer
  1. In case you want to be able to monitor JK status
  2. <Location /jkmanager/>
  3. JkMount jkstatus
  4. Order deny,allow
  5. Deny from all
  6. Allow from 127.0.0.1
  7. </Location>
    copy worker.properties file from yourServoyApplicationServerDir/terracotta to yourApacheHTTPServerDir/conf. It will load balance a cluster of two Servoy servers, running on 2 different machines, both using port 8009. You will need to change the "worker.servoyX.host" entries in "worker.properties" file to the correct hostnames of your Servoy Application Servers. It is recommended to use port 8009 as well for all workers (default). If you have more/less than two servers, create/remove sections and update worker.list and worker.loadbalancer.balance_workers lines. For more information on how to tune your workers see http://tomcat.apache.org/connectors-doc/reference/workers.html.
    You have a possibility to monitor and control worker activity by uncommenting the "jkstatus" related comments in worker.properties and httpd.conf and accessing "yourServerUrl/jkmanager/". This page will also allow you to activate/disable workers. You should add a worker for each Servoy Application Server that you will possibly start in your cluster, even if you do not plan to have them started all at once. There is no problem if only a part of those Servoy Application Servers are started. Load-balancing will work on servers defined in the worker.properties file that are also available. If you do define workers for Servoy Application Servers that are not started, disable them from the jkmanager page in order to avoid delays caused by load-balancer trying to check the availability of these workers.

3.2 Configure each Servoy Tomcat Server in the cluster to work with the AJP 1.3 connector
This will describe how to set up the two Tomcat Servers in your Servoy installations as used by original worker.properties file above. You can adapt it when using more Servoy installations.

assume Servoy is installed twice, once on "servoyServer1Host" and once on "servoyServer2Host".
in servoy_install_folder/application_server/server/conf/server.xml:
change line "<Engine name="Catalina" defaultHost="localhost">" into "<Engine jvmRoute="servoy1" name="Catalina" defaultHost="localhost">"; for second server use "servoy2".
add the following connector before the already declared one in both installations:
<Connector port="8009"
enableLookups="false" maxThreads="500" connectionTimeout="60000"
redirectPort="8443" useBodyEncodingForURI="true" protocol="AJP/1.3"/>
When you start the 2 Servoy Application Servers and the Apache HTTP server and you access the Apache HTTP server you will be automatically using one of the two Servoy Servers in a weighted round-robin load balancing with sticky sessions manner.

  • No labels