首页 > 技术文章 > linux集群下 solr集群搭建

learnjfm 2017-09-18 18:42 原文

首先介绍一下系统架构:

 

* 这个图中代表的是三个solr实例,每个实例包括两个core,组成一个solrcloud

* 索引集合包括两个 shard(shard1和shard2),shard1和shard2分别由三个core组成,其中一个L eader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard上三个core的索引数据一致,解决高可用和高并发问题.

* Collection在solrcloud集群中是一个索引结构,被划分为一个或多个shard(分片),shard之前使用相同的配置;比如对于商品信息搜索可以创建一个collection,collection=shard1+shard2+.....+shardX

* Core提供索引和搜索服务,一个shard需要由一个或多个core组成,由于collection由多个shard组成,所以collection一般由多个core组成

* Master是master-slave结构中的主结点(通常说主服务器),Slave是master-slave结构中的从结点(通常说从服务器或备服务器)。同一个Shard下master和slave存储的数据是一致的,这是为了达到高可用目的。

 

下面这张图就是接下来要搭建的solr集群架构

 

需要实现zookeeper 高可用。需要搭建集群。建议是奇数节点。需要三个zookeeper服务器。

搭建solr集群需要7台服务器。

搭建伪分布式:需要三个zookeeper节点,需要四个tomcat节点.

 

环境 准备:

1.JDK

2.tomcat

3.zookeeper

4.solr

 

下面开始讲集群的详细步骤

这里省略jdk的安装,tomcat,solr,zookeeper的解压

 

*复制三份zookeeper解压后的文件到/usr/local/solr-cloud下

*在每一个zookeeper下创建一个data目录

*在每个zookeeper的data目录下创建一个myid文件,内容是每个实例的ID,分别为1,2.3

*把conf目录下的zoo_sample.cfg文件改名为zoo.cfg

* 修改zoo.cfg配置文件

dataDir就指向当前zookeeper的data目录

clientPort保证zookeeper之间不冲突

最后server.1=xxx的地方就是创建的myid文件指向的id

*创建快捷启动方式,名为start-zookeeper-all.sh,启动每一个zookeeper

在启动之前先修改启动文件的权限

*创建四个tomcat实例,每个tomcat运行在不同的端口:8180、8280、8380、8480

修改tomcat的端口号

修改端口号(一共三个地方)

 

 每个tomcat都要改

*部署solr的war包到每个tomcat的webapps下面(我用的是solr的文件夹,tomcat启动后解压的solr.war文件)

为每个solr实例创建solrhome,solrhome的来源参考(linux部署solr)

*把solrhome关联起来

修改solrhome里面的solr.xml文件

host代表当前节点

hostpart代表这个solrhome对应的tomcat的端口号

*关联每一个solr和solrhome

修改每一个tomcat下solr项目里面的web.xml

将solrhome关联

*zookeeper集中管理配置文件,所以这一步是上传配置文件

进入解压的solr.tar.gz文件夹找到zkcli.sh文件

使用工具上传配置文件

执行下面的命令:

./zkcli.sh -zkhost 192.168.25.133:2181,192.168.25.133:2182,192.168.25.133:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf

然后在zookeeper01里面的bin目录下有zkCli.sh文件,启动这个文件,输入一下命令可以看到

那个就是我们刚刚上传的文件

 

*接下来就关联solr和zookeeper的关系

修改tomcat01下面的 catalina.sh

加入初始化配置:

四个tomcat都要加

*启动这个四个tomcat,保证zookeeper集群是启动状态

编写一个启动tomcat的程序

修改查询权限

启动tomcat:

在浏览器中访问报错:

HTTP Status 503 - Server is shutting down or failed to initialize

发现是catalina.sh中的初始化参数配置出错了,

修改:

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

重新启动,访问:

 

 看见这个就代表成功了一半了

 

因为collection1是单片的,没有我们所说的高用性,所以删除这个,创建新的Collection进行分片处理。

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

第十一步:删除不用的Collection。

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

 这是没删除之前

 这才代表成功

 

推荐阅读