1.介绍 

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

 2. 安装环境

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

各个目录说明:

  • 所有的程序安装在/opt目录下,你可以依照你的实际情况下修改安装目录。
  • ZooKeeper的数据目录在/data/zookeeper/data
  • solr/home设置在/usr/local/solrhome

 3. 规划SolrCloud

  • 单一SolrCloud数据集合:product
  • ZooKeeper集群:3台
  • SolrCloud实例:3节点
  • 索引分片:3
  • 复制因子:2

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

三个节点:

    • 192.168.137.101
    • 192.168.137.102
    • 192.168.137.103

4. 安装ZooKeeper集群

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

首先,再第一个节点上将zookeeper-3.3.6.zip解压到/opt目录:

unzip zookeeper-3.3.6 -d /opt/

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

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
# the port at which the clients will connect
clientPort=2181
server.1=192.168.137.101:2888:3888
server.2=192.168.137.102:2888:3888
server.3=192.168.137.103:2888:3888

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

mkdir /data/zookeeper/data -p

初始化myid,三个节点编号依次为1,2,3,在其余节点上分别执行命令

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

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

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

sh /opt/zookeeper-3.3.6/bin/zkServer.sh start

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

[root@localhost ~]# sh /opt/zookeeper-3.3.6/bin/zkServer.sh status

JMX enabled by default
  Using config: /opt/zookeeper-3.3.6/bin/../conf/zoo.cfg
  Mode: follower

5. 安装Solr

