既然solr是解决大量数据全文索引的方案,因为高并发的问题,我们就要考虑solr的负载均衡了,solr提供很easy的主从复制的配置方法,那么以下我们就来配置一下solr的主从复制
如果我们在192.168.0.8与192.168.0.9两台server上部署了solr服务,192.168.0.8作为主server,192.168.0.9作为从server,
首先配置主server找到C:\Program Files\Apache Software Foundation\Tomcat 7.0\solr\collection1\conf(solr核心collection1安装路径)下的solrconfig.xml 文件
在该文件下找到<requestHandler name="/replication" class="solr.ReplicationHandler" >节点,默认是凝视的,改为:
<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>
參数含义:
- replicateAfter : SOLR会自行在下面操作行为发生后运行复制: 'commit', 'startup' 'optimize',这里我们选择commit , 即SOLR每一次接受到commit请求后,会运行复制策略。
- confFiles : 待分发的配置文件。solr 也会将主server上的字段配置文件:schema.xml和stopwords.txt,固排文件: elevate.xml同步到辅server上。
- commitReserveDuration: 每次commit之后。保留增量索引的周期时间,这里设置为5分钟。
接下来配置从server
还是同一个文件下的那个节点
<requestHandler name="/replication" class="solr.ReplicationHandler" > <lst name="slave"> <!-- masterUrl代表主机的solr路径。假设存在多个core时,地址写http://localhost:9001/solr/(core名) 就可以 --> <str name="masterUrl">http://192.168.0.8/solr/collection1</str> <!-- 同步时间间隔10秒一次 --> <str name="pollInterval">00:00:10</str> </lst> </requestHandler>
參数说明:
- masterUrl : 主server同步URL地址
- pollInterval:从server同步间隔,即每隔多长时间同步一次主server
- httpConnTimeout:设置连接超时(单位:毫秒)
- httpReadTimeout:假设设置同步索引文件过大,则应适当提高此值。(单位:毫秒)
- httpBasicAuthUser:验证username。须要和主server一致
- httpBasicAuthPassword:验证password。需和主server一致
- compression:external or internal 使用SOLR自己的压缩算法或应用容器的
最后别忘了重新启动两台solrserver,这种配置完毕,solr支持多个从server
版权声明:本文博客原创文章。博客,未经同意,不得转载。