设为首页 收藏本站
查看: 746|回复: 0

[经验分享] 转:Solr 基于java的复制(Master-Slave配置)

[复制链接]

尚未签到

发表于 2015-7-17 08:37:44 | 显示全部楼层 |阅读模式
  Solr支持两种复制,一是java实现的复制,通过RequestHandler实现,Slave定期调用Master的ReqeuestHandler,与Master上的索引同步。另外是利用Unix脚本实现的复制。本文以案例的形式详细说明第一种复制的配置过程,搭建一个Master-Slave环境的Solr服务。
  Solr基于JAVA的主从复制有下面几个优点:
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///E:/work/java%E6%89%8B%E5%86%8C/image/bullet.gif 无需依赖外部脚本
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///E:/work/java%E6%89%8B%E5%86%8C/image/bullet.gif 只需在solrconfig.xml中配置
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///E:/work/java%E6%89%8B%E5%86%8C/image/bullet.gif 可以赋值配置文件
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///E:/work/java%E6%89%8B%E5%86%8C/image/bullet.gif 可以用相同的配置实现扩平台复制
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///E:/work/java%E6%89%8B%E5%86%8C/image/bullet.gif 无需依赖操作系统
http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///E:/work/java%E6%89%8B%E5%86%8C/image/bullet.gif 与solr紧密集成,可以通过管理页面查看每个复制的状态
  在本文中使用了2台独立的服务器,一台作为Master服务器,另一台作为Slave服务器。Slave定时从Master上复制索引文件到本地,保证索引文件同步。多个Slave的配置与一个Slave的配置相同,可以参考本案例自行扩展。
  测试环境
服务器1(Master)
操作系统:      CentOS Linux
IP:                   192.168.1.1
JDK:               Sun JDK 1.6
Web服务器: Apache Tomcat6
  服务器2(Slave)
操作系统:       CentOS Linux
IP:                    192.168.1.2
JDK:                Sun JDK 1.6
Web服务器:  Apache Tomcat6
  为了确保后面步骤的顺利进行,请先检查一下自己的测试环境是否能够正常运行。比如,每台服务器上的tomcat是否可以正常启动,并能访问默认页面(如果没有默认页面,可以自己建立一个简单jsp/html页面进行一下简单的测试)。tomcat除了在本机可以访问外,还要保证不同的服务器之间可以互相访问运行在其它服务器上的tomcat上的页面。这是因为,Slave的复制是通过http协议访问Master完成的,就像用浏览器访问一个web页面一样。
  主要的配置工作可以分成2大部分,一是tomcat上配置solr应用, 二是配置solr的配置文件。
本文中可能会忽略一些关于solr的基本概念或基本solr的配置方面的说明,如果需要帮助请参考关于solr相关方面的文档。
  准备工作:
在2台服务器上建立如下目录
/usr/local/program/webapps   
/usr/local/program/solr.home
  webapps用于放置solr的web的应用,solr.home存放solr的配置文件和索引文件。
  
  1:建立solr的web应用
在服务器1上,将solr提供的solr.war拷贝到/usr/local/program/webapps下,solr.war在solr的下载文件中的example/webapps中。
在%CATALINA_HOME%/conf/Catalina/localhost目录下建立一个solr.xml文件,内容如下:
  



[xhtml] view plaincopy

  •   
  •   
  •   
  •   
  
  
  
  这是一种在tomcat上部署web应用的一种方式,特点是可以将web应用放在tomcat的默认应用目录webapps以外。
  solr运行时需要一个变量solr.home,在上面的配置文件中Environment标签在jndi环境中定义了这个变量,使solr的主目录指向/usr/local/program/solr.home。solr主目录中存放着solr的配置文件和索引文件,后面会再次提到。
  
  2:准备solr.home中内容
在下载到的solr压缩文件的example中有一个solr目录,此目录下是solr的一些配置文件,将此目录下的所有文件和子目录一起复制到/usr/local/program/solr.home(solr的主目录)下。
此时solr主目录中应该有2个子目录和一个文件,子目录bin、conf和文件readme.txt,bin和readme.txt不会有什么影响。conf下面是solr的主要配置文件,实现主从服务器复制主要的也就是配置这几个文件。
  
  3:按照步骤1、2在服务器2(Slave)上部署Solr应用并准备好Solr主目录的内容。
  
  4:在Master的配置文件中添加一个RequestHandler
RequestHandler是复制在Master端的主要手段,Slave会定期向这个RequestHandler发送请求,并完成索引文件的同步。
编辑Solr主目录/conf(/usr/local/program/solr.home/conf)下的solrconfig.xml文件,在标签内添加如下内容:
  
  



[xhtml] view plaincopy

  •   
  •   
  •   
  • startup  
  • commit  
  •          
  •   
  •          
  • schema.xml,stopwords.txt,elevate.xml  
  •   
  • 00:00:10  
  •   
  •   
  
  
  
requestHandler的属性name是这个Master上复制处理器的名字,无需修改,在slave的配置文件中将会用到这个属性值。
  说明这个Master节点,如果name=”slave”这个服务器就是Slave节点。
  replicateAfter说明什么时候进行复制,取值可以是startup, commit, optimize分别是创建索引、提交索引、优化索引之后。每当这些动作执行结束后,Slave就可以从Master上进行复制了。
  
  5:配置Slave的solrconfig.xml
在Slave服务器上的solr主目录(/usr/local/program/sole.home/conf)中的soleconfig.xml中加入下面配置
  



[xhtml] view plaincopy

  •       
  •               
  •                  
  •         http://master_host:port/solr/corename/replication            
  •          
  •                   
  •         00:00:20   
  •            
  •                   
  •                   
  •         internal  
  •          
  •                   
  •         5000         
  •         10000         
  •                   
  •         username         
  •         password      
  •   
  •   
  
  
  
与Master上的配置很相似,只是属性值有些却别。
最重要的一个属性就是:
  http://master_host:port/solr/corename/replication
  
属性值是一个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属性的取值。
  00:00:20是Slave定期检测Master的时间,格式是HH:mm:ss。这里配置的时间是20秒,因此Slave每个20秒会主动请求一次Master服务器,获得Master服务器上索引文件的状态,比如最后修改时间,文件尺寸等,如果与本机的索引文件不同就进行复制,实现同步。  
  转自:http://blog.iyunv.com/ahopedog/article/details/5993191

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-87449-1-1.html 上篇帖子: 图解全文检索SOLR的酷应用[Ajax Solr] 下篇帖子: Apache Solr 4.0 初试体验及LucidWorks介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表