摘要: 如今,为了提高Solr的搜索速度,使其具有很好的容灾能力,往往会配置SolrCloud,但在Solr4之前,还有一种很流行的方式,Master-Slave模式,为什么要提及这种方式,因为我们公司目前用的就是这种方式。
引入Master-Slave
Solr在查询的时候,特别忌讳进行写操作,因为它是IO阻塞型的。现在的流行的Elasticsearch就对此有很好的改进。在引入Master-Slave以后,将读写分配到不同的服务器上,你可以使用master
来做索引,然后使用slaves
来做查询。
配置Master-Slave
1.在多台服务器上分别搭建好可以独立运行的Solr,参见这里。
2.指定其中的一台为Master,只需要在SolrConifg.xml
中配置:
<requestHandler name=“/replication” class=“solr.ReplicationHandler” >
<lst name=“master”>
<!– 执行commit操作后进行replicate操作同样的设置’startup’, ‘commit’, ‘optimize–>
<str name=“replicateAfter”>commit</str>
<!– 执行startup操作后进行replicate操作–>
<str name=“replicateAfter”>startup</str>
<!– 复制索引时也同步以下配置文件–>
<str name=“confFiles”>schema.xml,stopwords.txt</str>
<!– 验证信息, 由用户自定义用户名–>
<str name=“httpBasicAuthUser”>root</str>
<!– 验证信息, 由用户自定义密码–>
<str name=“httpBasicAuthPassword”>root123</str>
</lst>
</requestHandler>
3.指定其他多有的服务为Slave,只需要分别配置:
<requestHandler name=“/replication” class=“solr.ReplicationHandler” >
<lst name=“slave”>
<!– 主服务器的URL, 对于多核同步配置,一一对应即可–>
<str name=“masterUrl”>http://127.0.0.1:8080/solr/core0</str>
<!– 60秒进行一次同步操作–>
<str name=“pollInterval”>00:00:60</str>
<!– 压缩机制,来传输索引, 可选internal|external, internal内网, external外网–>
<str name=“compression”>internal</str>
<!– 设置超时时间–>
<str name=“httpConnTimeout”>50000</str>
<str name=“httpReadTimeout”>500000</str>
<!– 验证信息, 要与master服务器匹配–>
<str name=“httpBasicAuthUser”>root</str>
<str name=“httpBasicAuthPassword”>root123</str>
</lst>
</requestHandler>
4.重启所有的master-slave服务即可。