一、什么是 SolrCloud

  SolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用 SolrCloud 的,当索引量很大,搜索请求并发很高,这时需要使用 SolrCloud 来满足这些需求。

  SolrCloud 是基于 Solr 和 Zookeeper 的分布式搜索方案,它的主要思想是使用 Zookeeper 作为集群的配置信息中心。

二、环境准备

1、java 1.7  

  链接:https://pan.baidu.com/s/1ti6j9jD-RwUN5xl3bc3ZDw 密码:oc9a

2、tomcat 7

  链接:https://pan.baidu.com/s/1-TK3AAVtJCRWyhb86i7cRw 密码:zro9

3、zookeeper 3

  链接:https://pan.baidu.com/s/1BHV6vHcHIuj7lalvvR7w_g 密码:csvk

4、solr 4

  链接:https://pan.baidu.com/s/1-fBmxm64y19WUtPSc1Lxdw 密码:wddz

三、搭建 Zookeeper 集群( 在一台机器上模拟搭建 3 台 Zookeeper 的集群 )

1、解压 zookeeper

[root@localhost 桌面]# tar -zxvf zookeeper-3.4.6.tar.gz

2、在 /usr/local 下创建一个 solr-cloud 目录

[root@localhost 桌面]# mkdir /usr/local/solr-cloud

3、复制 3 份 zookeeper 到该目录下

[root@localhost 桌面]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper01
[root@localhost 桌面]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper02
[root@localhost 桌面]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper03

4、在 3 份 zookeeper 中分别创建 data 目录

[root@localhost 桌面]# mkdir /usr/local/solr-cloud/zookeeper01/data
[root@localhost 桌面]# mkdir /usr/local/solr-cloud/zookeeper02/data
[root@localhost 桌面]# mkdir /usr/local/solr-cloud/zookeeper03/data

5、在每个 data 目录下创建一个 myid 文件,文件名就叫做 myid。

[root@localhost 桌面]# touch /usr/local/solr-cloud/zookeeper01/data/myid
[root@localhost 桌面]# touch /usr/local/solr-cloud/zookeeper02/data/myid
[root@localhost 桌面]# touch /usr/local/solr-cloud/zookeeper03/data/myid

6、在 3 个 myid 文件中分别写入1、2、3。( 内容就是每个实例的id )

7、修改配置文件

(1)复制 zoo_sample.cfg 文件并且重命名为 zoo.cfg

[root@localhost 桌面]# cp /usr/local/solr-cloud/zookeeper01/conf/zoo_sample.cfg /usr/local/solr-cloud/zookeeper01/conf/zoo.cfg
[root@localhost 桌面]# cp /usr/local/solr-cloud/zookeeper01/conf/zoo_sample.cfg /usr/local/solr-cloud/zookeeper02/conf/zoo.cfg
[root@localhost 桌面]# cp /usr/local/solr-cloud/zookeeper01/conf/zoo_sample.cfg /usr/local/solr-cloud/zookeeper03/conf/zoo.cfg

(2)分别修改 3 份 zookeeper 的 zoo.cfg 中的 dataDir

dataDir = /usr/local/solr-cloud/zookeeper01/data
dataDir = /usr/local/solr-cloud/zookeeper02/data
dataDir = /usr/local/solr-cloud/zookeeper03/data

(3)分别修改 3 份 zookeeper 的 zoo.cfg 中的 clientPort。( 因为是在一台服务器上模拟的,所以需要改端口。如果是在多台服务器做集群,就不需要改这个属性了 )

clientPort=2181
clientPort=2182
clientPort=2183

(4)配置节点。在每个 zoo.cfg 文件末尾加上下面内容

server.1=192.168.25.129:2881:3881
server.2=192.168.25.129:2882:3882
server.3=192.168.25.129:2883:3883
解析:
server.1:就是在 myid 里面写的 id
192.168.25.129:节点所在的 ip 地址
2881:节点之间进行通行的端口号
3881:节点之间进行投票的端口号

