solr cloud 在集群中的配置,以及与中文分词, tomcat等等的整合(1)

来源:互联网 发布:mgl_cntv蒙古软件 编辑:程序博客网 时间:2024/05/16 12:05
因为项目规模的增大,之前所用的solr replication已经无法满足。之前用的solr replication是master/slave结构,即master用来写入,slave用来读取。slave 可以设定同步时间,实现增量同步。但是由于无法有多个master(虽然可以有多个core),只能多台server写入同一块硬盘(如果写入不同地址,需要手动合并并且optimize)。所幸solr发布了cloud版本,虽然网上资料还不多,但通过一些尝试,还是在ec2上成功搭建了solr cloud, 现在写下来与童鞋们分享。

首先需要看的资料是solr cloud的wiki: http://wiki.apache.org/solr/SolrCloud/(写这篇博客的时候,wiki的内容较之前已经有改变)

从https://svn.apache.org/repos/asf/lucene/dev/trunk/中checkout下来solr cloud的源码。
从这个地址checkout下来的源码包含了lucene5.0和solr5.0(现在的wiki中给出的solr是4.0-alpha)
也正是因为这里的lucene和solr的版本较现在普遍使用的版本太高才导致了诸多问题。

我们假设solr_cloud的源码的位置是 ~/solr_cloud
首先要做是cd ~/solr_cloud/solr
然后 ant example, 因为整个项目是ant部署的。
在此过程中可能会报的错是ant版本太低(需要1.8.2以上),以及缺少ivy jar包,解决方法是从apache ivy下载ivy的jar包,拷贝到ant 的lib目录下。

编译完以后进入example目录。执行

java -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf -DzkRun -DnumShards=2 -jar start.jar

因为默认的solr是使用源码包里面的Jetty启动

-DzkRun 是启动内置的zookeeper服务器(关于zookeeper下面会有一些介绍)
-Dbootstrap_confdir 是solr conf的目录
-DnumShards 是指要启动shards的数目

然后可以浏览http://your-server-name:8983/solr/#/collection1 来判断是否此个shard已经启动
其他shards的配置也基本一样
唯一不同是不需要启动zookeeper,只需执行
java -Djetty.port=7574 -DzkHost=localhost:9983 -jar start.jar
 来启动。

到这里,一个最基本的solr cloud demo已经完成。但是,在生产环境中,需要做各种调整。这些具体的调整会在下一篇博文中给出。

NB:
zookeeper是apache的一个开源项目,用作分布式应用程序的协调。在solr cloud中,zookeeper
包含了所有shards的配置,主要起到选取leader和同步数据的作用。它的算法基础是Fast Paxos算法。
http://zookeeper.apache.org/
原创粉丝点击