Solr支持两种复制,一是java实现的复制,通过RequestHandler实现,Slave定期调用Master的ReqeuestHandler,与Master上的索引同步。另外是利用Unix脚本实现的复制。本文以案例的形式详细说明第一种复制的配置过程,搭建一个Master-Slave环境的Solr服务。
Solr基于JAVA的主从复制有下面几个优点:
无需依赖外部脚本
只需在solrconfig.xml中配置
可以赋值配置文件
可以用相同的配置实现扩平台复制
无需依赖操作系统
与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台服务器上建立如下目录