SolrCloud4.9+zookeeper在CentOS上的搭建与安装

Apache SolrCloud安装

SolrCloud通过ZooKeeper集群来进行协调,使一个索引进行分片,各个分片可以分布在不同的物理节点上,多个物理分片组成一个完成的索引Collection。SolrCloud自动支持Solr Replication,可以同时对分片进行复制,冗余存储。下面,我们基于Solr最新的4.9.0版本进行安装配置SolrCloud集群。

1. 安装环境

我使用的安装程序各版本如下:

  • Solr:Apache Solr-4.9.0

  • Tomcat:Apache Tomcat 7

  • ZooKeeper:Apache ZooKeeper 3.4.5

各个目录说明:

  • 所有的程序安装在/home目录下,你可以依照你的实际情况下修改安装目录。

  • ZooKeeper的数据目录在:/home/zookeeper/data

  • solrhome设置在:/home/solrcloud/solrhome

2. 规划SolrCloud

  • 单一SolrCloud数据集合:mycollection

  • ZooKeeper集群:2台

  • SolrCloud实例:2节点

  • 索引分片:2

  • 复制因子:2

手动将2个索引分片(Shard)的复本(Replica)分布在2个SolrCloud节点上

三个节点:

  • 192.168.56.121

  • 192.168.56.122

  • 192.168.56.123

3. 安装ZooKeeper集群

由于需要用到ZooKeeper,故我们先安装好ZooKeeper集群

首先,在第一个节点上将zookeeper-3.4.5.tar.gz解压到/home目录:

$tarzxvfzookeeper-3.4.5.tar.gz-C/home/

创建zookeeper配置文件zookeeper-3.4.5/conf/zoo.cfg,内容如下:

tickTime=2000initLimit=10syncLimit=5dataDir=/data/zookeeper/dataclientPort=2181server.1=192.168.56.121:2888:3888server.2=192.168.56.122:2888:3888server.3=192.168.56.123:2888:3888

zookeeper的数据目录指定在/home/zookeeper/data,你也可以使用其他目录,通过下面命令进行创建该目录:

$mkdir/home/zookeeper/data-p

然后,初始化myid,三个节点编号依次为1,2,3,在其余节点上分别执行命令(注意修改编号)。

$echo"1">/home/zookeeper/data/myid

然后,在第二个和第三个节点上依次重复上面的操作。这样第一个节点中myid内容为1,第二个节点为2,第三个节点为3。

最后,启动ZooKeeper集群,在每个节点上分别启动ZooKeeper服务:

$cd/home$shzookeeper-3.4.5/bin/zkServer.shstart

可以查看ZooKeeper集群的状态,保证集群启动没有问题:

[root@192.168.56.121opt]#shzookeeper-3.4.5/bin/zkServer.shstatus
JMXenabledbydefault
Usingconfig:/home/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode:follower

4. 安装Solr

简单来说,执行以下命令:

步骤如下:

首先,在执行如下操作之前建立三个文件:(1):/home/solrcloud/solrhome(2):/home/solrcloud/solr-lib(3)/home/solrcloud/solr-config
mkdir-p/home/solrcloud/solrhome
mkdir-p/home/solrcloud/solr-lib
mkdir-p/home/solrcloud/solr-config

然后进行如下操作:

