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&amp;
characterEncoding=UTF-8&amp;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&amp;
characterEncoding=UTF-8&amp;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&amp;
characterEncoding=UTF-8&amp;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&amp;
characterEncoding=UTF-8&amp;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&amp;
characterEncoding=UTF-8&amp;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&amp;
characterEncoding=UTF-8&amp;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&amp;
> characterEncoding=UTF-8&amp;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&amp;
> characterEncoding=UTF-8&amp;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&amp;
> characterEncoding=UTF-8&amp;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&amp;
> characterEncoding=UTF-8&amp;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&amp;
> characterEncoding=UTF-8&amp;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&amp;
> characterEncoding=UTF-8&amp;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
>
>  
>
>
>