我正在使用jackrabbit 2.18.0,我想在我的本地,稍后在AWS上进行集群设置。
现在,我可以使用以下配置的一个节点运行它:
<?xml version="1.0"?>
<Repository>
<!-- Enable bellow config for mysqldatastore-->
<DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url" value="jdbc:mysql://127.0.0.1:3306/jackrabbit" />
<param name="user" value="root" />
<param name="password" value="" />
<param name="databaseType" value="mysql"/>
<param name="schemaObjectPrefix" value="J_R_DS_"/>
</DataStore>
<!-- Enable bellow config for filedatastore-->
<!--DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
<param name="path" value="${rep.home}/repository/datastore"/>
<param name="minRecordLength" value="100"/>
</DataStore-->
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/repository" />
</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}/workspaces" defaultWorkspace="jcrlocal" />
<Workspace name="${wsp.name}">
<PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager">
<param name="driver" value="com.mysql.jdbc.Driver" />
<param name="url" value="jdbc:mysql://127.0.0.1:3306/jackrabbit" />
<param name="user" value="root" />
<param name="password" value="" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix" value="J_PM_${wsp.name}_" />
<param name="externalBLOBs" value="false" />
</PersistenceManager>
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/version" />
</FileSystem>
</Workspace>
<Versioning rootPath="${rep.home}/version">
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/version" />
</FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager">
<param name="driver" value="com.mysql.jdbc.Driver" />
<param name="url" value="jdbc:mysql://127.0.0.1:3306/jackrabbit" />
<param name="user" value="root" />
<param name="password" value="" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix" value="J_V_PM_" />
<param name="externalBLOBs" value="false" />
</PersistenceManager>
</Versioning>
<Cluster id="node1" syncDelay="5">
<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://127.0.0.1:3306/jackrabbit"/>
<param name="user" value="root"/>
<param name="password" value=""/>
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_C_"/>
</Journal>
</Cluster>
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${rep.home}/index"/>
<!-- SearchIndex will get the indexing configuration from the classpath, if not found in the workspace home -->
<param name="indexingConfiguration" value="/Users/tuhinsubhramandal/jack-repo/indexing_configuration.xml"/>
<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="maxFieldLength" value="10000"/>
<param name="bufferSize" value="10"/>
<param name="cacheSize" value="1000"/>
<param name="forceConsistencyCheck" value="false"/>
<param name="autoRepair" value="true"/>
<param name="queryClass" value="org.apache.jackrabbit.core.query.QueryImpl"/>
<param name="respectDocumentOrder" value="true"/>
<param name="resultFetchSize" value="100"/>
<param name="extractorPoolSize" value="3"/>
<param name="extractorTimeout" value="100"/>
<param name="extractorBackLogSize" value="100"/>
<!-- needed to highlight the searched term -->
<param name="supportHighlighting" value="true"/>
<!-- custom provider for getting an HTML excerpt in a query result with rep:excerpt() -->
<param name="excerptProviderClass" value="org.apache.jackrabbit.core.query.lucene.DefaultXMLExcerpt"/>
</SearchIndex>
</Repository>
====================
现在这是我的问题。我正在使用tomcat9,我对webapps进行了adde jackrabbit war并使其正常工作。
为了使用3个节点来创建集群,我是否必须拥有3个不同的tomcats和3个repositiory.xml,其中不同的Clusterids指向同一个数据源?
为了使用3个节点来创建集群,我是否必须拥有3个不同的tomcats和3个repositiory.xml,其中不同的Clusterids指向同一个数据源?
通常是的,使用相同的数据源使用自己的repository.xml
和集群ID(集群部分)设置N个节点将起作用。
请记住,为了使用群集,必须满足以下要求。
引自official docs(要求部分):
- 每个群集节点都必须具有自己的存储库配置。
- 如果使用DataStore,则必须始终在节点之间共享。
- 必须共享存储库级别的全局FileSystem(仅与数据存储位于同一级别的文件系统;仅在repository.xml文件中)。
- 每个群集节点都需要其自己的(私有)工作空间级别和版本FileSystem(仅限工作空间和版本控制配置中的那些; repository.xml和workspace.xml文件中的那些)。
- 每个群集节点都需要自己的(私有)搜索索引。
- 必须为每个群集节点分配唯一的ID。
- 必须根据文件或存储在数据库中选择日记帐类型。
- 每个群集节点必须使用相同(共享)日志。
- 持久性管理器必须将其数据存储在同一个全局可访问的位置。