About Jackrabbit clustering

5 messages Options
Embed this post
Permalink
skyleaf

About Jackrabbit clustering

Reply Threaded More More options
Print post
Permalink
Hi,
I have problems when using the Jackrabbit clustering. Could you help me? Thank you.

This is the repository.xml file in Node1:

<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.5//EN"
                            "http://jackrabbit.apache.org/dtd/repository-1.5.dtd">
<!-- Example Repository Configuration File
     Used by
     - org.apache.jackrabbit.core.config.RepositoryConfigTest.java
     -
-->

<Repository>
    <!--
        virtual file system where the repository stores global state
        (e.g. registered namespaces, custom node types, etc.)
    -->
    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
       
    </FileSystem>

    <!--
        security configuration
    -->
    <Security appName="Jackrabbit">
        <!--
            security manager:
            class: FQN of class implementing the JackrabbitSecurityManager interface
        -->
        <SecurityManager class="org.apache.jackrabbit.core.security.simple.SimpleSecurityManager" workspaceName="security">
            <!--
            workspace access:
            class: FQN of class implementing the WorkspaceAccessManager interface
            -->
            <!-- <WorkspaceAccessManager class="..."/> -->
            <!--  -->
        </SecurityManager>

        <!--
            access manager:
            class: FQN of class implementing the AccessManager interface
        -->
        <AccessManager class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager">
            <!--  -->
        </AccessManager>

        <LoginModule class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule">
           <!--
              anonymous user name ('anonymous' is the default value)
            -->
           
           <!--
              administrator user id (default value if param is missing is 'admin')
            -->
           
        </LoginModule>
    </Security>

    <!--
        location of workspaces root directory and name of default workspace
    -->
    <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
    <!--
        workspace configuration template:
        used to create the initial workspace if there's no workspace yet
    -->
    <Workspace name="${wsp.name}">
        <!--
            virtual file system of the workspace:
            class: FQN of class implementing the FileSystem interface
        -->
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
           
        </FileSystem>
        <!--
            persistence manager of the workspace:
            class: FQN of class implementing the PersistenceManager interface
        <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
         
         
        </PersistenceManager>
        -->
        <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager">
        </PersistenceManager>
        <!--
            Search index and the file system it uses.
            class: FQN of class implementing the QueryHandler interface
        -->
        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
           
           
           
           
        </SearchIndex>
    </Workspace>

    <!--
        Configures the versioning
    -->
    <Versioning rootPath="${rep.home}/version">
        <!--
            Configures the filesystem to use for versioning for the respective
            persistence manager
        -->
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
           
        </FileSystem>

        <!--
            Configures the persistence manager to be used for persisting version state.
            Please note that the current versioning implementation is based on
            a 'normal' persistence manager, but this could change in future
            implementations.
       <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
         
         
        </PersistenceManager>
        -->
        <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager">
        </PersistenceManager>
    </Versioning>

    <!--
        Search index for content that is shared repository wide
        (/jcr:system tree, contains mainly versions)
    -->
    <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
       
       
       
       
    </SearchIndex>
   
   <!--
     <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
       
       
    </DataStore>
   -->
    <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
       
       
    </DataStore>
   
    <Cluster id="node1">
  <Journal class="org.apache.jackrabbit.core.journal.FileJournal">
   
   
  </Journal>
</Cluster>


</Repository>


And this is the repository.xml file in Node2:

<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.5//EN"
                            "http://jackrabbit.apache.org/dtd/repository-1.5.dtd">
<!-- Example Repository Configuration File
     Used by
     - org.apache.jackrabbit.core.config.RepositoryConfigTest.java
     -
-->

