Beruflich Dokumente
Kultur Dokumente
TERACOTTA
Terracotta Server
Page 1
Load Balancing & Clustering
TABLE OF CONTENTS
INTRODUCTION _________________________________________________________ 3
INSTALL TERRACOTTA SERVER _______________________________________________ 4
INSTALL GERONIMO SERVER ________________________________________________ 5
INSTALL TERRACOTTA CLIENT ________________________________________________ 6
UPDATE TERRACOTTA CONFIGURATION FILE ______________________________________ 7
Excerpt from tc-config.xml ______________________________________________ 7
START TERRACOTTA SERVER ________________________________________________ 8
START TERRACOTTA CLIENT AND GERONIMO SERVER________________________________ 9
Starting Geronimo ____________________________________________________ 9
INSTALL WEB APPLICATION ON EACH GERONIMO CLUSTER MEMBER_____________________ 10
SETUP LOAD BALANCING AND FAILOVER _______________________________________ 11
Apache HTTP Server: _________________________________________________ 11
MOD_JK SETUP: _______________________________________________________ 13
TESTING DEMO LOAD BALANCING: ___________________________________________ 15
USEFUL LINKS: ________________________________________________________ 16
Terracotta Server
Page 2
Load Balancing & Clustering
Introduction
Terracotta is open source infrastructure software that makes it inexpensive and easy to scale
a Java application to as many computers as needed, without the usual custom application
code and databases used to share data in a cluster.
This article describes the steps to cluster a simple web application's HttpSession data using
Open Terracotta. The required step includes.
Terracotta Server
Page 3
Load Balancing & Clustering
Terracotta needs to be installed on one machine that will serve as the Terracotta Server.
The Terracotta server will be responsible for maintaining session state and assuring that it is
accurately reflected in each of the Geronimo cluster members.
Download the Terracotta Sessions bundle and run the Installer. This example requires
"Open Terracotta 2.2.1 Stable 2" or higher.
Terracotta Server
Page 4
Load Balancing & Clustering
1.1.1 with the Tomcat web container. The Jetty web container is not yet supported by
Terracotta.
Note: -
Download only J2EE certified release. Don’t download minimal / little-G releases.
Minimal / little-G release doesn’t support administration console. User need Admin
console for variety of purposes like new applications deployment etc.
Note that the same version release of Geronimo must be installed on each machine
to be clustered. Mixing versions of Geronimo is not currently supported by
Terracotta.
Terracotta Server
Page 5
Load Balancing & Clustering
The Terracotta client needs to be installed on each machine that contains a Geronimo
cluster member. Currently, the same install bundle includes both the Terracotta server and
client. So, it is possible to run the Terracotta Server and Terracotta Client on the same
machine with a common installation.
Download the Terracotta Sessions bundle and run the Installer on each cluster member.
This example requires "Open Terracotta 2.2.1 Stable 2" or higher.
Terracotta Server
Page 6
Load Balancing & Clustering
The tc-config.xml file identifies which context-roots are to be clustered as well as the data
types that are to be placed in the HttpSession.
This example will use the Terracotta configuration file that is delivered with the Terracotta
distribution. The specific file is:
C:\Terracotta\terracotta-2.2.1\sessions\sandbox\tomcat5.5\tc-config.xml
Change the tc-config.xml file to look similar to the following example. Note that the tc-
config.xml example below only shows the xml items that are to be updated. Other portions
of that xml file should remain unchanged. Remember to change the IP address in the
example below to the address of the Terracotta Server.
Terracotta Server
Page 7
Load Balancing & Clustering
Start the Terracotta server specifying the location of the tc-config.xml file that you just
updated.
cd C:\Terracotta\terracotta-2.2.1\sessions\bin
start-tc-server.bat -f c:\Terracotta\terracotta-2.2.1\sessions\sandbox\tomcat5.5\tc-
config.xml
Terracotta Server
Page 8
Load Balancing & Clustering
Open Terracotta supports a variety of JVMs and each one requires a unique boot jar be
present in the bootclasspath when launching the Geronimo server. The example below is
using the Windows JVM that is present in the Terracotta Sessions Package. It is possible to
use other JVMs, though a different boot jar will likely need to be created. Also some of the
launch arguments in the script below were obtained by issuing the dso-env script in
c:\Terracotta\terracotta-2.2.1\sessions\bin\ directory. You should issue this command on
your system to find the arguments that are appropriate for your environment.
The IPAddress in the example below needs to be replaced with the IP Address (or hostname)
of your Terracotta server. This value will be used to determine which Terracotta server will
provide the Terracotta client with its tc-config.xml file. Alternately, -
Dtc.config="IPAddress:9510" can be omitted though you will need to update tc-config.xml
on each cluster member (e.g. c:\Terracotta\terracotta-
2.2.1\sessions\sandbox\tomcat5.5\tc-config.xml). Review the Terracotta documentation for
more details.
Here is an example startup on a Windows Machine:
Starting Geronimo
c:\Terracotta\terracotta-2.2.1\jre\bin\java.exe
-Xbootclasspath/p:"C:\Terracotta\terracotta-2.2.1\common\lib\dso-boot\dso-boot-
hotspot_win32_150_09.jar"
-Dtc.install-root="C:\Terracotta\terracotta-2.2.1"
-Dtc.config="IPAddress:9510"
-jar c:\geronimo-1.1.1-TERRACOTTA\geronimo-1.1.1\bin\server.jar
Terracotta Server
Page 9
Load Balancing & Clustering
Use the Geronimo admin console to install the appropriate example application to each of
the Geronimo installations.
Here are links to the example applications and the deployment plan.
Note that the two applications above are identical except for the field which indicates the
Server name (e.g. Server1, Server2). This distinction will be useful when testing.
Now test that the applications were deployed correctly by accessing the applications with
your favourite Web Browser:
http://YourHost1:8080/servlets-examples-terracotta/servlet/SessionExample
http://YourHost2:8080/servlets-examples-terracotta/servlet/SessionExample
Terracotta Server
Page 10
Load Balancing & Clustering
Now you are ready to setup the Load Balancer. We recommend using Apache HTTP server
and mod_jk for this example.
The installation type. The "Complete" option installs everything, including the
source code if you downloaded the -src.msi package. Choose the "Custom"
install if you choose not to install the documentation, or the source code from
that package.
Terracotta Server
Page 11
Load Balancing & Clustering
apache –t
Start Apache using particular configuration file:
apache -f "c:\my server\conf\my.conf"
apache -f test\test.conf
Note: This conf file is httpd.conf
To stop Apache.
apache -k shutdown
Terracotta Server
Page 12
Load Balancing & Clustering
Mod_JK Setup:
workers.java_home=C:\JavaSDK\jdk
ps=\
worker.list=loadbalancer,status
worker.node1.port=8009
worker.node1.host=_your.first.cluster.member.host.name_or_IP_address
worker.node1.type=ajp13
worker.node1.lbfactor=1
worker.node2.port=8009
worker.node2.host=_your.second.cluster.member.host.name_or_IP_address
worker.node2.type=ajp13
worker.node2.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1
worker.status.type=status
Terracotta Server
Page 13
Load Balancing & Clustering
AddModule mod_jk.c
<IfModule mod_jk.c>
JkWorkersFile "C:/Program Files/Apache Group/Apache/conf/workers.properties"
JkLogFile logs/mod_jk.log
JkLogLevel error
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
Alias /servlets-examples-terracotta "CATALINA_HOME\repository\geronimo\servlets-
examples-terracotta\1.1\servlets-examples-terracotta-1.1.war"
<Directory "CATALINA_HOME\repository\geronimo\servlets-examples-
terracotta\1.1\servlets-examples-terracotta-1.1.war">
Options Indexes +FollowSymLinks
AllowOverride None
Allow from all
</Directory>
<Location /*/WEB-INF/*>
AllowOverride None
deny from all
</Location>
</IfModule>
Terracotta Server
Page 14
Load Balancing & Clustering
http://YourHost/servlets-examples-terracotta/servlet/SessionExample
Note that the output page contains the ID of the server that is servicing the request. In your
browser window, fill in the appropriate input fields and hit the submit button. Add a few
more items to your shopping cart. Notice that the browser indicates which server (Server1
or Server2) is servicing your request. Without Sticky Session support, you may see the load
balancer alternately route the requests between the two cluster members. If you have setup
everything correctly, then the shopping cart data should be present in the session after the
browser request moves between the two servers. For Sticky Session, you can test failover by
stopping the Geronimo server that is currently servicing the session and seeing that the next
http request will failover into the remaining cluster member. The httpsession data from the
previous request should be recovered and displayed in the refreshed browser window.
Note:
When testing using a web browser, make sure that you erase cookies and cached
pages between test cases. Browser caching can cause confusion when testing.
Terracotta Server
Page 15
Load Balancing & Clustering
Useful Links:
http://mule.mulesource.org/display/MULE/Clustering
http://mule.mulesource.org/display/MULE/External+Clustering+for+Mule
http://cwiki.apache.org/GMOxDEV/clustering-geronimo-with-open-terracotta.html
http://www.johnturner.com/howto/winxp-howto.html
http://www.devside.net/guides/windows/tomcat
http://www.cnr.berkeley.edu/~salazar/apache_tomcat.html
http://www.debianhelp.co.uk/apachetomcat.htm
http://www.devside.net/guides/windows/mod-jk
http://tomcat.apache.org/tomcat-3.3-doc/mod_jk-howto.html
Terracotta Server
Page 16