solr(六) 集群,solr集群

首先介绍一下系统架构:

前言

  随着用户的增多,空间和并发量越来越多,会导致一台solr服务器干不过了。这时候,就需要将solr集群以下。

威尼斯人线上娱乐 1

集群架构   

 威尼斯人线上娱乐 2

由多台服务器共同完成索引和搜索任务 

实现的思路是将索引数据进行shard(分片)
拆分,每个分片由多台的服务器共同完成。

当一个索引或搜索请求过来时会分别从不同的shard的服务器中操作索引。 

solrCloud需要
solr基于zookeeper部署,zookeeper是一个集群管理软件,solrCloud需要由多台服务器组成。由zookeeper来进行协调管理
,多个分片相加起来才是一个完成的索引库  

 

威尼斯人线上娱乐 3

 

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

 

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

zookeeper的集群:

  见 zookeeper集群

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

Solr集群搭建

一. 拷贝tomcat和solrhome

新建文件夹
solr-cloud。将之前solr单机版中的tomcat,solrhome拷贝到solr-cloud文件夹中。

威尼斯人线上娱乐 4

威尼斯人线上娱乐, 

二. tomcat修改

1.端口修改

在solr-cloud文件夹中, 执行以下命令:

vim ./tomcat1/conf/server.xml 

查询并修改其中的三个port:

1).

威尼斯人线上娱乐 5

 2).

威尼斯人线上娱乐 6

3).

威尼斯人线上娱乐 7

其他的tomcat分别修改port的第二个数值为相应数值即可,

如:8280/8209/8205,8380/8309/8305,8480/8409/8405。

  1. web.xml 修改

分别修改 webapps/solr/WEB-INF/web.xml文件 – 将solrhome和solr关联起来

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

tomcat2 -> /usr/java/solr-cloud/solrhome2

tomcat3 -> /usr/java/solr-cloud/solrhome3

tomcat4 -> /usr/java/solr-cloud/solrhome4

  1. catalina.sh修改

通过修改这里的JAVA_OPTS将tomcat和zookeeper关联起来。

分别修改tomcat/bin/catalina.sh文件

加入:

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

威尼斯人线上娱乐 8

 

三. solrhome修改

  1. solrhome1下面的solr.xml文件修改

威尼斯人线上娱乐 9

host为对应tomcat1部署的电脑ip,hostport为tomcat1修改后的端口号。

solrhome2(192.168.0.102, 8280)

solrhome3(192.168.0.102, 8380)

solrhome4(192.168.0.102, 8480)

 

  1. 上传solrhome/core1/conf目录

将conf目录上传到zookeeper中,由zookeeper统一管理配置文件。只需要上传任意一个solrhome中的配置就可以了。

切换到之前solr解压的目录中:/usr/java/solr/solr-6.6.2/server/scripts/cloud-scripts

执行以下命令:

./zkcli.sh -zkhost 192.168.0.102:2181,192.168.0.102:2182,192.168.0.102:2183 -cmd upconfig -confdir /usr/java/solr-cloud/solrhome1/core1/conf -confname myconf

执行完此命令后,可以进入zookeeper目录中验证一下是否成功。

在zookeeper1/bin目录下执行 ./zkCli.sh 命令查看zookeeper上的配置文件信息

威尼斯人线上娱乐 10

 

四. 启动tomcat

新建一个文件,来一键启动tomcat。

vim start-tomcat.sh

威尼斯人线上娱乐 11

修改文件权限

chmod u+x start-tomcat.sh

然后执行 ./start-tomcat.sh 命令。

威尼斯人线上娱乐 12

从这里并不能直观看到是否真的起来了。可以通过查看日志的方式,或者通过访问的方式。

tail -f /usr/java/solr-cloud/tomcat1/logs/catalina.out

OK,
到这里,终于能看到页面了。在浏览器中打开:http://localhost:8180/solr/index.html\#/

威尼斯人线上娱乐 13

菜单上多出来了一个cloud目录。

 

五.分片

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

在浏览器中直接访问以上地址.

如果报 org.apache.solr.handler.dataimport.DataImportHandler 错误, 则将
dataimport的jar包拷贝一份到tomcat/webapps/solr/WEB-INF/lib 中去.

威尼斯人线上娱乐 14

这时候, 再刷新solr/index.html页面看看

威尼斯人线上娱乐 15

你会发现,在core1下面,又多出一个core, 且是分片的. 以前只有一个主solr,
现在有两个主solr了.

core1现在我们不需要了, 可以删除掉. 那怎么删呢?

http://127.0.0.1:8180/solr/admin/collections?action=DELETE&name=core1

也是通过浏览器直接访问的方式.威尼斯人线上娱乐 16

再来看看index.html页面

威尼斯人线上娱乐 17

 

 core1被删除了.

 

http://www.bkjia.com/Javabc/1305338.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1305338.htmlTechArticlesolr(六) 集群,solr集群 前言
随着用户的增多,空间和并发量越来越多,会导致一台solr服务器干不过了。这时候,就需要将solr集群以下。…

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

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

 

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

威尼斯人线上娱乐 18

 

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

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

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

 

环境 准备:

1.JDK

2.tomcat

3.zookeeper

4.solr

 

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

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

 

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

威尼斯人线上娱乐 19

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

威尼斯人线上娱乐 20

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

威尼斯人线上娱乐 21

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

威尼斯人线上娱乐 22

* 修改zoo.cfg配置文件

威尼斯人线上娱乐 23

dataDir就指向当前zookeeper的data目录

clientPort保证zookeeper之间不冲突

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

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

威尼斯人线上娱乐 24

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

威尼斯人线上娱乐 25

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

威尼斯人线上娱乐 26

修改tomcat的端口号

网站地图xml地图