1.解压缩apache-tomcat7.zip到/home/solrcloud/tomcat7文件中
unzipapache-tomcat7.zip-d/home/solrcloud/tomcat7
2.解压缩solr-4.9.0.zip到/home/solr-4.9.0文件
unzipsolr-4.9.0.zip-d/home/solr-4.9.0
3.首先把solr-4.9.0/example/webapps/solr.war解压缩,然后复制到tomcat7的webapps下面
$cpsolr-4.9.0/example/webapps/solr.warapache-tomcat7/webapps/
4.把solr-4.9.0/example/lib/ext/下所有jar文件copy到apache-tomcat7/webapps/solr/WEB-INF/lib/下
$cpsolr-4.9.0/example/lib/ext/*apache-tomcat-6.0.36/webapps/solr/WEB-INF/lib/
5.把solr-4.9.0/example/resources/log4j.properties复制apache-tomcat7/lib/下
$cpsolr-4.9.0/example/resources/log4j.propertiesapache-tomcat7/lib/
6.把solr-4.9.0/example/solr/solr.xml复制到/home/solrcloud/solrhome中
$cpsolr-4.9.0/example/solr/solr.xml/home/solrcloud/solrhome
7.在/home/solrcloud/solr-config下面建立一个core目录,比如叫mycollection/conf
mkdir-p/home/solrcloud/solr-config/mycollection/conf
8.复制solr-4.9.0/example/solr/collection1/conf到/home/solrcloud/solr-config/mycollection/conf
$cpsolr-4.9.0/example/solr/collection1/conf/home/solrcloud/solr-config/mycollection/conf
9.修改/home/solrcloud/solrhome/solr.xml的hostPort节点的端口号为tomcat的端口号
<intname="hostPort">${jetty.port:8080}</int>

在其他节点上重复以上操作完成所有节点的solr的安装。

5. Tomcat配置与启动

自动创建Collection及初始Shard,不需要通过zookeeper手动上传配置文件并关联collection。

1、在第一个节点修改tomcat启动参数

JAVA_OPTS='-Djetty.port=8080-Dsolr.solr.home=/home/solrcloud/solrhome-DzkHost=192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181-DnumShards=3-Dbootstrap_confdir=/home/solrcloud/solr-config/mycollection/conf-Dcollection.configName=myconf'

然后启动tomcat。这个步骤上传了集群的相关配置信息(/home/solrcloud/solr-config/mycollectin/conf)到ZooKeeper中去,所以启动下一个节点时不用再指定配置文件了。

2、在第二个和第三个节点修改tomcat启动参数

JAVA_OPTS='-Djetty.port=8080-Dsolr.solr.home=/home/solrcloud/solrhome-DzkHost=192.168.56.122:2181,192.168.56.122:2181,192.168.56.123:2181-DnumShards=3'

然后启动tomcat。

这样就会创建3个shard分别分布在三个节点上,如果你在增加一个节点,这节点会附加到一个shard上成为一个replica,而不会创建新的shard。

6. 建立core跟share的一些命令

curl'http://192.168.56.121:8080/solr/admin/collections?action=CREATE&name=mycollection&numShards=3&replicationFactor=1'

上面链接中的几个参数的含义,说明如下:

  • name 待创建Collection的名称

  • numShards 分片的数量

  • replicationFactor 复制副本的数量

可以通过Web管理页面,访问http://192.168.56.121:8888/solr/#/~cloud,查看SolrCloud集群的分片信息。

7.手动创建Replication

下面对已经创建的初始分片进行复制。 shard1已经在192.168.56.123上,我们复制分片到192.168.56.121和192.168.56.122上,执行如下命令:

$curl'http://192.168.56.121:8080/solr/admin/cores?action=CREATE&collection=primary&name=primary_shard1_replica_2&shard=shard1'
$curl'http://192.168.56.122:8080/solr/admin/cores?action=CREATE&collection=primary&name=primary_shard1_replica_3&shard=shard1'

最后的结果是,192.168.56.123上的shard1,在192.168.56.121节点上有1个副本,名称为primary_shard1_replica_2,在192.168.56.122节点上有一个副本,名称为primary_shard1_replica_3。也可以通过查看192.168.56.121和192.168.56.122上的目录变化,如下所示:

$ll/usr/local/solrhome/
total16
drwxr-xr-x3rootroot4096Mar1017:11primary_shard1_replica2
drwxr-xr-x3rootroot4096Mar1017:02primary_shard2_replica1
-rw-r--r--1rootroot444Mar1017:16solr.xml

你还可以对shard2和shard3添加副本。


其他:下面是手动上传zookeeper的方法

手动设置SolrCloud配置文件

安装ZooKeeper集群之前,请确保每台机器上配置/etc/hosts文件,使每个节点都能通过机器名访问。

1、 创建一个SolrCloud目录,并将solr的lib文件拷贝到这个目录:

$mkdir-p/home/solrcloud/solr-lib/
$cpapache-tomcat7/webapps/solr/WEB-INF/lib/*/home/solrcloud/solr-lib/

2、 通过bootstrap设置solrhome:

