Solr的主从模式Master-Slave

在做Solr索引的时候,频繁读取数据文件,造成了Linux很大的物理内存分配给了cache, 即使已经设置了NIO模式.况且查询的时候压力也很大, 尤其是facet用shards进行多核查询统计时占用的内存极高. 而且为了避免读写的并发冲突问题可考虑利用主从Master/Slave进行同步操作, 使得读写操作分到不同的服务器上. 关于Solr的Replication机制是这么解释的:
The SolrReplicationHandler supports replicating indexes from a “master” used for indexing and “slaves” used for queries.
http://wiki.apache.org/solr/SolrReplication
It is also neccessary for SolrCloud to function (in Cloud mode, the replication handler is used to bulk transfer segments when nodes are added or need to recover).
https://wiki.apache.org/solr/SolrCloud/
主从模式设置比较简单,目前我使用的版本为Solr4.2. 只需要配置一个文件SolrConfig.xml文件.
master服务器的配置:

  1. <requestHandler name=“/replication” class=“solr.ReplicationHandler” >    
  2.      <lst name=“master”>  
  3.        <!– 执行commit操作后进行replicate操作同样的设置’startup’, ‘commit’, ‘optimize–>  
  4.        <str name=“replicateAfter”>commit</str>  
  5.        <!– 执行startup操作后进行replicate操作–>  
  6.        <str name=“replicateAfter”>startup</str>  
  7.        <!– 复制索引时也同步以下配置文件–>  
  8.        <str name=“confFiles”>schema.xml,stopwords.txt</str>    
  9.        <!– 验证信息, 由用户自定义用户名–>  
  10.        <str name=“httpBasicAuthUser”>jacoxu</str>  
  11.        <!– 验证信息, 由用户自定义密码–>  
  12.        <str name=“httpBasicAuthPassword”>123</str>  
  13.      </lst>  
  14. </requestHandler>  

slave服务器的配置:

  1. <requestHandler name=“/replication” class=“solr.ReplicationHandler” >    
  2.      <lst name=“slave”>  
  3.         <!– 主服务器的URL, 对于多核同步配置,一一对应即可–>  
  4.        <str name=“masterUrl”>http://127.0.0.1:8080/solr/core0</str>  
  5.        <!– 60秒进行一次同步操作–>  
  6.        <str name=“pollInterval”>00:00:60</str>  
  7.        <!– 压缩机制,来传输索引, 可选internal|external, internal内网, external外网–>  
  8.        <str name=“compression”>internal</str>  
  9.        <!– 设置超时时间–>  
  10.        <str name=“httpConnTimeout”>50000</str>     
  11.        <str name=“httpReadTimeout”>500000</str>     
  12.        <!– 验证信息, 要与master服务器匹配–>  
  13.        <str name=“httpBasicAuthUser”>jacoxu</str>     
  14.        <str name=“httpBasicAuthPassword”>123</str>     
  15.      </lst>  
  16. </requestHandler>  

简单来说,复制操作就是通过检测机制发现master服务器上有新的索引时即复制到slave服务器上, 并以时间精确到秒为文件夹名后缀index201307182307进行复制,待复制完之后,删除原来索引的文件夹并切换文件夹名index. 经测试, 对于小数据来说同步效果很好,但是大数据来说资源消耗也很厉害, http://blog.csdn.net/thundersssss/article/details/5385699 这篇博文中提到采用external的压缩机制可以降低一些资源消耗. 待以后参考. 不过也有文章写到external机制遇到bug http://san-yun.iteye.com/blog/1498042 导致索引文件损坏

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>