Every node of cluster MUST have the same mounted Network File System with the read and write permissions on it.
"/mnt/tornado" - path to the mounted Network File System (all cluster nodes must use the same NFS).
Every node of cluster MUST use the same database.
The same clusters on different nodes MUST have the same names (for example, if Indexer cluster in workspace production on the first node has the name "production_indexer_cluster", then indexer clusters in workspace production on all other nodes MUST have the same name "production_indexer_cluster" ).
JBossTS Transaction Service and JBossCache Transaction Manager are used. This can be checked via
exo-configuration.xml
as bellow:
<component>
<key>org.jboss.cache.transaction.TransactionManagerLookup</key>
<type>org.jboss.cache.GenericTransactionManagerLookup</type>
</component>
<component>
<key>org.exoplatform.services.transaction.TransactionService</key>
<type>org.exoplatform.services.transaction.jbosscache.JBossTransactionsService</type>
<init-params>
<value-param>
<name>timeout</name>
<value>300</value>
</value-param>
</init-params>
</component>
Configuration of every workspace in repository must contain the following parts:
<value-storages>
<value-storage id="system" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
<properties>
<property name="path" value="/mnt/tornado/temp/values/production" />
</properties>
<filters>
<filter property-type="Binary" />
</filters>
</value-storage>
</value-storages>
|
<cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache">
<properties>
<property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-data.xml" />
<property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" />
<property name="jbosscache-cluster-name" value="JCR_Cluster_cache" />
<property name="jgroups-multiplexer-stack" value="false" />
<property name="jbosscache-shareable" value="true" />
</properties>
</cache>
| |
| |
| |
| |
|
You must replace or add to the <query-handler>
block,
the changesfilter-class
parameter equals with:
<property name="changesfilter-class" value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter"/>
Then, add the JBossCache-oriented configuration. The configuration should look like:
<query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
<property name="changesfilter-class" value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" />
<property name="index-dir" value="/mnt/tornado/temp/jcrlucenedb/production" />
<property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-indexer.xml" />
<property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" />
<property name="jbosscache-cluster-name" value="JCR_Cluster_indexer" />
<property name="jgroups-multiplexer-stack" value="false" />
<property name="jbosscache-shareable" value="true" />
<property name="max-volatile-time" value="60" />
</properties>
</query-handler>
| |
| |
| |
| |
|
These properties have the same meaning and restrictions as in
the previous code block except the last one max-volatile-time
.
This may be the hardest element to configure, because you have to define access to the database where locks will be stored. Replace the existing lock-manager with configuration shown below:
<lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
<properties>
<property name="time-out" value="15m" />
<property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-lock.xml" />
<property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" />
<property name="jbosscache-cluster-name" value="JCR_Cluster_locks" />
<property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlocks"/>
<property name="jbosscache-cl-cache.jdbc.table.create" value="true"/>
<property name="jbosscache-cl-cache.jdbc.table.drop" value="false"/>
<property name="jbosscache-cl-cache.jdbc.table.primarykey" value="jcrlocks_pk"/>
<property name="jbosscache-cl-cache.jdbc.fqn.column" value="fqn"/>
<property name="jbosscache-cl-cache.jdbc.node.column" value="node"/>
<property name="jbosscache-cl-cache.jdbc.parent.column" value="parent"/>
<property name="jbosscache-cl-cache.jdbc.datasource" value="jdbcjcr"/>
<property name="jgroups-multiplexer-stack" value="false" />
<property name="jbosscache-shareable" value="true" />
</properties>
</lock-manager>
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
Few properties are the same as in the previous components, but here you can see some strange "jbosscache-cl-cache.jdbc.*" properties. They define access parameters for the database where the lock is persisted.