参考朋友chenlb的文章:http://www.iteye.com/topic/211807,谢谢!
solr的复制功能可以把创建索引和search分离开来,可以像一台主服务器发送http请求创建索引,创建完了,利用linux crontab定时功能,实现向多台索引服务器的replicate。实现索引的同步。
要在solr里配置索引段位2个,这样每次都是事复制最新新增加的索引过去,而不是全部。索引复合文件配置设置为false。
solr的分发是用rsync的。
快照与分发过程:
1.snapshooter 命令在主服务器产生快照。一般在commit和optimize之后被solr调用。
2.snappuller 命令在从服务器运行,所做的事是从主服务器拉最新的快照。 用rsync的daemon模式来运行可以获得更好的性能与更底的CPU利用率。
3.snapinstaller 命令在从服务器运行,当从服务器从主服务器拉完快照后才执行。它会通知本地Solr服务器打开一个新的index reader,然后预热这个新index reader的缓存,此时有请求,原来的index reader继续为这此请求服务。一但预热完成,Solr 启用新的index reader,旧的被消亡。
配置如下:
1.安装好jdk,tomcat,solr。主服务器ip为:10.0.8.9,索引服务器为10.0.8.5,两机器要实现ssh无密码交互。
2.配置Scripts文件里记录。放在solrHome/conf/scripts.conf文件里。
//主服务器上的配置
user=root
solr_hostname=10.0.8.9
solr_port=8080
rsyncd_port=18983
data_dir=/data1/server
webapp_name=solr
master_host=10.0.8.9
master_data_dir=/data1/server
master_status_dir=/data1/solrLog
//索引服务器上的配置
user=root
solr_hostname=10.0.8.5
solr_port=8080
rsyncd_port=18983
data_dir=/data1/slave/
webapp_name=solr
master_host=10.0.8.9
master_data_dir=/data1/server
master_status_dir=/data1/solrLog
3.配置好后,分别启动tomcat,加载solr。
4.在主服务器上启用且启动rsync:
./rsyncd-enable -u root -v
./rsyncd-start -u root -v
//此时用netstat -tnlp 查看端口号,发现18933端口已经启动
6.在主服务器上产生快照
./snapshooter -u root -v
7.在搜索服务器上下拉快照,安装快照:
./snappuller-enable -u root -v
./snappuller -u root -v
./snapinstaller -u root -v
8.可以再2台机器上同时搜索,现在数据应都是相同的。