Question / Problem

In order to satisfy fail-over and/or performance requirements, it is recommended to setup a clustered environment consisting of 2 or more individual CRX cluster instances. This article is about how to manually setup a cluster of 2 CRX instances.

Answer / Resolution

Cluster nodes communicate with each other on different layers: via TCP/IP and the filesystem via a shared folder. The latter has to be accessible both in a read/write fashion for all instances participating in a cluster. Only the master instance will write to this folder. If the master instance dies or is stopped, another instance automatically becomes the new master.

There are multiple ways to install a cluster. One is to change the repository-template.xml file and install each instance normally, another is to create a 'template' instance and copy that to each additional cluster node.

Installation Using a Custom repository-template.xml

CRX 2.x only.

  • Before installing the first instance, extract the crx-explorer_crx.war file.
  • Edit the repository-template.xml file: set the shared path.
  • Re-pack the crx-explorer_crx.war file.

For each instance, install this custom crx-explorer_crx.war file. All cluster nodes will point to the same shared path.

To include the shared directory in the Online Backup, create a symlink to the shared path in each cluster node. This can be done while CRX is running. The symlink is only used during online backup; the symlink is not used during normal operation. The configuration does not need to be changed for this. To create a symlink:

  • Navigate to crx-quickstart/repository
  • Create a symlink named shared pointing to the shared folder: ln -s <path_to_network_share> shared

This is only required on the cluster nodes where you want to use the Online Backup tool. The recommended symlink name is shared, however a different name can be used. The symlink needs to be within the crx-quickstart folder for the Online Backup tool.

Installation Using Template Instance

Install First Instance

Start off with installing the first instance. Since a shared folder is required (e.g. NFS or CIFS), it is recommended to use symlinks on the filesystem to transparently make this network share available.

To set the network share before installing, do the following:

  • Unpack the CRX quickstart jar-file to generate the initial folder structure: java -jar *.jar -unpack
  • Navigate to crx-quickstart/repository
  • Create a symlink named shared pointing to the network-share where the shared folder should be stored: ln -s <path_to_network_share> shared
  • Start CRX/CQ: java -Xmx256m -jar *.jar

During the installation, CRX will transparently use the network-share via the shared symlink to install its shared files and folders. Once the installation is complete, verify that the network-share has actually been used and that CRX is running correctly. Then stop the instance and proceed to the next step.

Install Additional Cluster Node

  • Copy the same CRX quickstart jar-file from above including a valid license.properties file to a second machine, e.g. /opt/day/crx
  • Copy the complete crx-quickstart folder from the first instance to the second machine, below /opt/day/crx
  • On the second machine, navigate to /opt/day/crx/crx-quickstart/repository
  • Delete the file cluster_node.id which will be automatically recreated on startup (the cluster ID has to be unique)
  • Make sure the symlink shared points to the same network-share as on the first instance
  • Start both instances one after another

At this point, a 2-node CRX cluster is running. Content that is created/modified on either instance is visible on the other.

Affected Versions

CRX 1.4.1, 1.4.2, 2.0

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License  Twitter™ and Facebook posts are not covered under the terms of Creative Commons.

Legal Notices   |   Online Privacy Policy