如何配置多核Solr的复制(How do I configure Solr replication

2019-08-01 21:51发布

我有Solr的多个内核上运行。 由于重载的,我要建立一个包含完全相同的索引的奴隶。

文档http://wiki.apache.org/solr/SolrReplication指出,“添加复制请求处理程序solrconfig.xml中每个核心”,但我只有一个solrconfig.xml中。

我的配置:
配置:/数据/ Solr的/ WEB / Solr的/ conf目录/配置文件
数据:/数据/ solr的/数据/ solr的/核心数据显示目录

是不是真的有必要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>

Answer 1:

你需要做的就是复制,你必须从服务器上Solr的实例,并配置复制处理器上的solrconfig.xml 。 这是最好的做法有不同的instanceDir每个核心目录,因为一般每核心拥有自己schema.xmlsolrconfig.xml 。 反正你可以使用相同的conf只是在配置solr.xml指向同一instanceDir但不同dataDir ,您配置为dataDirsolrconfig.xml还有:

<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的从站的复制部分需要包含主的网址,包括核心名称,这当然是对每个芯不同。 但是你可以使用占位符$ {} 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被自动添加到核心范围 ,你可以参考他们在您的配置。 其结果是,复制部分可以是相同的,每核心,如果你不具备任何核心特定设置。

此外,您还可以使用相同的配置为主机和从机具有以下配置,只是改变分配给环境变量的值(true或false) enable.masterenable.slave根据你想要做什么。 我的意思是,你可以使用相同的文件,当然,这将是在不同的机器,因为它不会使很多意义有主机和从机在同一台机器上。

<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>


Answer 2:

是的,你需要有文件完全相同的副本,你复制的核心的每个副本。

要卸载更为您Solr的情况下,我建议你只用于索引和2从站,主复制,用来查询您的文档中使用的高手。



文章来源: How do I configure Solr replication with multiple cores