<Repository>
    <!--
        virtual file system where the repository stores global state
        (e.g. registered namespaces, custom node types, etc.)
    -->
    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
       
    </FileSystem>

    <!--
        security configuration
    -->
    <Security appName="Jackrabbit">
        <!--
            security manager:
            class: FQN of class implementing the JackrabbitSecurityManager interface
        -->
        <SecurityManager class="org.apache.jackrabbit.core.security.simple.SimpleSecurityManager" workspaceName="security">
            <!--
            workspace access:
            class: FQN of class implementing the WorkspaceAccessManager interface
            -->
            <!-- <WorkspaceAccessManager class="..."/> -->
            <!--  -->
        </SecurityManager>

        <!--
            access manager:
            class: FQN of class implementing the AccessManager interface
        -->
        <AccessManager class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager">
            <!--  -->
        </AccessManager>

        <LoginModule class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule">
           <!--
              anonymous user name ('anonymous' is the default value)
            -->
           
           <!--
              administrator user id (default value if param is missing is 'admin')
            -->
           
        </LoginModule>
    </Security>

    <!--
        location of workspaces root directory and name of default workspace
    -->
    <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
    <!--
        workspace configuration template:
        used to create the initial workspace if there's no workspace yet
    -->
    <Workspace name="${wsp.name}">
        <!--
            virtual file system of the workspace:
            class: FQN of class implementing the FileSystem interface
        -->
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
           
        </FileSystem>
        <!--
            persistence manager of the workspace:
            class: FQN of class implementing the PersistenceManager interface
        <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
         
         
        </PersistenceManager>
        -->
        <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager">
        </PersistenceManager>
        <!--
            Search index and the file system it uses.
            class: FQN of class implementing the QueryHandler interface
        -->
        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
           
           
           
           
        </SearchIndex>
    </Workspace>

    <!--
        Configures the versioning
    -->
    <Versioning rootPath="${rep.home}/version">
        <!--
            Configures the filesystem to use for versioning for the respective
            persistence manager
        -->
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
           
        </FileSystem>

        <!--
            Configures the persistence manager to be used for persisting version state.
            Please note that the current versioning implementation is based on
            a 'normal' persistence manager, but this could change in future
            implementations.
       <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
         
         
        </PersistenceManager>
        -->
        <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager">
        </PersistenceManager>
    </Versioning>

    <!--
        Search index for content that is shared repository wide
        (/jcr:system tree, contains mainly versions)
    -->
    <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
       
       
       
       
    </SearchIndex>
   
   <!--
     <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
       
       
    </DataStore>
   -->
    <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
       
       
    </DataStore>
   
    <Cluster id="node1">
  <Journal class="org.apache.jackrabbit.core.journal.FileJournal">
   
   
  </Journal>
</Cluster>


</Repository>

"/home/hadoop/workspace/JackrabbitTest/clustering/datastore" and "/home/hadoop/workspace/JackrabbitTest/clustering/myjournal" are two nfs directories in Node1

Are there any problems above?

When I run Jackrabbit, there are three lines of log info:

INFO cluster.ClusterNode: not started: namespace operation ignored.
INFO cluster.ClusterNode: not started: namespace operation ignored.
INFO cluster.ClusterNode: not started: namespace operation ignored.

Is that means the cluster is not built?
What can I do?

Thank you for your advice.
Alexander Klimetschek

Re: About Jackrabbit clustering

Reply Threaded More More options
Print post
Permalink
On Fri, Jul 3, 2009 at 7:50 AM, skyleaf<[hidden email]> wrote:
>        <PersistenceManager
> class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager">
>        </PersistenceManager>

> When I run Jackrabbit, there are three lines of log info:
>
> INFO cluster.ClusterNode: not started: namespace operation ignored.
> INFO cluster.ClusterNode: not started: namespace operation ignored.
> INFO cluster.ClusterNode: not started: namespace operation ignored.

Not sure how these messages build up, but note that you need a
persistence manager that allows for clustering. The
BundleFsPersistenceManager is not one of them. You need a central
database that allows concurrent access from the various nodes. See [1]
for more info. Also note that you might need to change your
workspace.xml files as well (or simply drop the workspaces directory
if you start from scratch) [2].

