簡體   English   中英

如何使用多個核配置Solr復制

[英]How do I configure Solr replication with multiple cores

我有Solr運行多個核心。 由於負載很重,我想設置一個包含完全相同索引的從站。

文檔http://wiki.apache.org/solr/SolrReplication指出“為每個核心添加復制請求處理程序到solrconfig.xml”,但我只有一個solrconfig.xml。

我的配置:
配置:/ data / solr / web / solr / conf / config文件
數據:/ data / solr / data / solr / core data dirs

是否真的有必要為每個核心復制solrconfig.xml?
我應該在哪里放置這些多個solrconfig文件?

solr.xml

<?xml version="1.0" encoding="UTF-8" ?>
  <solr persistent="true">
  <property name="dih.username" value="user"/>
  <property name="dih.password" value="passwd"/>
  <property name="jdbclib" value="/usr/progress/dlc102b/java"/>
  <property name="dih.dburl" value="jdbc:datadirect:openedge://172.20.7.218:31380;databaseName=easource"/> <cores adminPath="/admin/cores">
    <core instanceDir="/data/solr/web/trunk/" name="product" dataDir="/data/solr/data/trunk/product-swap">
      <property name="dih-config" value="dih-config-product.xml"/>
    </core>
    <core instanceDir="/data/solr/web/trunk/" name="product-swap" dataDir="/data/solr/data/trunk/product">
      <property name="dih-config" value="dih-config-product.xml"/>
    </core>
    <core instanceDir="/data/solr/web/trunk/" name="periodp" dataDir="/data/solr/data/trunk/periodp">
      <property name="dih.config" value="dih-config-periodp.xml"/>
    </core>
    <core instanceDir="/data/solr/web/trunk/" name="periodp-swap" dataDir="/data/solr/data/trunk/periodp-swap">
      <property name="dih.config" value="dih-config-periodp.xml"/>
    </core>
  </cores>
</solr>

您需要做的是復制從服務器上的solr實例並在solrconfig.xml上配置復制處理程序。 最佳做法是為每個核心分配一個不同的instanceDir目錄,因為通常每個核心都有自己的schema.xmlsolrconfig.xml 無論如何,您可以使用相同的conf只配置您的solr.xml指向相同的instanceDir但使用不同的dataDir ,您在solrconfig.xml中也將其配置為dataDir

<solr persistent="true" sharedLib="lib">
    <cores adminPath="/admin/cores">
        <core name="core0" instanceDir="core">
            <property name="dataDir" value="/data/core0" />
        </core>
        <core name="core1" instanceDir="core">
            <property name="dataDir" value="/data/core1" />
        </core>
    </cores>
</solr>

如果您當前有多個核心但只有一個solrconfig.xml那么這應該是您的情況。

從屬服務器上的solrconfig.xml復制部分需要包含主服務器的URL,包括核心名稱,當然每個核心的名稱也不同。 但您可以像這樣使用占位符$ {solr.core.name}:

<requestHandler name="/replication" class="solr.ReplicationHandler" >
    <lst name="slave">
        <str name="masterUrl">http://master_host:port/solr/${solr.core.name}/replication</str>
        <str name="pollInterval">00:00:20</str>
    </lst>
</requestHandler>

實際上,像solr.core.name這樣的solr.core.name會自動添加到核心作用域中 ,您可以在配置中引用它們。 因此,如果您沒有任何核心特定設置,則每個核心的復制部分可以相同。

此外,您可以使用以下配置為主服務器和從服務器使用相同的配置,只需根據您要執行的操作更改分配給環境變量enable.masterenable.slave的值(true或false)。 我的意思是你可以使用相同的文件,但當然它將在不同的機器上,因為在同一台機器上擁有主機和從機是沒有多大意義的。

<requestHandler name="/replication" class="solr.ReplicationHandler" >
    <lst name="master">
        <str name="enable">${enable.master:false}</str>
        <str name="replicateAfter">commit</str>
    </lst>
    <lst name="slave">
        <str name="enable">${enable.slave:false}</str>
        <str name="masterUrl">http://master_host:8983/solr/${solr.core.name}/replication</str>
        <str name="pollInterval">00:00:60</str>
    </lst>
</requestHandler>

是的,您需要在要復制的核心的每個副本中具有完全相同的文件副本。

要卸載更多的solr實例,我建議您使用僅用於索引的主服務器和從主服務器復制的2個從服務器,用於查詢您的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM