您的位置:首页 > 其它

Solr之SolrCloud集群搭建

2015-07-02 22:08 441 查看
本机主要演示SolrCloud基于zookeeper集群搭建,多台zookeeper服务器具备系统高可靠性,高可用性,任意一台zookeeper服务器挂掉,系统会选举出一台服务器为leader。多台Solr,任意一台solr服务器挂掉,系统还是可以用的。solr安装包里面已经包含zookeeper,但是这样集成在一起,耦合度太高,不利于扩展。每一次重启tomcat,就相当于重启zookeeper了一遍,造成zookeeper集群不稳定,一般都是单独安装配置zookeeper集群,zookeeper集群最好有3个以上的主机,solr根据实际需求扩展。
一、安装zookeeper和solr

由于机器有限,这里我们使用zookeeper一台,solr二台机器演示。

zookeeper:192.168.100.90

solr:192.168.18.119   192.168.18.177
1.安装zookeeper

参考:linux上Zookeeper集群安装及监控

2.安装solr

wget http://mirrors.cnnic.cn/apache/lucene/solr/5.2.1/solr-5.2.1.zip
solr下载包中提供了Jetty服务器部署,直接bin/solr start启动即可,下面我们通过tomcat部署solr:

1)安装jdk1.7.0_60和apache-tomcat-7.0.30略

2)复制solr安装包到tomcat下

cp solr-5.2.1/server/webapps/solr.war ~/apache-tomcat-7.0.30/webapps/

3)启动tomcat,会自动解压solr.war在apache-tomcat-7.0.30/webapps/solr/下新建文件夹solr_home,把官网下载的solr(本文为:solr-5.2.1.zip)解压目录中的"solr-5.2.1\server\solr"目录下的所有内容复制到solr_home中。

4)配置solr_home

修改tomcat-7.0.30/webapps/solr/WEB-INF/web.xml,取消注释,配置“env-entry-value”的值为

<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/home/slim/apache-tomcat-7.0.30/webapps/solr/solr_home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>


5)配置日志

拷贝solr-5.2.1/example/lib/ext/下所有jar包至apache-tomcat-7.0.30/webapps/solr/WEB-INF/lib/下,将solr-solr-5.2.1/example/resources/log4j.properties拷贝到apache-tomcat-7.0.30/webapps/solr/WEB-INF/classes下:

cp solr-5.2.1/example/lib/ext/* apache-tomcat-7.0.30/webapps/solr/WEB-INF/lib/

mdkir -p apache-tomcat-7.0.30/webapps/solr/WEB-INF/classes/

cp solr-5.2.1/example/resources/log4j.properties apache-tomcat-7.0.30/webapps/solr/WEB-INF/classes

二、配置

1.上传配置至zookeeper

在任意一台机器上新建SolrCloud配置文件目录:/home/slim/solrcloud/config-files,将solr-5.2.1/server/solr/configsets/basic_configs/conf目录拷贝到config-files目录下。新建Solr Zk CLI库文件目录:/home/slim/solrcloud/solr-lib,将第三步apache-tomcat-7.0.30/webapps/solr/WEB-INF/lib/目录文件拷贝过来。

cp -rf solr-5.2.1/server/solr/configsets/basic_configs/conf/* solrcloud/config-files/

cp -rf apache-tomcat-7.0.30/webapps/solr/WEB-INF/lib/* solrcloud/solr-lib/

将配置文件上传到ZooKeeper中

java -classpath .:/home/slim/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.100.90:2181 -confdir /home/slim/solrcloud/config-files -confname testconf

备注:更新配置文件也是上面的命令。

将上传到ZooKeeper中配置文件与Collection相关联

java -classpath .:/home/slim/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection mycollection -confname testconf -zkhost 192.168.100.90:2181

关于org.apache.solr.cloud.ZkCLI类可查看solr-core-4.3.1.jar。

若要删除配置文件,可将/home/develop/xq/zookeeper/data/version-2/目录下所有文件删除。

运行以上命令,会生成zookeeper.out文件,可以查看命令是否运行成功。

运行zkCli.sh,查看配置文件是否上传成功。

[slim@localhost zookeeper-3.4.6]$ ./bin/zkCli.sh

查看配置文件:

[zk: localhost:2181(CONNECTED) 2] ls /configs/testconf  

[currency.xml, protwords.txt, synonyms.txt, _rest_managed.json, solrconfig.xml, stopwords.txt, lang, schema.xml]

2.solr配置

新建solrhome/solr目录,作为索引存储目录。创建solr.xml文件,作为solrcloud配置文件。

<solr>

<solrcloud>

<str name="host">${host:}</str>
<int name="hostPort">${jetty.port:8080}</int>
<str name="hostContext">${hostContext:solr}</str>

<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>

<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
<int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>

</solrcloud>

<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:600000}</int>
<int name="connTimeout">${connTimeout:60000}</int>
</shardHandlerFactory>

</solr>


修改tomcat的bin目录下的catalina.sh,加入以下命令:

export JAVA_OPTS="-DzkHost=192.168.100.90:2181"

在其他机器上配置如上。

3.启动tomcat,配置collection和core

#bin/startup.sh ;tail -f logs/catalina.out 

在浏览器中输入以下命令进行创建collection和core。
http://192.168.18.119:8080/solr/admin/collections?action=create&name=testcollection&numShards=2&replicationFactor=1&maxShardsPerNode=2
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">20227</int>
</lst>
<lst name="success">
<lst>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">10830</int>
</lst>
<str name="core">testcollection_shard1_replica1</str>
</lst>
<lst>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">18575</int>
</lst>
<str name="core">testcollection_shard2_replica1</str>
</lst>
</lst>
</response>


注意,用create和CREATE都行,不区分大小写。以下删除同上。

删除collection和core:
http://192.168.18.199:8080/solr/admin/collections?action=delete&name=testcollection&numShards=2&replicationFactor=1&maxShardsPerNode=2
参数说明:

numShards:默认为1.分片数。

replicationFactor:每个分片的复本数

maxShardsPerNode:每个Solr服务器节点上最大分片数(Solr 4.2新增)

注意:一个机器上的分片数<=maxShardsPerNode.即:numShards*replicationFactor<=maxShardsPerNode.

若不符合以上规则,创建的时候会报错。

创建完成,可以在页面看到分片的图形



由于节点数为2个,创建2个分片,solr会自动分片,每台机器一个分片,没有副本。

参考文章:

1.一个zookeeper,一个solr服务器配置

2.一台zookeeper服务器,多台solr服务器配置

3.多台zookeeper服务器,多台solr服务器配置

4.tomcat solrcloud zookeeper外部部署

5.solrCloud+tomcat+zookeeper集群配置

6.solrcloud分布式集群部署及索引操作实例

7.SolrCloud 分布式集群安装部署以及管理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Solr lucene 全文检索