solr学习第四课------solr主从配置索引的主从复制
2013-11-19 12:20
471 查看
主题:Solr中索引的主从复制,采用Master/Slave结构
solr的主从复制可以实现像Mysql复制那样,一个服务器负责写服务,其余多个服务器负责读服务,这样可以避免索引并发读写对索引性能的影响,再一个可以构建大规模的搜索系统,用多个服器来分担系统的读服务。Slave的复制是通过http协议访问Master完成的,就像用浏览器访问一个web页面一样。
要实现复制功能,需要一个写索引的服务器和读索引的服务器,分别为Write_A,Read_B
第一步:测试环境
服务器1(Master)
操作系统: Linux5.2
IP: 192.168.204.135:9081
JDK: Sun JDK 1.6
Web服务器: Apache Tomcat6
Solr版本: Solr3.6.2
服务器2(Slave)
操作系统: Linux5.2
IP: 192.168.204.135:9080
JDK: Sun JDK 1.6
Web服务器: Apache Tomcat6
Solr版本: Solr4.4.0,这里建议使用和Master相同的版本,否则会出现莫名的错误。
第二步: 准备工作
在2台服务器上建立如下目录
/home/admin/solr/solr4server
/home/admin/solr/solr4home
/home/admin/solr/solr3server
/home/admin/solr/solr3home
/home/admin/solr/solr3server_slave
/home/admin/solr/solr3home_slave
第三步:配置solr (windows) 并配中文分词 IKAnalyzer
1. 修改主(采用solr3.6.2版本):solrconfig.xml文件(目前设置的同步周期为一分钟,具体可视生产环境的具体环境而定。)
在Master的配置文件中添加一个RequestHandler,RequestHandler是复制在Master端的主要手段,Slave会定期向这个RequestHandler发送请求,并完成索引文件的同步;
Master负责写数据(Write_A)到从服务器中;
replicateAfter说明什么时候进行复制,取值可以是startup, commit, optimize分别是创建索引、提交索引、优化索引之后。每当这些动作执行结束后,Slave就可以从Master上进行复制了;
Write_A 作为Master,solrconfig.xml 找到<requestHandler name="/replication" ,配置如下
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="master">
<!-- 当有新的索引被提交,标记新的索引和保存新索引的文件名 -->
<str name="replicateAfter">commit</str>
<!-- 当系统启动时,标记新的索引和保存新索引的文件名 -->
<str name="replicateAfter">startup</str>
<!-- 当索引优化时,标记新的索引和保存新索引的文件名,因为 commit,optimize 基本上是同时存在的,所以一般不用设置 optimize-->
<!-- <str name="replicateAfter">optimize</str>-->
<!-- 索引优化后创建一份备份索引,这个在复制过程中不需要设置 -->
<!--<str name="backupAfter">optimize</str>-->
<!-- 索引复制时,也同步从服务器的配置文件 solrconfig_slave.xml:solrconfig.xml 表示复制时,在slave端以solrconfig.xml进行保存,这样slave才能认识这个文件-->
<str name="confFiles">solrconfig_slave.xml:solrconfig.xml,schema.xml,stopwords.txt,elevate.xml</str>
<!-- 设置验证信息 -->
<str name="httpBasicAuthUser">admin</str>
<str name="httpBasicAuthPassword">123456</str>
</lst>
</requestHandler>
2. 从solr 文件(采用solr4.4.0版本)
Slave负责读数据(Read_B)到从服务器内容。
属性值是一个url,指向了Master服务器上的提供复制功能的requestHandler,
master_host:master服务器的IP或主机名
port:master服务器上部署solr应用的tomcat端口
solr:solr的web应用名称
corename: solr中的core,关于core的概念请参考相关文档。由于本案例中不涉及多个core,所以此处的url中可以去掉这项,也不对core进行过多的说明。
replaction: Master上提供复制的requestHandler名称,也就是requestHandler的name属性的取值。
<str name="pollInterval">00:00:20</str>是Slave定期检测Master的时间,格式是HH:mm:ss。这里配置的时间是20秒,因此Slave每个20秒会主动请求一次Master服务器,获得Master服务器上索引文件的状态,比如最后修改时间,文件尺寸等,如果与本机的索引文件不同就进行复制,实现同步。
Read_B 作为Slave,solrconfig.xml 找到<requestHandler name="/replication" ,配置如下:
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="slave">
<!-- 主服务器的URL,core_1是配置了多核,如果不是多核,连接应该是 http://www.abc.com/solr/replication -->
<!-- <str name="masterUrl">http://www.abc.com/solr/core_1/replication</str> -->
<str name="masterUrl">http://192.168.204.135:9081/solr/replication</str>
<!-- 1分钟同步一次 -->
<str name="pollInterval">00:00:60</str>
<!-- 压缩机制,来传输索引,可选 internal|external,internal表示内网,external表示外网 -->
<str name="compression">internal</str>
<!-- 设置超时时间 -->
<str name="httpConnTimeout">5000</str>
<str name="httpReadTimeout">10000</str>
<!-- 设置验证信息,要和master 服务器配置一样 -->
<str name="httpBasicAuthUser">admin</str>
<str name="httpBasicAuthPassword">123456</str>
</lst>
</requestHandler>
3.复制的简单原理
master 有新索引时会保存索引文件名列表并已时间排序和标记上次复制时文件的位置,那么再次复制时就从这个位置之后进行复制。(不是太明白,想当然这么理解,如有谁比较熟悉,请留言,不胜感激)
4. 参考URL http://wiki.apache.org/solr/SolrReplication http://qnalist.com/questions/562975/replication-problem-from-solr-3-6-to-solr-4-0
solr的主从复制可以实现像Mysql复制那样,一个服务器负责写服务,其余多个服务器负责读服务,这样可以避免索引并发读写对索引性能的影响,再一个可以构建大规模的搜索系统,用多个服器来分担系统的读服务。Slave的复制是通过http协议访问Master完成的,就像用浏览器访问一个web页面一样。
要实现复制功能,需要一个写索引的服务器和读索引的服务器,分别为Write_A,Read_B
第一步:测试环境
服务器1(Master)
操作系统: Linux5.2
IP: 192.168.204.135:9081
JDK: Sun JDK 1.6
Web服务器: Apache Tomcat6
Solr版本: Solr3.6.2
服务器2(Slave)
操作系统: Linux5.2
IP: 192.168.204.135:9080
JDK: Sun JDK 1.6
Web服务器: Apache Tomcat6
Solr版本: Solr4.4.0,这里建议使用和Master相同的版本,否则会出现莫名的错误。
第二步: 准备工作
在2台服务器上建立如下目录
/home/admin/solr/solr4server
/home/admin/solr/solr4home
/home/admin/solr/solr3server
/home/admin/solr/solr3home
/home/admin/solr/solr3server_slave
/home/admin/solr/solr3home_slave
第三步:配置solr (windows) 并配中文分词 IKAnalyzer
1. 修改主(采用solr3.6.2版本):solrconfig.xml文件(目前设置的同步周期为一分钟,具体可视生产环境的具体环境而定。)
在Master的配置文件中添加一个RequestHandler,RequestHandler是复制在Master端的主要手段,Slave会定期向这个RequestHandler发送请求,并完成索引文件的同步;
Master负责写数据(Write_A)到从服务器中;
replicateAfter说明什么时候进行复制,取值可以是startup, commit, optimize分别是创建索引、提交索引、优化索引之后。每当这些动作执行结束后,Slave就可以从Master上进行复制了;
Write_A 作为Master,solrconfig.xml 找到<requestHandler name="/replication" ,配置如下
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="master">
<!-- 当有新的索引被提交,标记新的索引和保存新索引的文件名 -->
<str name="replicateAfter">commit</str>
<!-- 当系统启动时,标记新的索引和保存新索引的文件名 -->
<str name="replicateAfter">startup</str>
<!-- 当索引优化时,标记新的索引和保存新索引的文件名,因为 commit,optimize 基本上是同时存在的,所以一般不用设置 optimize-->
<!-- <str name="replicateAfter">optimize</str>-->
<!-- 索引优化后创建一份备份索引,这个在复制过程中不需要设置 -->
<!--<str name="backupAfter">optimize</str>-->
<!-- 索引复制时,也同步从服务器的配置文件 solrconfig_slave.xml:solrconfig.xml 表示复制时,在slave端以solrconfig.xml进行保存,这样slave才能认识这个文件-->
<str name="confFiles">solrconfig_slave.xml:solrconfig.xml,schema.xml,stopwords.txt,elevate.xml</str>
<!-- 设置验证信息 -->
<str name="httpBasicAuthUser">admin</str>
<str name="httpBasicAuthPassword">123456</str>
</lst>
</requestHandler>
2. 从solr 文件(采用solr4.4.0版本)
Slave负责读数据(Read_B)到从服务器内容。
属性值是一个url,指向了Master服务器上的提供复制功能的requestHandler,
master_host:master服务器的IP或主机名
port:master服务器上部署solr应用的tomcat端口
solr:solr的web应用名称
corename: solr中的core,关于core的概念请参考相关文档。由于本案例中不涉及多个core,所以此处的url中可以去掉这项,也不对core进行过多的说明。
replaction: Master上提供复制的requestHandler名称,也就是requestHandler的name属性的取值。
<str name="pollInterval">00:00:20</str>是Slave定期检测Master的时间,格式是HH:mm:ss。这里配置的时间是20秒,因此Slave每个20秒会主动请求一次Master服务器,获得Master服务器上索引文件的状态,比如最后修改时间,文件尺寸等,如果与本机的索引文件不同就进行复制,实现同步。
Read_B 作为Slave,solrconfig.xml 找到<requestHandler name="/replication" ,配置如下:
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="slave">
<!-- 主服务器的URL,core_1是配置了多核,如果不是多核,连接应该是 http://www.abc.com/solr/replication -->
<!-- <str name="masterUrl">http://www.abc.com/solr/core_1/replication</str> -->
<str name="masterUrl">http://192.168.204.135:9081/solr/replication</str>
<!-- 1分钟同步一次 -->
<str name="pollInterval">00:00:60</str>
<!-- 压缩机制,来传输索引,可选 internal|external,internal表示内网,external表示外网 -->
<str name="compression">internal</str>
<!-- 设置超时时间 -->
<str name="httpConnTimeout">5000</str>
<str name="httpReadTimeout">10000</str>
<!-- 设置验证信息,要和master 服务器配置一样 -->
<str name="httpBasicAuthUser">admin</str>
<str name="httpBasicAuthPassword">123456</str>
</lst>
</requestHandler>
3.复制的简单原理
master 有新索引时会保存索引文件名列表并已时间排序和标记上次复制时文件的位置,那么再次复制时就从这个位置之后进行复制。(不是太明白,想当然这么理解,如有谁比较熟悉,请留言,不胜感激)
4. 参考URL http://wiki.apache.org/solr/SolrReplication http://qnalist.com/questions/562975/replication-problem-from-solr-3-6-to-solr-4-0
相关文章推荐
- win2003系统下学习Mysql主从复制安装配置
- Redis 学习笔记(三):主从复制、主从配置和性能测试
- 学习使用solr(一),solr和tomcat的配置及数据库中表的全量索引(上)
- mysql dba系统学习(18)mysql主从复制的实现 mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡
- Solr4.6.1配置与建立索引——搜索引擎学习(一)
- Solr学习总结(四)索引配置schema.xml & solrconfig.xml
- Mysql学习总结(43)——MySQL主从复制详细配置
- Mysql学习总结(14)——Mysql主从复制配置
- MySQL学习笔记--简单主从复制配置
- JAVAWEB开发之redis学习(十一)——redis运维相关(主从复制以及AOF、RDB的配置、后台运维命令)
- Solr4.6.1配置与建立索引——搜索引擎学习(一)
- Mysql学习总结(43)——MySQL主从复制详细配置
- 循序渐进学习如何在 MariaDB 中配置主从复制
- solr7.1.0学习笔记(7)---配置文件managed-schema(schema.xml)-如何定义动态字段dynamicField和复制字段
- 循序渐进学习如何在 MariaDB 中配置主从复制 | Linux 中国
- Mysql学习总结(14)——Mysql主从复制配置
- solr主从配置 自动实现索引同步
- Mysql学习总结(14)——Mysql主从复制配置
- mysql互为主从复制配置笔记--未读,稍后学习
- Mongo服务器集群配置学习一——主从复制