solrcloud的分布式集群方案

分布式环境下,由于高并发的问题,通常我们需要部署多台服务器来负载均衡,从而避免,单点访问的热点问题,或者因负载过高而造成服务器瘫痪的问题等等。

solr4.x之后推出了solrcloud的分布式集群方案,与4.x之前的Master/Slave集群模式,架构上发生了重大变化,solrcloud不仅仅解决了,高并发的负载均衡问题,也解决了海量数据的检索性能问题,对一份巨大的索引,采用分而治之的方法索引到多个独立的节点上,但是这样并不代表,4.x之前的Master/Slave架构就被淘汰出局了,其实solrcloud里面也是综合运用了主从的方式,来解决并发的问题。

如果数据量不是很大的情况下,没必要采用solrcloud方案,但这时候,又需要解决高并发问题,或者服务器单点故障问题怎么办? 
答案还是采取经典的主从架构模式来解决,下面散仙来看下,在solr里面,具体的配置

第一,是在Master里面的配置如下:


Xml代码 复制代码  收藏代码
  1.  <requestHandler name="/replication" class="solr.ReplicationHandler" >  
  2.  <lst name="master">  
  3.    <!-- master上有数据写入时,触发commit操作,slave就会发起一次同步请求-->  
  4.    <str name="replicateAfter">commit</str>  
  5.    <!-- startup参数不影响同步请求-->  
  6. <str name="replicateAfter">startup</str>  
  7. <!-- master触发optimize操作,slave就会发起一次同步请求-->  
  8.    <str name="replicateAfter">optimize</str>  
  9. <!-- 除了索引同步外,一些配置文件的同步,默认是在conf目录下 -->  
  10.    <str name="confFiles">schema.xml,mapping-ISOLatin1Accent.txt,protwords.txt,stopwords.txt,synonyms.txt,elevate.xml</str>  
  11.  </lst>  
  12.   
  13. </requestHandler>  
  <requestHandler name="/replication" class="solr.ReplicationHandler" >
  <lst name="master">
    <!-- master上有数据写入时,触发commit操作,slave就会发起一次同步请求-->
    <str name="replicateAfter">commit</str>
    <!-- startup参数不影响同步请求-->
	<str name="replicateAfter">startup</str>
	<!-- master触发optimize操作,slave就会发起一次同步请求-->
    <str name="replicateAfter">optimize</str>
	<!-- 除了索引同步外,一些配置文件的同步,默认是在conf目录下 -->
    <str name="confFiles">schema.xml,mapping-ISOLatin1Accent.txt,protwords.txt,stopwords.txt,synonyms.txt,elevate.xml</str>
  </lst>

 </requestHandler>



第二,各个Slave上的配置如下:

Xml代码 复制代码  收藏代码
  1. <requestHandler name="/replication" class="solr.ReplicationHandler" >   
  2.      
  3.        <lst name="slave">  
  4.          <!-- masterUrl代表主机的solr路径,如果存在多个core时,地址写http://localhost:9001/solr/(core名)  即可 -->  
  5.          <str name="masterUrl">http://localhost:9001/solr</str>  
  6.          <!-- 同步时间间隔10秒一次 -->  
  7.          <str name="pollInterval">00:00:10</str>  
  8.        </lst>  
  9.        
  10.   </requestHandler>  
<requestHandler name="/replication" class="solr.ReplicationHandler" > 
   
       <lst name="slave">
	     <!-- masterUrl代表主机的solr路径,如果存在多个core时,地址写http://localhost:9001/solr/(core名)  即可 -->
         <str name="masterUrl">http://localhost:9001/solr</str>
		 <!-- 同步时间间隔10秒一次 -->
         <str name="pollInterval">00:00:10</str>
       </lst>
     
  </requestHandler>


配置好之后,我们就可以测试了,分别启动Master和Slave,改变Master上的一些配置文件,比如说,同义词,禁用词文件什么的,然后触发Master节点的commit或optimize操作,这时我们就可以查看Slave节点上对应的文件的变化了。

猜你喜欢

转载自weitao1026.iteye.com/blog/2266933
今日推荐