I managed to have cluster working only with terracotta-3.1.1, with is a bit old, as newer version is 3.2.1. To download terracotta-3.1.1 I had to craft by hand the download url, after the require registration.
Instruction are so clear that I'm not going to add anything. I recommend to create beforhand the directories:
$IDP_HOME/cluster $TC_HOME/logs
Here is my startup script for debian:
#!/bin/sh JAVA_HOME=/usr/lib/jvm/java-6-sun TC_HOME=/opt/terracotta TC_CONFIG=/opt/shibboleth-idp/conf/tc-config.xml # where to put stdout/stderr logs TC_LOGS=$TC_HOME/logs # user to run tc as TC_USER=root # the identity of this node TC_SERVER=node1 JAVA_OPTS="\ -verbose:gc \ -XX:+PrintGCDetails \ -XX:-TraceClassUnloading \ -Xmx512M \ -Xms512M \ -XX:MaxGCPauseMillis=5000 \ -XX:+UseParallelOldGC \ -XX:+PrintCommandLineFlags \ " export JAVA_HOME export JAVA_OPTS start () { echo "Starting Terracotta Server as " ${TC_SERVER} ${TC_HOME}/bin/start-tc-server.sh -n ${TC_SERVER} -f ${TC_CONFIG} > ${TC_LOGS}/terracotta.log 2>&1 & # $TC_INSTALL_DIR/bin/start-tc-server.sh -f $TC_CONFIG_PATH & } stop () { echo "Stopping Terracotta Server ..." ${TC_HOME}/bin/stop-tc-server.sh 2>&1 > ${TC_LOGS}/terracotta.log & # $TC_INSTALL_DIR/bin/stop-tc-server.sh -f $TC_CONFIG_PATH -n `hostname -s` & } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 10 start ;; *) echo "Usage terracotta start|stop|restart" exit 1;; esac exit $?
Of course TC_SERVER=node1 should reflect your configuration.
The flags to JAVA_OPTS were gathered in the mailing list.
Next it is necessary to modify tomcat6 to join terracotta. I didn't find a way to put configuration in /etc/default/tomcat, so I modified /etc/init.d/tomcat6 in CATALINA_OPTS which now reads:
CATALINA_OPTS="-Xms256M -Xmx512M -XX:MaxPermSize=192M -server -Dtc.install-root=/opt/terracotta -Dtc.config=/opt/shibboleth-idp/conf/tc-config.xml -Xbootclasspath/p:/opt/terracotta/lib/dso- boot/dso-boot-hotspot_linux_160_12.jar"