[1] http://wiki.apache.org/jackrabbit/Clustering
[2] http://jackrabbit.apache.org/jackrabbit-configuration.html

Regards,
Alex

--
Alexander Klimetschek
[hidden email]
Juan Pereyra

Re: About Jackrabbit clustering

Reply Threaded More More options
Print post
Permalink
Hi Alex,

So, one should also store binaries in the database? This would almost force us to use a high end database such as Oracle, wouldn't it?

A few days ago I asked a similar question and got an answer from Shaun Barriball, who kindly answered that he has been using a DB/FS setup, in cluster, for 2 years without any issues.

I'd really like to have my binaries on NFS and metadata on DB, in cluster, if possible or unless you think it's better otherwise.

Thanks!
Juan

----- Original Message -----
From: "Alexander Klimetschek" <[hidden email]>
To: [hidden email]
Sent: Friday, July 3, 2009 8:16:37 AM GMT -03:00 Argentina
Subject: Re: About Jackrabbit clustering

On Fri, Jul 3, 2009 at 7:50 AM, skyleaf<[hidden email]> wrote:
>        <PersistenceManager
> class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager">
>        </PersistenceManager>

> When I run Jackrabbit, there are three lines of log info:
>
> INFO cluster.ClusterNode: not started: namespace operation ignored.
> INFO cluster.ClusterNode: not started: namespace operation ignored.
> INFO cluster.ClusterNode: not started: namespace operation ignored.

Not sure how these messages build up, but note that you need a
persistence manager that allows for clustering. The
BundleFsPersistenceManager is not one of them. You need a central
database that allows concurrent access from the various nodes. See [1]
for more info. Also note that you might need to change your
workspace.xml files as well (or simply drop the workspaces directory
if you start from scratch) [2].

[1] http://wiki.apache.org/jackrabbit/Clustering
[2] http://jackrabbit.apache.org/jackrabbit-configuration.html

Regards,
Alex

--
Alexander Klimetschek
[hidden email]
Alexander Klimetschek

Re: About Jackrabbit clustering

Reply Threaded More More options
Print post
Permalink
On Fri, Jul 3, 2009 at 3:10 PM, Juan Pereyra<[hidden email]> wrote:
> Hi Alex,
>
> So, one should also store binaries in the database? This would almost force us to use a high end database such as Oracle, wouldn't it?

Using the datastore for binaries works with clustering, since the
items are stored by a unqiue md5 hash of their content. Thus all
clusters can point to the same datastore, eg. a FileDataStore on a
NFS.

See http://wiki.apache.org/jackrabbit/DataStore

I also updated http://wiki.apache.org/jackrabbit/Clustering to include
the DataStore.

Regards,
Alex

--
Alexander Klimetschek
[hidden email]
Juan Pereyra

Re: About Jackrabbit clustering

Reply Threaded More More options
Print post
Permalink
It's much clearer now, at least to me.

Thanks Alex!

Juan

----- Original Message -----
From: "Alexander Klimetschek" <[hidden email]>
To: [hidden email]
Sent: Friday, July 3, 2009 1:50:27 PM GMT -03:00 Argentina
Subject: Re: About Jackrabbit clustering

On Fri, Jul 3, 2009 at 3:10 PM, Juan Pereyra<[hidden email]> wrote:
> Hi Alex,
>
> So, one should also store binaries in the database? This would almost force us to use a high end database such as Oracle, wouldn't it?

Using the datastore for binaries works with clustering, since the
items are stored by a unqiue md5 hash of their content. Thus all
clusters can point to the same datastore, eg. a FileDataStore on a
NFS.

See http://wiki.apache.org/jackrabbit/DataStore

I also updated http://wiki.apache.org/jackrabbit/Clustering to include
the DataStore.

Regards,
Alex

--
Alexander Klimetschek
[hidden email]