$java-classpath.:/home/solrcloud/solr-lib/*org.apache.solr.cloud.ZkCLI-zkhost192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181-cmdbootstrap-solrhome/home/solrcloud/solrhome

SolrCloud集群的所有的配置存储在ZooKeeper.一旦SolrCloud节点启动时配置了-Dbootstrap_confdir参数, 该节点的配置信息将发送到ZooKeeper上存储。基它节点启动时会应用ZooKeeper上的配置信息,这样当我们改动配置时就不用一个个机子去更改了。

3、SolrCloud是通过ZooKeeper集群来保证配置文件的变更及时同步到各个节点上,所以,需要将配置文件上传到ZooKeeper集群中:

$java-classpath.:/home/solrcloud/solr-lib/*org.apache.solr.cloud.ZkCLI-zkhost192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181-cmdupconfig-confdir/home/solrcloud/solr-config/mycollectioin/conf-confnamemyconf

说明:

  • zkhost指定ZooKeeper地址,逗号分割

  • /home/solrcloud/solr-config/mycollectin/conf目录下存在schema.xml和solrconfig.xml两个配置文件,你可以修改为你自己的目录。

  • myconf为在ZooKeeper上的配置文件名称。

4、把配置文件和目标collection联系起来:

$java-classpath.:/home/solrcloud/solr-lib/*org.apache.solr.cloud.ZkCLI-zkhost192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181-cmdlinkconfig-collectionmycollection-confnamemyconf

说明:

  • 创建的collection叫做mycollection,并指定和myconf连接

5、查看ZooKeeper上状态

在任意一个节点的/opt目录下执行如下命令:

$zookeeper-3.4.5/bin/zkCli.sh
[zk:localhost:2181(CONNECTED)0]ls/
[configs,zookeeper,clusterstate.json,aliases.json,live_nodes,overseer,collections,overseer_elect]
[zk:localhost:2181(CONNECTED)1]ls/configs
[myconf]
[zk:localhost:2181(CONNECTED)1]ls/collections
[mycollection]

查看/configs和/collections目录均有值,说明配置文件已经上传到ZooKeeper上了,接下来启动solr。



几个常用的命令:

/admin/collections?action=CREATE:createa collection
/admin/collections?action=RELOAD:reloada collection
/admin/collections?action=SPLITSHARD:splita shard into two new shards
/admin/collections?action=CREATESHARD:createa new shard
/admin/collections?action=DELETESHARD:deletean inactive shard
/admin/collections?action=CREATEALIAS:create or modify an aliasfor a collection
/admin/collections?action=DELETEALIAS:delete an aliasfor a collection
/admin/collections?action=DELETE:deletea collection
/admin/collections?action=DELETEREPLICA:delete a replicaof a shard
/admin/collections?action=ADDREPLICA:add a replicaof a shard
/admin/collections?action=CLUSTERPROP:Add/edit/delete a cluster-wide property
/admin/collections?action=MIGRATE:
Migrate documents to another collection
/admin/collections?action=ADDROLE:Add a specific roleto a node in the cluster

/admin/collections?action=REMOVEROLE:Remove an assigned role
/admin/collections?action=OVERSEERSTATUS:Get status and statistics of the overseer
/admin/collections?action=CLUSTERSTATUS:Get cluster status
/admin/collections?action=REQUESTSTATUS:Get the statusof a previous asynchronous request
/admin/collections?action=LIST:List all collections


===========================================================================

大体过程:

<--设置solrHome-->

java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -cmd bootstrap -solrhome


/home/solrcloud/solrhome


<-- 上传配置文件到zookeeper-->

java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -cmd upconfig -confdir


/home/solrcloud/solr-config/mycollectioin/conf -confname myconf


<!--关联配置文件与collection-->

java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.120.222:2181,192.168.120.223:21811 -cmd linkconfig -collection ebop -confname ebop



<!--建立collection-->

curl 'http://192.168.120.223:8080/solr/admin/collections?action=CREATE&name=ebop&numShards=2&replicationFactor=1'


<!--建立副本-->

curl 'http://192.168.120.222:8080/solr/admin/cores?action=CREATE&collection=ebop&name=ebop_shard1_replica_2&shard=shard1'

curl 'http://192.168.120.223:8080/solr/admin/cores?action=CREATE&collection=ebop&name=ebop_shard2_replica_2&shard=shard2'


参考:http://blog.javachen.com/2014/03/10/how-to-install-solrcloud/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值