solr分布式配置之索引复制(原创)
solr的索引复制:将索引从主服务器上复制到多个服务器上.
索引复制原因:当有很多个客户并发访问某Solr服务器,这可能会导致Solr服务器崩溃(Solr服务器性能达不到这些客户并发访问的需求),这时就需要通过solr索引复制来减少对服务器的性能要求。
下面介绍一下主从服务器的最简单配置(如下配置在项目中已经通过验证):
我的环境:solr master(10.148.73.83), solr slave(10.148.74.72), jdk 1.6.0_13, master(apache-tomcat-6.0.28), slave(apache-tomcat-6.0.29), apache-solr-3.6.0
先将solr与tomcat进行整合,可以参考solr3.6与tomcat的整合
配置主服务器solr Master(10.148.73.83), 在solrconfig.xml中增加以下内容
<requestHandler name="/replication" > <lst name="master"> <str name="replicateAfter">commit</str> <str name="replicateAfter">optimize</str><str name="backupAfter">optimize</str><int name="numberToKeep">2</int><str name="confFiles">schema.xml,stopwords.txt,elevate.xml</str> <str name="commitReserveDuration">00:00:30</str> <str name="httpBasicAuthUser">admin</str> <str name="httpBasicAuthPassword">admin</str></lst> </requestHandler>
replicateAfter : SOLR会自行在以下操作行为发生后执行复制: 'commit', 'startup', 'optimize',该值可以填多个
backupAfter:SOLR会自行在以下操作行为发生后执行备份索引: 'commit', 'startup', 'optimize',该值可以填多个
numberToKeep:指定备份多少份文件,默认值为 MAX_VALUE
confFiles : 待分发的配置文件,solr 也会将主服务器上的字段配置文件:schema.xml和stopwords.txt,固排文件: elevate.xml同步到辅服务器上。
commitReserveDuration: 每次commit之后,保留增量索引的周期时间,这里设置为30秒。
配置从服务器solr slave(10.148.74.72), 在solrconfig.xml中增加以下内容
<requestHandler name="/replication" > <lst name="slave"> <str name="masterUrl">http://10.148.73.83:8080/solr/replication</str> <str name="pollInterval">00:00:30</str> <!-- 以下参数不常用,非必填参数--> <str name="compression">internal</str> <str name="httpConnTimeout">100000</str> <str name="httpReadTimeout">1000000</str> <str name="httpBasicAuthUser">admin</str> <str name="httpBasicAuthPassword">admin</str> </lst> </requestHandler>
masterUrl : 主索引的url,该从索引将从这个主索引地址同步索引
pollInterval:从服务器同步间隔,即每隔多长时间同步一次主服务器,格式为HH:mm:ss . 如果该设置为空从索引将不会主动从主索引同步索引.另外拉取索引的请求也可以通过 admin 页面或者 http api 来触发
compression:在索引传输过程中使用压缩,可选的值有两个 internal 和 external
如果值是 'external' 请确保主索引的solr已经设置了accept-encoding header
如果值是 'internal' 索引数据将被自动压缩,这个主要在低带宽情况下使用,局域网中请不要使用,局域网中使用会降低复制效率
httpConnTimeout:设置连接超时(单位:毫秒)
httpReadTimeout:设置读取超时,如果设置同步索引文件过大,则应适当提高此值。(单位:毫秒)
httpBasicAuthUser:验证用户名,需要和主服务器一致
httpBasicAuthPassword:验证密码,需和主服务器一致
注:从服务器可以有多个,多个从服务器的配置相同
至此solr的索引复制的配置工作就完成了。现在可以启动两个服务器,通过http://10.148.73.83:8080/solr/admin/replication/查看到主服务器的复制页面的控制页面
通过http://10.148.74.72:8080/solr/admin/replication/查看到从服务器的复制页面的控制页面