In the ADEP release, the Experience Server “Quickstarts” come with a Java Content Repository (JCR) called CRX. This is horizontally scalable by clustering multiple nodes and putting a load balancer in the front.

TERMINOLOGY
———–
You can have a farm of multiple CRX nodes that are unaware of one another (not clustered, but only load-balanced). Adobe documentation calls this “Read-Only Clustering” but this is not really clustering in the traditional sense.

You can also have “true” clustering. It can be of three different types:

#1 and #2 requires that you set up a network share using NFS, SAMBA or CIFS.

In #3, the separate, individual instances of the ‘Data Store’ and the ‘Journal’ on each of the cluster nodes are kept in synch with one another over the network using HTTP on TCP port 8088 (default). Cluster consistency is eventual (could take minutes), not instantaneous. If the Data Store is used to store large files, cluster synch traffic could become very high. In these cases, it might be more efficient to have a shared Data Store (#2).

The CRX cluster has the concept of a ‘master’ and multiple ‘slaves’. Repository synch messages are all sent to the master, which in turn replicates them to all of the slaves. If the node performing the master role goes down, one of the slave nodes will be elected to perform that role. If the node that previously played the master role comes back up, it does NOT automatically get elected to be master unless you set the parameter ‘preferredMaster’ to true in \crx-quickstart\repository\workspaces\crx.default\workspace.xml

It is CRITICAL to cluster health that the filesystem hosting the CRX master instance NEVER runs out of space.

The following steps are for a Windows CRX cluster. For this example, the server DNS names and corresponding IP addresses are:
– (crx1.adobe.com) 192.180.16.1
– (crx2.adobe.com) 192.180.16.2

INSTANCE 1 (MASTER)
——————-

Step 1) Install a 1.6 JDK
Step 2) Configure %JAVA_HOME% and %Path%
Step 3) Run the Quickstart JAR java -jar adep-ria-quickstart-10-0-all-all.jar
Step 4) Enter license key, or obtain trial license.
Step 5) Ensure that the login dialog pops up and that you are able to log in (admin/admin)
Step 6) Ctrl-C to shut down the server
Step 7) Set the system clock (date and time). Eg: set time to 2:10:50 PM with the command time 14:10:50. The system clocks of all cluster members should be in synch.

Step 8) Open TCP port 8088 on the Windows firewall on all cluster nodes by creating an InBound firewall rule. It is assumed here that outbound traffic on port 8088 is already permitted (in Windows, this is default behavior). You also want to open other ports such as 4502, the default TCP port for user requests.

Step 9) Install and configure a network protocol analyzer such as Wireshark. Run Wireshark with the appropriate filter. For example, on crx1.adobe.com, the filter should be:(ip.addr eq 192.180.16.1) and (tcp.port eq 8088)

Step 10) Run Quickstart from C:\Programs\ADEP_RIA_Quickstart\crx-quickstart\server>server.bat Make sure you can login to the Admin console from a remote machine http://192.180.16.2:4502

INSTANCE 2 (SLAVE 1)
——————-

Step 1) Install a 1.6 JDK
Step 2) Configure %JAVA_HOME% and %Path%
Step 3) Copy license file (license.properties) from the MASTER instance
Step 4) Run the Quickstart JAR java -jar adep-ria-quickstart-10-0-all-all.jar
Step 5) Ensure that the login dialog pops up and that you are able to log in (admin/admin)
Step 6) Ctrl-C to shut down the server
Step 7) Set the system clock (date and time). Eg: set time to 2:10:50 PM with the command time 14:10:50. The system clocks of all cluster members should be in synch.

Step 8) Open TCP port 8088 on the Windows firewall on all cluster nodes by creating an InBound firewall rule. It is assumed here that outbound traffic on port 8088 is already permitted (in Windows, this is default behavior). You also want to open other ports such as 4502, the default TCP port for user requests.

Step 9) Install and configure a network protocol analyzer such as Wireshark on all nodes. Run Wireshark with the appropriate filter. For example, on crx1.adobe.com, the filter should be:(ip.addr eq 192.180.16.2) and (tcp.port eq 8088)

At this stage, you should NOT see any cluster traffic on this node

Step 10) Run Quickstart from C:\Programs\ADEP_RIA_Quickstart\crx-quickstart\server>server.bat Make sure you can login to the Admin console from a remote machine http://192.180.16.2:4502

Step 12) Join the slave (crx2.adobe.com) to the master. This should take about 1 minute. Please note, you are logged in to the slave, but pointing it at the master.

If successful, the federation operation will result in this page:

Step 13) Choose to login to the cluster repository. You can now see the “slave” listed (in dark red) as being part of the cluster. See below:

Step 14) Login to the “master” at http://192.180.16.1:4502/crx/config/cluster.jsp You will see that the new “slave” is listed as a member of the cluster. The “master” will be displayed in dark red to indicate that you are currently logged on to the “master”.

Step 15) On Wireshark, check for network traffic. You should see some.
On a stable 4-node CRX cluster with no activity, this cluster traffic should be about 4 IP packets per second (each packet about 85 bytes) for the master node. This would be an overhead of about 340 bytes/second (0.003 Mbps).

… If needed, join additional slave nodes to the master node.

VERIFICATION
————

1) On one of the slave nodes, create a folder (of type nt:folder) under /content called /clustertest. You can use CRXDE Lite for this.

– Load http://crx1.adobe.com:4502/crx/de/index.jsp
– Click on the admin@crx.default link at the top right, login as user ‘admin’ with password ‘admin’
– Highlight the node /content, right-click the mouse, and choose Create->Create Node

– Click the ‘Save All’ button on the top left.

2) Verify on another cluster node

– Load http://crx2.adobe.com:4502/crx/de/index.jsp
– Click on the admin@crx.default link at the top right, login as user ‘admin’ with password ‘admin’
– Expand the node /content
– Verify that the folder /content/clustertest exists.