8、启动 3 个 节点

(1)写一个批处理 start-all.sh ,批处理内容如下

cd zookeeper01/bin
./zkServer.sh start
cd ../../
cd zookeeper02/bin
./zkServer.sh start
cd ../../
cd zookeeper03/bin
./zkServer.sh start
cd ../../

(2)修改批处理文件权限,让文件变为可执行的状态

[root@localhost solr-cloud]# chmod 744 start-all.sh

(3)执行批处理,启动 3 个节点

[root@localhost solr-cloud]# ./start-all.sh

(4)查看每个节点的状态( 其中有两个 follower 一个 leader )

[root@localhost solr-cloud]# zookeeper01/bin/zkServer.sh status
[root@localhost solr-cloud]# zookeeper02/bin/zkServer.sh status
[root@localhost solr-cloud]# zookeeper03/bin/zkServer.sh status

9、zookeeper 集群搭建完毕

四、搭建 solr 集群( 在一台机器上模拟搭建 4 台 solr 集群 )

1、解压 tomcat

[root@localhost 桌面]# tar -zxvf apache-tomcat-7.0.47.tar.gz

2、复制 4 份 tomcat 到 solr-cloud 目录下

[root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat01
[root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat02
[root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat03
[root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat04

3、复制 solr 工程到 4 份 tomcat 中

(1)solr 工程下载

  链接:https://pan.baidu.com/s/10FBdkO-2uSniqlPlIquGxQ 密码:264n

(2)复制 solr 工程到 tomcat

[root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat01/webapps/
[root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat02/webapps/
[root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat03/webapps/
[root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat04/webapps/

4、修改 4 个 tomcat 的端口号

vim tomcat01/conf/server.xml
vim tomcat02/conf/server.xml
vim tomcat03/conf/server.xml
vim tomcat04/conf/server.xml

(1)tomcat1( 修改 3 个地方 )

<Server port="8105" shutdown="SHUTDOWN">
<Connector port="8180" protocol="HTTP/1.1"
<Connector port="8109" protocol="AJP/1.3"

(2)tomcat2 ( 修改 3 个地方 )

<Server port="8205" shutdown="SHUTDOWN">
<Connector port="8280" protocol="HTTP/1.1"
<Connector port="8209" protocol="AJP/1.3"

(3)tomcat3 ( 修改 3 个地方 )

<Server port="8305" shutdown="SHUTDOWN">
<Connector port="8380" protocol="HTTP/1.1"
<Connector port="8309" protocol="AJP/1.3"

(4)tomcat4 ( 修改 3 个地方 )

<Server port="8405" shutdown="SHUTDOWN">
<Connector port="8480" protocol="HTTP/1.1"
<Connector port="8409" protocol="AJP/1.3"

4、复制 4 份 solrhome

(1)solrhome 下载

  链接:https://pan.baidu.com/s/1MDd5QIgFCm7WsS3BMmJkZQ 密码:w6em

(2)复制 4 份 solrhome 到 solr-cloud

[root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome01
[root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome02
[root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome03
[root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome04

5、将 solr 工程的  web.xml 文件指向 solrhome

(1)tomcat1  web.xml

<env-entry>
  <env-entry-name>solr/home</env-entry-name>
  <env-entry-value>/usr/local/solr-cloud/solrhome01/</env-entry-value>
  <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

(2)tomcat2   web.xml

<env-entry>
  <env-entry-name>solr/home</env-entry-name>
  <env-entry-value>/usr/local/solr-cloud/solrhome02/</env-entry-value>
  <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

(3)tomcat3   web.xml

<env-entry>
  <env-entry-name>solr/home</env-entry-name>
  <env-entry-value>/usr/local/solr-cloud/solrhome03/</env-entry-value>
  <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

(4)tomcat4   web.xml

<env-entry>
  <env-entry-name>solr/home</env-entry-name>
  <env-entry-value>/usr/local/solr-cloud/solrhome04/</env-entry-value>
  <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

6、修改 solrhome 中 solr.xml

(1)solrhome01

<solrcloud>
<str name="host">192.168.25.129</str>
<int name="hostPort">8180</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>

(2)solrhome02

<solrcloud>
<str name="host">192.168.25.129</str>
<int name="hostPort">8280</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>

(3)solrhome03

<solrcloud>
<str name="host">192.168.25.129</str>
<int name="hostPort">8380</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>

(4)solrhome04

<solrcloud>
<str name="host">192.168.25.129</str>
<int name="hostPort">8480</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>

五、建立 zookeeper 和 solr 的关联关系

1、修改每个 tomcat/bin/catalina.sh 。( 在对应的地方加上以下内容,zookeeper 的 ip 地址和端口号 )

JAVA_OPTS="-DzkHost=192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183"

六、让 zookeeper 管理 solrhome

  将任意一个 solrhome/collection1/conf 文件夹上传到 zookeeper 即可

(1)进入 solr-4.10.3 目录( 就是你下载 solr 4,解压后的那个目录 )

(2)进入下面目录,该目录下有一个 zkcli.sh

[root@localhost solr-4.10.3]# cd example/scripts/cloud-scripts/

(3)执行 zkcli.sh ( 注意修改 zookeeper 集群节点 所在的 ip 地址 和端口号 )

[root@localhost cloud-scripts]# ./zkcli.sh -zkhost 192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf

(4)查看是否上传成功

  使用 zookeeper 的客户端连接 zookeeper

[root@localhost solr-cloud]# zookeeper01/bin/zkCli.sh -server 192.168.25.129:2182

  连接成功后

[zk: 192.168.25.129:2182(CONNECTED) 2] ls /configs

  返回 myconf ,说明上传成功了

[myconf]

  退出 zookeeper 客户端的连接

[zk: 192.168.25.129:2182(CONNECTED) 4] quit

七、关闭防火墙

service iptablesstop    //暂时关闭防火墙
chkconfig iptables off //永久关闭防火墙

八、启动 4 个tomcat

[root@localhost 桌面]# /usr/local/solr-cloud/tomcat01/bin/startup.sh
[root@localhost 桌面]# /usr/local/solr-cloud/tomcat02/bin/startup.sh
[root@localhost 桌面]# /usr/local/solr-cloud/tomcat03/bin/startup.sh
[root@localhost 桌面]# /usr/local/solr-cloud/tomcat04/bin/startup.sh

九、创建新的 Collection 进行分片处理

  开一个新的浏览器窗口,在地址栏输入以下内容

http://192.168.25.129:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

十、刷新浏览器

十一、删除不需要的 Collection 

  开一个新的浏览器窗口,在地址栏输入以下内容

http://192.168.25.129:8180/solr/admin/collections?action=DELETE&name=collection1

 十二、刷新浏览器

 十三、solr 集群搭建完毕

centos solr 集群搭建的更多相关文章

  1. Solr集群搭建

    SolrCloud需要solr基于zookeeper部署,zookeeper是一个集群管理软件,由于SolrCloud需要由多台服务器组成.由zookeeper来进行协调管理.Zookeeper是一个 ...

  2. Solr集群搭建详细教程(一)

    一.Solr集群的系统架构 注:欢迎大家转载,非商业用途请在醒目位置注明本文链接和作者名dijia478,商业用途请联系本人dijia478@163.com. SolrCloud(solr 云)是So ...

  3. Solr集群搭建详细教程(二)

    注:欢迎大家转载,非商业用途请在醒目位置注明本文链接和作者名dijia478,商业用途请联系本人dijia478@163.com. 之前步骤:Solr集群搭建详细教程(一) 三.solr集群搭建 注意 ...

  4. (转)淘淘商城系列——Solr集群搭建

    http://blog.csdn.net/yerenyuan_pku/article/details/72957201 我们之前做的搜索使用的是Solr的单机版来实现的,正是由于我们现在商品数据量不多 ...

  5. 搜索服务Solr集群搭建 使用ZooKeeper作为代理层

    上篇文章搭建了zookeeper集群 那好,今天就可以搭建solr搜服服务的集群了,这个和redis 集群不同,是需要zk管理的,作为一个代理层 安装四个tomcat,修改其端口号不能冲突.8080~ ...

  6. centos redis集群搭建

    说明: 10.0.0.111部署6500,6501,6502三个主节点 10.0.0.222部署6500,6501,6502三个备份节点 1.安装redis:略 2.配置内核参数 # 配置 vm.ov ...

  7. solr集群搭建(复制)

    Solr集群的搭建以及使用(内涵zookeeper集群的搭建指南) 1   什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引 ...

  8. solr集群搭建(4.10.2)

    配置环境为centos6.8 下载tomcat程序到服务器,并解压启动服务测试 [root@hadoop01 ~]# wget http://apache.claz.org/tomcat/tomcat ...

  9. Linux下solr集群搭建

    第一步:创建四个tomcat实例.每个tomcat运行在不同的端口.8180.8280.8380.8480 第二步:部署solr的war包.把单机版的solr工程复制到集群中的tomcat中. 第三步 ...

随机推荐

  1. Android-68-Tomcat各种启动错误的解决的方法,如:Exception in thread &quot;Thread-6&quot; NoClassDefFoundError,Document base E:\

     上午遇到一个棘手的事儿,导入一个project,结果把原有的Tomcatserver给导坏了.各种红的.黑的.蓝的错误满天飞啊,刚弄完一个项目,怕被毁了.我那个揪心呀! 还好.在走头无路的情况下 ...

  2. Android开发之BUG专讲:入门篇(一)

    前言: 本文作者:周才智 转载须注明作者与出处.违者必究. 原文地址:http://segmentfault.com/a/1190000004380690 话说诸葛亮是一个优秀的程序员,每个锦囊都是应 ...

  3. HDU3535 AreYouBusy 混合背包

    题目大意 给出几组物品的体积和价值,每组分为三种:0.组内物品至少选一个:1.组内物品最多选一个:2.组内物品任意选.给出背包容量,求所能得到的最大价值. 注意 仔细审题,把样例好好看完了再答题,否则 ...

  4. RBF网络——核心思想:把向量从低维m映射到高维P,低维线性不可分的情况到高维就线性可分了

      RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近.时间序列分析.数据分类.模式识别.信息处理.图像处理. ...

  5. EOJ 2847 路由结点

    数学知识 凸N边形的对角线条数为:n(n-3)/2因为每一个交点对应两条对角线,而两条对角线又对应着一个四边形.于是焦点个数就对应四边形的个数.问题转化成由凸n边形的n个顶点取4个顶点可组成多少个四边 ...

  6. 基于Websocket的火拼俄罗斯(基础)

    传统的HTTP请求是由浏览器发起,然后呢服务端接收到请求之后呢返回一个数据.那么这样一次来回之后呢请求就断了.但是WebSocket它不一样,它同样是由浏览器去发起一个请求但是这个请求是一个WebSo ...

  7. 利用阿里云加速Docker For Windows

    1.进入阿里云的容器镜像服务,找到镜像中心的镜像加速器. https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2.进入Docker ...

  8. GObject调用父类函数

    最近在分析Gstreamer的代码时,发现GstPipeline中有如下代码: result = GST_ELEMENT_CLASS (parent_class)->change_state ( ...

  9. Redis五种数据类型及应用场景

    MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加 ...

  10. c# winform 获取listview 选中行某列的值

    给listview填充数据: for (int i = 0; i < 5; i++) { ListViewItem lvitem = new ListViewItem(); lvitem.Sub ...