You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Luis Leong <se...@inesc-macau.org.mo> on 2008/05/30 11:16:01 UTC
Clustering problem, How to automatically handle Single point of failure
Dear,
I have set up two cluster nodes which point to the same MySQL DB.
The point is, which is the best method for me to handle single point of
failure if one node is down? That means, can the repository will auto shift
to others nodes without changing in properties config manually?
Now I used RMI repository and the repository , here is node 1 configuration
node 2 just change the cluster node name to node_2
<?xml version="1.0"?>
<Repository>
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver" />
<param name="url"
value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
characterEncoding=UTF-8&autoReconnect=true" />
<param name="user" value="luis" />
<param name="password" value="luis" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix" value="rep_" />
</FileSystem>
<Security appName="Jackrabbit">
<AccessManager
class="org.apache.jackrabbit.core.security.SimpleAccessManager" />
<LoginModule
class="org.apache.jackrabbit.core.security.SimpleLoginModule">
<param name="anonymousId" value="anonymous" />
</LoginModule>
</Security>
<Workspaces rootPath="${rep.home}/wspHomes"
defaultWorkspace="default" configRootPath="/wspConfigs" />
<Workspace name="portal">
<FileSystem
class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver"
/>
<param name="url"
value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
characterEncoding=UTF-8&autoReconnect=true" />
<param name="user" value="luis" />
<param name="password" value="luis" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix"
value="JACKRABBIT_portal_" />
</FileSystem>
<!-- MySQL Server -->
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager
">
<param name="driver" value="com.mysql.jdbc.Driver"
/>
<param name="url"
value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
characterEncoding=UTF-8&autoReconnect=true" />
<param name="user" value="luis" />
<param name="password" value="luis" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix"
value="JACKRABBIT_portal_" />
<param name="externalBLOBs" value="false" />
</PersistenceManager>
<SearchIndex
class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${wsp.home}/index" />
<param name="useCompoundFile" value="true" />
<param name="minMergeDocs" value="100" />
<param name="volatileIdleTime" value="3" />
<param name="maxMergeDocs" value="100000" />
<param name="mergeFactor" value="10" />
<param name="bufferSize" value="10" />
<param name="cacheSize" value="1000" />
<param name="forceConsistencyCheck" value="false" />
<param name="autoRepair" value="true" />
<param name="analyzer"
value="org.apache.lucene.analysis.standard.StandardAnalyzer" />
<param name="queryClass"
value="org.apache.jackrabbit.core.query.QueryImpl" />
<param name="idleTime" value="-1" />
<!-- end of default values -->
<param name="textFilterClasses"
value="org.apache.jackrabbit.extractor.MsWordTextExtractor,org.apache.jackra
bbit.extractor.MsExcelTextExtractor,org.apache.jackrabbit.extractor.MsPowerP
ointTextExtractor,org.apache.jackrabbit.extractor.PdfTextExtractor,org.apach
e.jackrabbit.extractor.OpenOfficeTextExtractor,org.apache.jackrabbit.extract
or.RTFTextExtractor,org.apache.jackrabbit.extractor.HTMLTextExtractor,org.ap
ache.jackrabbit.extractor.XMLTextExtractor" />
<param name="extractorPoolSize " value="2" />
<param name="supportHighlighting" value="true" />
<param name="respectDocumentOrder" value="false" />
</SearchIndex>
</Workspace>
<Versioning rootPath="${rep.home}/version">
<FileSystem
class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver"
/>
<param name="url"
value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
characterEncoding=UTF-8&autoReconnect=true" />
<param name="user" value="luis" />
<param name="password" value="luis" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix"
value="JACKRABBIT_portal_" />
</FileSystem>
<!-- MySQL Server -->
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager
">
<param name="driver" value="com.mysql.jdbc.Driver"
/>
<param name="url"
value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
characterEncoding=UTF-8&autoReconnect=true" />
<param name="user" value="luis" />
<param name="password" value="luis" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix"
value="JACKRABBIT_VERSION_" />
<param name="externalBLOBs" value="false" />
</PersistenceManager>
</Versioning>
<Cluster id="node_1">
<Journal
class="org.apache.jackrabbit.core.journal.DatabaseJournal">
<param name="revision" value="${rep.home}/revision"
/>
<param name="driver" value="com.mysql.jdbc.Driver"
/>
<param name="url"
value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
characterEncoding=UTF-8&autoReconnect=true" />
<param name="user" value="luis" />
<param name="password" value="luis" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix" value="J_C_" />
</Journal>
</Cluster>
</Repository>
Best Wishes
Luis
Re: Clustering problem, How to automatically handle Single point
of failure
Posted by Sébastien Launay <se...@anyware-tech.com>.
Hi Luis,
I don't really understand your problem but if you are using
MySQL DB for clustering the only SPOF i see is the database
itself.
Indeed, if the first node is down the repository is still alive and
is accessible from the second node, but if the database is down
both nodes will failed to access data.
So, to avoid this SPOF you need to setup a high availability
configuration for MySQL like using Heartbeat and DRDB.
--
Sébastien LAUNAY
Luis Leong wrote:
> Dear,
>
>
>
> I have set up two cluster nodes which point to the same MySQL DB.
>
>
>
> The point is, which is the best method for me to handle single point of
> failure if one node is down? That means, can the repository will auto shift
> to others nodes without changing in properties config manually?
>
> Now I used RMI repository and the repository , here is node 1 configuration
> node 2 just change the cluster node name to node_2
>
> <?xml version="1.0"?>
>
>
>
> <Repository>
>
> <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
>
> <param name="driver" value="com.mysql.jdbc.Driver" />
>
> <param name="url"
>
>
> value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
> characterEncoding=UTF-8&autoReconnect=true" />
>
> <param name="user" value="luis" />
>
> <param name="password" value="luis" />
>
> <param name="schema" value="mysql" />
>
> <param name="schemaObjectPrefix" value="rep_" />
>
> </FileSystem>
>
> <Security appName="Jackrabbit">
>
> <AccessManager
>
>
> class="org.apache.jackrabbit.core.security.SimpleAccessManager" />
>
> <LoginModule
>
>
> class="org.apache.jackrabbit.core.security.SimpleLoginModule">
>
> <param name="anonymousId" value="anonymous" />
>
> </LoginModule>
>
> </Security>
>
> <Workspaces rootPath="${rep.home}/wspHomes"
>
> defaultWorkspace="default" configRootPath="/wspConfigs" />
>
> <Workspace name="portal">
>
> <FileSystem
>
>
> class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
>
> <param name="driver" value="com.mysql.jdbc.Driver"
> />
>
> <param name="url"
>
>
> value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
> characterEncoding=UTF-8&autoReconnect=true" />
>
> <param name="user" value="luis" />
>
> <param name="password" value="luis" />
>
> <param name="schema" value="mysql" />
>
> <param name="schemaObjectPrefix"
> value="JACKRABBIT_portal_" />
>
> </FileSystem>
>
>
>
> <!-- MySQL Server -->
>
>
>
> <PersistenceManager
>
>
> class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager
> ">
>
> <param name="driver" value="com.mysql.jdbc.Driver"
> />
>
> <param name="url"
>
>
> value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
> characterEncoding=UTF-8&autoReconnect=true" />
>
> <param name="user" value="luis" />
>
> <param name="password" value="luis" />
>
> <param name="schema" value="mysql" />
>
> <param name="schemaObjectPrefix"
> value="JACKRABBIT_portal_" />
>
> <param name="externalBLOBs" value="false" />
>
> </PersistenceManager>
>
>
>
> <SearchIndex
>
>
> class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
>
> <param name="path" value="${wsp.home}/index" />
>
>
>
> <param name="useCompoundFile" value="true" />
>
> <param name="minMergeDocs" value="100" />
>
> <param name="volatileIdleTime" value="3" />
>
> <param name="maxMergeDocs" value="100000" />
>
> <param name="mergeFactor" value="10" />
>
> <param name="bufferSize" value="10" />
>
> <param name="cacheSize" value="1000" />
>
> <param name="forceConsistencyCheck" value="false" />
>
> <param name="autoRepair" value="true" />
>
> <param name="analyzer"
>
>
> value="org.apache.lucene.analysis.standard.StandardAnalyzer" />
>
> <param name="queryClass"
>
>
> value="org.apache.jackrabbit.core.query.QueryImpl" />
>
> <param name="idleTime" value="-1" />
>
> <!-- end of default values -->
>
> <param name="textFilterClasses"
>
>
> value="org.apache.jackrabbit.extractor.MsWordTextExtractor,org.apache.jackra
> bbit.extractor.MsExcelTextExtractor,org.apache.jackrabbit.extractor.MsPowerP
> ointTextExtractor,org.apache.jackrabbit.extractor.PdfTextExtractor,org.apach
> e.jackrabbit.extractor.OpenOfficeTextExtractor,org.apache.jackrabbit.extract
> or.RTFTextExtractor,org.apache.jackrabbit.extractor.HTMLTextExtractor,org.ap
> ache.jackrabbit.extractor.XMLTextExtractor" />
>
> <param name="extractorPoolSize " value="2" />
>
> <param name="supportHighlighting" value="true" />
>
> <param name="respectDocumentOrder" value="false" />
>
>
>
> </SearchIndex>
>
> </Workspace>
>
> <Versioning rootPath="${rep.home}/version">
>
> <FileSystem
>
>
> class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
>
> <param name="driver" value="com.mysql.jdbc.Driver"
> />
>
> <param name="url"
>
>
> value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
> characterEncoding=UTF-8&autoReconnect=true" />
>
> <param name="user" value="luis" />
>
> <param name="password" value="luis" />
>
> <param name="schema" value="mysql" />
>
> <param name="schemaObjectPrefix"
> value="JACKRABBIT_portal_" />
>
> </FileSystem>
>
>
>
> <!-- MySQL Server -->
>
>
>
> <PersistenceManager
>
>
> class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager
> ">
>
> <param name="driver" value="com.mysql.jdbc.Driver"
> />
>
> <param name="url"
>
>
> value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
> characterEncoding=UTF-8&autoReconnect=true" />
>
> <param name="user" value="luis" />
>
> <param name="password" value="luis" />
>
> <param name="schema" value="mysql" />
>
> <param name="schemaObjectPrefix"
>
> value="JACKRABBIT_VERSION_" />
>
> <param name="externalBLOBs" value="false" />
>
> </PersistenceManager>
>
>
>
> </Versioning>
>
>
>
> <Cluster id="node_1">
>
> <Journal
>
>
> class="org.apache.jackrabbit.core.journal.DatabaseJournal">
>
> <param name="revision" value="${rep.home}/revision"
> />
>
> <param name="driver" value="com.mysql.jdbc.Driver"
> />
>
> <param name="url"
>
>
> value="jdbc:mysql://192.168.101.122:3306/repositorytest?useUnicode=true&
> characterEncoding=UTF-8&autoReconnect=true" />
>
> <param name="user" value="luis" />
>
> <param name="password" value="luis" />
>
> <param name="schema" value="mysql" />
>
> <param name="schemaObjectPrefix" value="J_C_" />
>
> </Journal>
>
> </Cluster>
>
> </Repository>
>
>
>
> Best Wishes
>
>
>
> Luis
>
>
>
>
>