Summary
Although adTempus is not "cluster aware," it can be managed as a generic service in a clustered environment to provide a failover configuration.
This article explains how to configure adTempus for active/passive failover clustering.
Assumptions
This article assumes that you are familiar with the procedures for setting up and administering clustering for your operating system.
This article also assumes that you will be using a standalone SQL Server instance (not MSDE or the default Microsoft Access database provided with adTempus).
Background
adTempus stores almost all of its configuration data in a database, including all job definitions and history, and information on the current state of each job. Therefore two or more adTempus instances can be installed on separate nodes of a cluster (in an active/passive configuration, so that only one instance is active at a time). If all instances are configured to use the same database, any instance can take over job execution if the active node fails.
Files that are "captured" by adTempus during job execution are stored on disk, not in the database. adTempus can be configured to use a shared storage device for these files, allowing them to be shared between instances as well.
Note that adTempus can only execute programs (and scripts, etc.) that are installed on the same computer as adTempus. Therefore all software to be executed by adTempus must also be installed on all nodes.
Preparation
SQL Server Configuration
Ensure that SQL Server is installed and configured properly. Presumably you will configure SQL Server in a clustered environment as well, so that it does not become the failure point for the configuration.
SQL Server must be configured to allow "SQL Server" security (using a user ID and password). This is necessary because adTempus will be running under the Local System account of a different server; SQL Server will not be able to authenticate connections from this server using integrated Windows security.
Shared Storage
Create a directory on a shared storage device (accessible from all nodes in the failover configuration) to store the adTempus data files that must be stored outside the database.
Installation and Configuration
Primary Node
First install adTempus on your primary node. Either during, or afterward using the conversion process, configure adTempus to use your SQL Server instance.
After adTempus has been installed and configured to use SQL Server, you must reconfigure adTempus to use your shared storage directory to store its data files:
- Stop the adTempus service.
- Run the Registry Editor and go to "HKEY_LOCAL_MACHINE\SOFTWARE\Arcana Development\adTempus".
- Create a new string (REG_SZ) value named "datapath" and set it to the data directory you created on the shared storage device in the Preparation step above.
- Start the adTempus service.
At this point you should create and execute a test job to confirm that adTempus is functioning correctly on the primary node. You should configure the job to capture a file (using a Response on a job or step) to confirm that adTempus is able to use the shared storage location. After running the job, confirm that you are able to view the captured file from the job's history in the adTempus Console.
Secondary Node
Next install adTempus on your secondary node. When you are prompted for a database type during installation, select the "upgrading or reinstalling" option: you do not need to install and configure a database during installation, because you will be manually configuring the database settings after installation.
After installation completes, you must make configuration changes to use the correct database and storage locations:
- Stop the adTempus service.
- On the primary node, run the Registry Editor and locate the key "HKEY_LOCAL_MACHINE\SOFTWARE\Arcana Development\adTempus\Database". Export this key to a file.
- On the secondary node, run the Registry Editor and import the file you exported in step 2.
- Again on the secondary node, go to "HKEY_LOCAL_MACHINE\SOFTWARE\Arcana Development\adTempus".
- Create a new string (REG_SZ) value named "datapath" and set it to the data directory you created on the shared storage device in the Preparation step above.
- Stop the adTempus service on the primary node.
- Start the adTempus service on the secondary node.
Important Note: adTempus has no way of preventing you from running two instances at the same time, pointed at the same database, so you must always take care that only one instance is running at a time. If two instances are allowed to run simultaneously you will end up with corrupted data.
At this point you should test that adTempus is working correctly on the second node:
- Start the adTempus Console and confirm that the test job you created on the primary node appears.
- View the history of the test job, and confirm that you are able to view the captured file from the previous execution.
- Run the test job on the secondary node and confirm that it runs correctly.
You may now stop the adTempus service on the secondary node and start it on the primary node.
Clustering Configuration
Using the operating system's cluster administration tools, configure the cluster to manage adTempus as a generic service, so that Windows will start adTempus on the secondary node during failover.
adTempus Job Configuration
No special configuration is required in your adTempus jobs to allow them to run on more than one node: the clustering configuration will be transparent to adTempus.
If your primary node fails, adTempus will be started on the secondary node. Any jobs that were running at the time of the failure will have their status reported as "abandoned," indicating that adTempus was shut down while they were running. Jobs will continue to be executed according to their schedules, on the secondary node.
Job Recovery
The Recovery page of a job's properties allows you to have adTempus restart a job that is interrupted because of a shutdown. In a failover configuration, you may wish to use this option to have adTempus "resume" your job when adTempus starts on the secondary server. Note that for this option to work properly, the software being executed by adTempus must be capable of being safely restarted. For example, it must have its own checks to prevent it from repeating processing it has already done, if that duplicate processing can be harmful.
The Recovery page offers the option to "run on startup if adTempus terminated unexpectedly while job was running". In adTempus version 2.0.4 and later, this option can be used to restart a job interrupted due to a failover. When you have this option checked, the adTempus instance on the secondary node will detect that the job was running when the primary node failed, and will restart the job at the proper point.
In versions prior to 2.0.4, this option will not produce the desired effect, because the information adTempus uses to detect if adTempus was terminated "unexpectedly" is stored in the Registry and is therefore local to each node. Instead you must use the "run job on startup if adTempus was shut down while job was running" option.
Licensing
In an active/passive configuration (where adTempus will only be active on one node at a time), you are only required to purchase a single adTempus license. As our online license management system does not currently support requests for cluster licenses, please contact us to obtain a single license file that can be used for both nodes of the cluster. We will need the following information:
- Your license account number
- The name of the cluster
- The name of the primary node
- The name of the secondary node