执行以下命令:

 tar zxvf apache-tomcat-7.0.47.tar.gz -C /opt/

 unzip solr-4.4.0.zip  -d /opt

 cd /opt
 chmod +x apache-tomcat-6.0.36/bin/*.sh

 cp solr-4.4.0/example/webapps/solr.war apache-tomcat-6.0.36/webapps/

解压solr.war

unzip solr.war -d solr

 cp solr-4.4.0/example/lib/ext/* apache-tomcat-6.0.36/webapps/solr/WEB-INF/lib/
 cp solr-4.4.0/example/resources/log4j.properties apache-tomcat-6.0.36/lib/
 将该节点的操作copy到其他节点

6. ZooKeeper管理配置文件

先将附件中的配置文件解压,然后拷贝到/usr/local/solrhome/core0/conf目录下(每个节点)

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

mkdir -p /usr/local/SolrCloud/solr-lib/
cp apache-tomcat-7.0.47/webapps/solr/WEB-INF/lib/* /usr/local/SolrCloud/solr-lib/
 
2、 通过bootstrap设置solrhome:
 
 java -classpath .:/usr/local/SolrCloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181 -cmd bootstrap -solrhome /usr/local/solrhome/
 
3、SolrCloud是通过ZooKeeper集群来保证配置文件的变更及时同步到各个节点上,所以,需要将配置文件上传到ZooKeeper集群中:
 
java -classpath .:/usr/local/SolrCloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181 -cmd upconfig -confdir /usr/local/solrhome/core0/conf -confname productconf

说明:

  • zkhost指定ZooKeeper地址,逗号分割
  • /usr/local/solrhome/core0/conf目录下存在schema.xml和solrconfig.xml两个配置文件,你可以修改为你自己的目录。
  • productconf为在ZooKeeper上的配置文件名称。

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

java -classpath .:/usr/local/SolrCloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181 -cmd linkconfig -collection product -confname productconf

说明:

  • 创建的collection叫做product,并指定和productconf连接

5、查看ZooKeeper上状态

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

[root@localhost opt]# zookeeper-3.3.6/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
[productconf]
 
[zk: localhost:2181(CONNECTED) 1] ls /collections
[product]
查看/configs/collections目录均有值,说明配置文件已经上传到ZooKeeper上了,接下来启动solr

7. Tomcat配置与启动

1、修改每个节点上的tomcat配置文件,在环境变量中添加zkHost变量

编辑apache-tomcat-6.0.36/bin/catalina.sh,添加如下代码:

JAVA_OPTS='-Dsolr.solr.home=/usr/local/solrhome -DzkHost=192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181'

/usr/local/solrhome/目录创建solr.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true" sharedLib="lib">
    <cores adminPath="/admin/cores" zkClientTimeout="20000" hostPort="${jetty.port:8080}" hostContext="${hostContext:solr}"></cores>
</solr>
 

说明:

  • hostPort值应该和tomcat的端口保持一致
  • solr默认使用jetty服务器,端口默认为8983

最后,在/opt目录下启动tomcat:

sh apache-tomcat-7.0.47/bin/startup.sh

通过http://192.168.56.121:8080/solr/进行访问,界面提示There are no SolrCores running.,这是因为配置文件尚未配置solrcore。

8. 创建Collection、Shard和Replication

创建Collection及初始Shard

直接通过REST接口来创建Collection,你也可以通过浏览器访问下面地址,如下所示:

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

如果成功,会输出如下响应内容如图:

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

  • name 待创建Collection的名称
  • numShards 分片的数量
  • replicationFactor 复制副本的数量

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

实际上,我们从192.168.137.101节点可以看到,SOLR的配置文件内容,已经发生了变化,如下所示:

同时,你还可以看另外两个节点上的solr.xml文件的变化。

手动创建Replication

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

 
结果如图:
192.168.137.102上的shard1,在192.168.137.101节点上有1个副本,名称为product_shard1_replica_2,在192.168.137.103节点上有一个副本,名称为product_shard1_replica_3。也可以通过查看192.168.137.102和192.168.137.103上的目录变化,如下所示:

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

再次从192.168.137.101节点可以看到,SOLR的配置文件内容,又发生了变化,如下所示:

到此为止,我们已经基于3个节点,配置完成了SolrCloud集群。

Apache SolrCloud安装的更多相关文章

  1. 将Apache手动安装成Windows的服务

    将Apache手动安装成Windows的服务 可以选择在安装Apache时自动将其安装为一个服务.如果选择"for all users",那么Apache将会被安装为服务. 如果选 ...

  2. Apache JMeter安装

    Apache JMeter安装说明 1.       安装环境要求: Java版本 JMeter要求充分满足JVM1.3或更高. 操作系统 JMeter可以在当前任何一个已经部署了Java的操作系统上 ...

  3. Linux下apache+phppgadmin安装配置

    1.安装pg 安装PostgreSQL数据库 修改pg_hba.conf配置文件,使得数据库可以通过外部访问. 具体可以配置为: # TYPE DATABASE USER ADDRESS METHOD ...

  4. apache linux 安装

    sudo apt-get install zlib1g-dev 1.到官网下载,然后解压httpd-2.4.18.tar.gz 2.下载apr-1.5.2.tar.gz并解压    http://ar ...

  5. Ubuntu下Apache的安装

    Ubuntu下可快速安装LAMP server(Apache+MySQL+PHP5),参见<Ubuntu下快速安装LAMP server>一文. 也可以手动安装Apache.本文介绍如何手 ...

  6. Linux下查看mysql、apache是否安装,安装,卸载等操作

    Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root               ?        :: /bin/sh /usr/ ...

  7. 查看linux服务器中的apache是否安装以及安装路径

    1.可以通过 apachectl -v 查看apache是否安装,如果安装了的话会显示版本号: 2.如果通过rpm包安装的话可以用  rpm -q  httpd 查看,如果安装的的话会显示包的名称

  8. 简单的php和apache的安装

    今天刚刚接触到PHP  要想深入学习一门语言  首先我们先从安装开始   对于php和apache这两个程序是比较难以安装的  好了  下面我们开始正式安装: 首先我们得准备好  apache  以及 ...

  9. Apache的安装

    Apache的安装: 注:本例只截取需要注意的截图,其它默认则不显示. 1.       服务器信息可以按照默认配置,如果服务器的80端口没被其他服务器程序占据.可选“for All Users,on ...

随机推荐

  1. 常用linux手头命令

    过滤ip ifconfig eth0|grep -oP "([0-9]{1,3}\.){3}[0-9]{1,3}"|sed -n '1p' ifconfig|sed -n '2p' ...

  2. [LeetCode] Reverse Vowels of a String 翻转字符串中的元音字母

    Write a function that takes a string as input and reverse only the vowels of a string. Example 1:Giv ...

  3. Openfire 集群部署和负载均衡方案

    Openfire 集群部署和负载均衡方案 一.   概述 Openfire是在即时通讯中广泛使用的XMPP协议通讯服务器,本方案采用Openfire的Hazelcast插件进行集群部署,采用Hapro ...

  4. mybatis多对一关联

    mybatis多对一关联查询实现 1.定义实体 定义实体的时候需要注意,若是双向关联,就是说双方的属性中都含有对方对象作为域属性出现, 那么在写toString()方法时需要注意,只让某一方输出即可, ...

  5. sql server生成递归日期

    WITH Date AS ( SELECT CAST('2008-08-01' AS DATETIME) da UNION ALL FROM Date WHERE da < '2008-08-2 ...

  6. [HTML5] ArrayBuffer与类型化数组

    写在前面 这是关于JS二进制操作的第三篇博客,前两篇详见: [HTML5] Blob对象 [HTML5] FileReader对象 此前从宏观角度介绍了如何通过JS创建一个二进制对象,并介绍了如何将本 ...

  7. 如何从Exchange邮箱数据库批量删除特定邮件

  8. NSRunLoop的进一步理解

    iPhone应用开发中关于NSRunLoop的概述是本文要介绍的内容,NSRunLoop是一种更加高明的消息处理模式,他就高明在对消息处理过程进行了更好的抽象和封装,这样才能是的你不用处理一些很琐碎很 ...

  9. RabbitMQ 集群+负载均衡

    负载均衡 集群的配置已经搭建好了,代码也成功跑通,成功做到了高可用,但是我们的程序连接节点并不会管哪个服务器在忙.哪个服务器空闲,完全看心情想连谁就连谁.而且代码中要把每个ip的节点都手动的写出来 , ...

  10. 动手实践记录(利用django创建一个博客系统)

    1.添加一个分类的标签,和主表的关系是 外键 class Category(models.Model): """ 分类 """ name = ...