...
- Build the fcrepo war file or download the prebuilt fcrepo war file
- Build the War file as described on this page
- Fetch the WAR file from the download page
- Get Tomcat
Download Tomcat 7.0.50 and unpack it
Code Block #> wget http://mirror.synyx.de/apache/tomcat/tomcat-7/v7.0.50/bin/apache-tomcat-7.0.50.tar.gz #> tar -zxvf apache-tomcat-7.0.50.tar.gz #> mv apache-tomcat-7.0.50 tomcat7-8080
- Put the WAR file into tomcat's webapp directory or create a symbolic link
Copy the fcrepo-webapp-VERSION.war file
Code Block #> cp fcrepo-webapp-VERSION.war tomcat7-8080/webapps/fcrepo.war
- Get the Infinispan XML configuration file
Download from github and put it into tomcat7-8080
Code Block #> wget -O infinispan.xml https://gist.github.com/fasseg/8646707/raw #> mv infinispan.xml tomcat7-8080/
- Get the Modeshape JSON configuration file
Download from Github and put into tomcat7-8080
Code Block #> wget -O repository.json https://gist.github.com/fasseg/8646727/raw #> mv repository.json tomcat7-8080/
- Get the JGroups UDP Transport configuration file
Download from Github and put into tomcat7-8080
Code Block #> wget -O jgroups-fedora-udp.xml https://gist.github.com/fasseg/8646743/raw #> mv jgroups-fedora-udp.xml tomcat7-8080/
- Set the send/recv buffer sizes if neccessary
Use the following commands to set the buffer size
Code Block #> sysctl net.core.rmem_max=5242880 #> sysctl net.core.wmem_max=5242880
- Copy the whole tomcat folder in order to create a second instance
Code Block #> cp -R tomcat7-8080/ tomcat7-8081
- Change the connector ports of the second Tomcat instance to 8081, 8006 and 8010
Code Block #> sed -i 's/8080/8081/g' tomcat7-8081/conf/server.xml #> sed -i 's/8005/8006/g' tomcat7-8081/conf/server.xml #> sed -i 's/8009/8010/g' tomcat7-8081/conf/server.xml
- Start the first instance
Code Block #> CATALINA_OPTS="-Xmx1024m -XX:MaxPermSize=256m -Dfcrepo.modeshape.configuration=file:///path/to/repository.json -Djava.net.preferIPv4Stack=true -Dfcrepo.ispn.jgroups.configuration=/path/to/jgroups-fedora-udp.xml -Djgroups.udp.mcast_addr=239.42.42.42 -Dfcrepo.infinispan.cache_configuration=/path/to/infinispan.xml" tomcat7-8080/bin/catalina.sh run
- Start the second instance
Code Block #> CATALINA_OPTS="-Xmx1024m -XX:MaxPermSize=256m -Dfcrepo.modeshape.configuration=file:///path/to/repository.json -Djava.net.preferIPv4Stack=true -Dfcrepo.ispn.jgroups.configuration=/path/to/jgroups-fedora-udp.xml -Djgroups.udp.mcast_addr=239.42.42.42 -Dfcrepo.infinispan.cache_configuration=/path/to/infinispan.xml" tomcat7-8081/bin/catalina.sh run
- Check that the instances are reachable and that the clustersize is '2':
Code Block #> wget http://localhost:8080/fcrepo/rest #> wget http://localhost:8081/fcrepo/rest
- Navigate to http://localhost:8080/fcrepo/rest
Using TCP for Discovery and Sync
If you cannot use UDP, which is recommended for larger clusters, then TCP can be used. There are some things to watch out for when configuring TCP.
TCPPING Element
Each host has a different TCPPING configuration. This can be tricky to configure:
- The initial_hosts attribute should only include remote hosts for the local node, not itself.
- The num_initial_members should match the count of remote hosts, i.e. it does not include the local node either.
- If you are running just one port on each host, then port_range will be 0.
- IP resolution is important if you use DNS names. The locally resolved IP of each remote host must match the TCP@bind_addr in the remote host config.
TCP Element
If you use a hostname for bind_addr, make sure that it resolved to the IP you want, probably an external one and not the loopback IP. This is easy to miss.
Load Balancing Fedora 4 using Apache and mod_jk
...