This document shows you how to add Terracotta clustering to an application that is using Quartz. Use this express installation if you have been running your application:
To set up the cluster with Terracotta, you will add a Terracotta JAR to each application and run a Terracotta server array. Except as noted below, you can continue to use Quartz in your application as specified in the Quartz documentation .
To add Terracotta clustering to an application that is using Quartz, follow these steps:
Download the kit and run the installer on the machine that will host the Terracotta server.
If you create Quartz objects such as Trigger types, they must be serializable.
To install the Terracotta Job Store for Quartz in your application, add the following JAR files to your application's classpath:
${TERRACOTTA_HOME}/quartz/quartz-terracotta-<version>.jar
${TERRACOTTA_HOME}/quartz/quartz-<quartz-version>.jar
where <version> is the current version of the Quartz-Terracotta JAR and <quartz-version> is the current version of Quartz (1.7.0 or higher). The Enterprise trial kit contains
quartz-terracotta-ee-<version>.jar
in place of
quartz-terracotta-<version>.jar
.
If you are using a WAR file, add these JAR files to its
WEB-INF/lib
directory.
|
Most application servers (or web containers) should work with this installation of the Terracotta Job Store for Quartz. However, note the following:
- WebLogic application server – You must use the
supported version
of WebLogic.
|
The Quartz configuration file,
quartz.properties
by default, should be on your application's classpath. If you are using a WAR file, add the Quartz configuration file to
WEB-INF/classes
or to a JAR file that is included in
WEB-INF/lib
.
To be clustered by Terracotta, the following properties in
quartz.properties
must be set as follows:
org.quartz.jobStore.class = org.terracotta.quartz.TerracottaJobStore
org.quartz.jobStore.tcConfigUrl = <path/to/Terracotta/configuration>
The property
org.quartz.jobStore.tcConfigUrl
must point the client (or application server) at the location of the Terracotta configuration.
The client must load the configuration from a file or a Terracotta server. If loading from a server, give the server’s hostname and its Terracotta DSO port (9510 by default). The following example shows a configuration that is loaded from the Terracotta server on the local host:
org.quartz.jobStore.class = org.terracotta.quartz.TerracottaJobStore
org.quartz.jobStore.tcConfigUrl = localhost:9510
To load Terracotta configuration from a Terracotta configuration file (
tc-config.xml
by default), use a path. For example, if the Terracotta configuration file is located on
myHost.myNet.net
at
/usr/local/TerracottaHome
, use the full URL along with the configuration file’s name:
org.quartz.jobStore.class = org.terracotta.quartz.TerracottaJobStore
org.quartz.jobStore.tcConfigUrl = file://myHost.myNet.net/usr/local/TerracottaHome/tc-config.xml
A Quartz scheduler has a default name configured by the following
quartz.properties
property:
org.quartz.scheduler.instanceName = QuartzScheduler
Setting this property is not required. However, you can use this property to instantiate and differentiate between two or more instances of the scheduler, each of which then receives a separate store in the Terracotta cluster.
Using different scheduler names allows you to isolate different job stores within the Terracotta cluster (logically unique scheduler instances). Using the same scheduler name allows different scheduler intances to share the same job store in the cluster.
This step shows you how to how run clients and servers on separate machines and add failover (High Availability). You will expand the Terracotta cluster and add High Availability by doing the following:
These tasks bring your cluster closer to a production architecture.
tc-config.xml
with contents similar to the following:<?xml version="1.0" encoding="UTF-8"?>
<!-- All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved. -->
<tc:tc-config xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-5.xsd"
xmlns:tc="http://www.terracotta.org/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<servers>
<!-- Sets where the Terracotta server can be found. Replace the value of host with the server's IP address. -->
<server host="server.1.ip.address" name="Server1">
<data>%(user.home)/terracotta/server-data</data>
<logs>%(user.home)/terracotta/server-logs</logs>
</server>
<!-- If using a standby Terracotta server, also referred to as an ACTIVE-PASSIVE configuration, add the second server here. -->
<server host="server.2.ip.address" name="Server2">
<data>%(user.home)/terracotta/server-data</data>
<logs>%(user.home)/terracotta/server-logs</logs>
</server>
<!-- If using more than one server, add an <ha> section. -->
<ha>
<mode>networked-active-passive</mode>
<networked-active-passive>
<election-time>5</election-time>
</networked-active-passive>
</ha>
</servers>
<!-- Sets where the generated client logs are saved on clients. -->
<clients>
<logs>%(user.home)/terracotta/client-logs</logs>
</clients>
</tc:tc-config>
tc-config.xml
.
tc-config.xml
to a location accessible to the Terracotta servers.Be sure to install your application and any application servers on each node.
org.quartz.jobStore.tcConfigUrl
property in
quartz.properties
to list both Terracotta servers:org.quartz.jobStore.tcConfigUrl = server.1.ip.address:9510,server.2.ip.address:9510
quartz.properties
to each application node and ensure that it is on your application's classpath. If you are using a WAR file, add the Quartz configuration file to
WEB-INF/classes
or to a JAR file that is included in
WEB-INF/lib
.
tc-config.xml
:[PROMPT] ${TERRACOTTA_HOME}/bin/start-tc-server.sh -f <path/to/tc-config.xml> -n Server1 &
[PROMPT] ${TERRACOTTA_HOME}\bin\start-tc-server.bat -f <path\to\tc-config.xml> -n Server1 &
If you configured a second server, start that server in the same way on its machine, entering its name after the
-n
flag. The second server to start up becomes the "hot" standby, or PASSIVE. Any other servers you configured will also start up as standby servers.
To learn more about working with a Terracotta cluster, see the following documents:
tc-config.xml
is propagated and loaded in a Terracotta cluster in different environments.Top of 3.1 Terracotta Job Store for Quartz Express Installation