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目录:
创建zookeeper配置文件zookeeper-3.4.5/conf/zoo.cfg,内容如下:
zookeeper的数据目录指定在/home/zookeeper/data,你也可以使用其他目录,通过下面命令进行创建该目录:
然后,初始化myid,三个节点编号依次为1,2,3,在其余节点上分别执行命令(注意修改编号)。
然后,在第二个和第三个节点上依次重复上面的操作。这样第一个节点中myid内容为1,第二个节点为2,第三个节点为3。
最后,启动ZooKeeper集群,在每个节点上分别启动ZooKeeper服务:
可以查看ZooKeeper集群的状态,保证集群启动没有问题:
4. 安装Solr
简单来说,执行以下命令:
在其他节点上重复以上操作完成所有节点的solr的安装。
5. Tomcat配置与启动
自动创建Collection及初始Shard,不需要通过zookeeper手动上传配置文件并关联collection。
1、在第一个节点修改tomcat启动参数
然后启动tomcat。这个步骤上传了集群的相关配置信息(/home/solrcloud/solr-config/mycollectin/conf)到ZooKeeper中去,所以启动下一个节点时不用再指定配置文件了。
2、在第二个和第三个节点修改tomcat启动参数
然后启动tomcat。
这样就会创建3个shard分别分布在三个节点上,如果你在增加一个节点,这节点会附加到一个shard上成为一个replica,而不会创建新的shard。
6. 建立core跟share的一些命令
上面链接中的几个参数的含义,说明如下:
- 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上,执行如下命令:
最后的结果是,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上的目录变化,如下所示:
你还可以对shard2和shard3添加副本。
其他:下面是手动上传zookeeper的方法
手动设置SolrCloud配置文件
安装ZooKeeper集群之前,请确保每台机器上配置/etc/hosts文件,使每个节点都能通过机器名访问。
1、 创建一个SolrCloud目录,并将solr的lib文件拷贝到这个目录:
2、 通过bootstrap设置solrhome:
SolrCloud集群的所有的配置存储在ZooKeeper.一旦SolrCloud节点启动时配置了-Dbootstrap_confdir参数, 该节点的配置信息将发送到ZooKeeper上存储。基它节点启动时会应用ZooKeeper上的配置信息,这样当我们改动配置时就不用一个个机子去更改了。
3、SolrCloud是通过ZooKeeper集群来保证配置文件的变更及时同步到各个节点上,所以,需要将配置文件上传到ZooKeeper集群中:
说明:
- zkhost指定ZooKeeper地址,逗号分割
- /home/solrcloud/solr-config/mycollectin/conf目录下存在schema.xml和solrconfig.xml两个配置文件,你可以修改为你自己的目录。
- myconf为在ZooKeeper上的配置文件名称。
4、把配置文件和目标collection联系起来:
说明:
- 创建的collection叫做mycollection,并指定和myconf连接
5、查看ZooKeeper上状态
在任意一个节点的/opt目录下执行如下命令:
查看/configs和/collections目录均有值,说明配置文件已经上传到ZooKeeper上了,接下来启动solr。
几个常用的命令:
: create a collection
/admin/collections?action=RELOAD: reload a collection
/admin/collections?action=SPLITSHARD: split a shard into two new shards
/admin/collections?action=CREATESHARD: create a new shard
/admin/collections?action=DELETESHARD: delete an inactive shard
/admin/collections?action=CREATEALIAS: create or modify an alias for a collection
/admin/collections?action=DELETEALIAS: delete an alias for a collection
/admin/collections?action=DELETE: delete a collection
/admin/collections?action=DELETEREPLICA: delete a replica of a shard
/admin/collections?action=ADDREPLICA: add a replica of 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 role to 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 status of 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/
















