#jackrabbit
#jackrabbit
Вопрос:
Я использую 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, где я добавил jackrabbit war в webapps и заставил его работать.
Для того, чтобы создать кластер, скажем, с 3 узлами, должен ли я иметь 3 разных кота с 3 наборами repositiory.xml с разными идентификаторами кластеров, указывающими на один и тот же источник данных?
Ответ №1:
Для того, чтобы создать кластер, скажем, с 3 узлами, должен ли я иметь 3 разных кота с 3 наборами repositiory.xml с разными идентификаторами кластеров, указывающими на один и тот же источник данных?
В общем, да, настройка N узлов с их собственным repository.xml
идентификатором кластера (раздел кластера) с использованием одного и того же источника данных будет работать.
Имейте в виду, что для использования кластеризации должны выполняться следующие требования.
Цитирую из официальных документов (раздел требований):
- Каждый узел кластера должен иметь свою собственную конфигурацию хранилища.
- Хранилище данных всегда должно быть общим для узлов, если оно используется.
- Глобальная файловая система на уровне хранилища должна быть общей (только та, которая находится на том же уровне, что и хранилище данных; только в repository.xml файл).
- Каждому узлу кластера требуется свой собственный (частный) уровень рабочей области и файловая система версий (только те, которые находятся в рабочей области и конфигурации управления версиями; те, которые в repository.xml и workspace.xml файл).
- Каждому узлу кластера нужны свои собственные (частные) поисковые индексы.
- Каждому узлу кластера должен быть присвоен уникальный идентификатор.
- Необходимо выбрать тип журнала, либо основанный на файлах, либо сохраненный в базе данных.
- Каждый узел кластера должен использовать один и тот же (общий) журнал.
- Менеджеры сохраняемости должны хранить свои данные в одном и том же месте, доступном по всему миру.