1 .概要SolrCloud(Solr云)是Solr提供的分布式搜索方案,ssdls在需要大规模、容错、分布式索引和搜索能力的情况下使用solrcloud。 如果索引数量大且经常并发搜索请求,则必须使用SolrCloud来满足这些需求。
SolrCloud是一种基于Solr和Zookeeper的分布式检索方案,其主要思想是使用Zookeeper作为集群的配置信息中心。
有几个特征功能。
1 )集中配置信息
2 )自动容错
3 )近实时搜索
4 )查询时自动负载均衡
2.solr集群的系统体系结构
2.1物理结构是几个Solr实例,每个实例包含两个核心,组成一个SolrCloud
2.1.1主服务器和备用服务器是主服务器结构中的主节点(通常为主服务器),而备用服务器是主服务器结构中的从服务器(通常为从服务器或备用服务器) master和slave在同一Shard上存储的数据是一致的,以实现高可用性。
2.1.2酷睿每个酷睿都是Solr中的独立运行单位,提供索引和检索服务。 一个shard必须由一个Core或多个Core组成。 因为collection由多个shard组成,所以collection一般由多个core组成。
2.2逻辑结构索引的集合由2个Shard (瓷砖)构成,瓷砖1和瓷砖2分别由3个Core构成,其中1个是Leader )主(2个是Replication ),Leader是zookeeper
用户的索引请求分别来自shard1和shard2,解决了高并发性问题
2.2.1 collection Collection是SolrCloud簇中逻辑意义上的完整索引结构。 它们通常被划分为使用相同配置信息的一个或多个Shard (分片)。
例如,可以为搜索产品信息创建collection。
collection=shard1shard2. shardx
2.2.2共享的逻辑平铺。 每个Shard都转换为一个或多个复制,选举将决定哪个是Leader。
3.solr集群的构建整体结构图如下。
Zookeeper作为集群管理工具:
1 )集群管理:容错、负载均衡
2 )个人资料集中管理
3 )集群入口:
主要实现zookeeper的高可用性需要构建zookeeper集群,推荐奇数节点,需要3台zookeeper服务器
构建solr群集需要7台服务器(构建伪分布式,建议使用1G以上的虚拟机内存) )。
需要三个zookeeper节点
需要四个tomcat节点
3.1配置准备1 ) zookeeper集群的配置
2 )将已部署solr的tomcat上传到Linux
3 )在Linux上创建文件夹/usr/clusor/solr,并创建四个Tomcat实例
4 )将本地solrhome上传到Linux
5 )在Linux上创建文件夹/usr/clusor/solrhomes,并复制四份solrhome
6 )修改每个solr的web.xml文件并将其与solrhome相关联
7 )更改每个tomcat的原始操作端口8005 8080 8009
8185 8180 8109
8285 8280 8209
8385 8380 8309
注意:
1. 8005端口:用于关闭tomcat服务器的端口
2. 8080端口:负责建立HTTP连接,用于通过浏览器访问tomcat服务器的web APP应用程序
3. 8009端口:您负责与其他HTTP服务器的连接,并且必须使用此连接器将tomcat与其他HTTP服务器集成。
3.2群集配置3.2.1修改Tomcat配置修改每个Tomcat实例的扩展笔目录中的catalina.sh文件。 将以下配置添加到catalina.sh文件(注释的Java _ opts=' $ Java _ opts-dorg.Apache.catalina.security.security listener.)
jva _ opts='-dzk host=192.168.25.13033602181、192.168.25.13033602182、192.168.25.13033602183 '图
注意: JAVA_OPTS是
是用来设置JVM相关运行参数的变量,此配置用于在tomcat启动时找到zookeeper集群。 3.2.2 配置SolrCloud相关在每个solrhome下都有一个solr.xml,把其中的IP及端口号配置好(是对应的tomcat的IP和端口号),如图:
1)solrhome1修改
第一个solr对应第一个tomcat,所以端口与主机配置第一个tomcat的主机地址与端口,配置如下:
2)solrhome2修改
第二个solr对应第一个tomcat,所以端口与主机配置第二个tomcat的主机地址与端口,配置如下:
3)solrhome3修改
第三个solr对应第一个tomcat,所以端口与主机配置第三个tomcat的主机地址与端口,配置如下:
4)solrhome4修改
第四个solr对应第一个tomcat,所以端口与主机配置第四个tomcat的主机地址与端口,配置如下:
3.2.3 配置文件的集中式管理——zookeeper管理配置让zookeeper统一管理配置文件,需要把solrhome下collection1/conf 目录上传到zookeeper。上传任意solrhome中的配置文件即可。
我们需要使用solr给我们提供的工具上传配置文件,工具地址为:solr/example/scripts/cloud-scripts/zkcli.sh,如图:
操作步骤:
1)将solr压缩文件上传到Linux服务器并解压,如图:
2)进入example/scripts/cloud-scripts/目录,可以看到solr的zookeeper连接工具zkcli.sh
3)执行如下命令:
./zkcli.sh -zkhost 192.168.25.130:2181,192.168.25.130:2182,192.168.25.130:2183 -cmd upconfig -confdir /usr/clusor/solrhomes/solrhome-1/collection1/conf -confname myconf出现如下提示表示上传成功
注意:执行命令前需要保证zookeeper集群处于启动状态中。
注意:命令解释
1. -zkhost:zookeeper地址列表
2. -cmd:表示命令
3. upconfig:表示上传配置
4. -cmd upconfig:表示指定命令upconfig上传配置文件
5. -confdir:表示配置文件目录,后面接配置文件具体地址
6. -confname:为配置起个名字
4)查看zook上的配置文件:使用zookeeper目录下的拉长的钢笔/zkCli.sh命令查看zookeeper上的配置文件
使用命令:./zkCli.sh,如图:
注意:
1. 如果默认端口不是2181,要是用连接命令server
./zkCli.sh -server 192.168.25.130:2181-server:指定IP地址,IP后面跟端口号
2. 退出使用命令quit
3.3 启动集群1)启动每个tomcat实例,solr集群自动就启动了
2)访问集群,在浏览器输入任意一个tomcat的url都可以,例如:http://192.168.25.130:8180/solor ,当界面出现如下图所示,表示集群启动成功
进入cloud,可以看到集群信息,如图:
这个collection1就是整个索引库
shard1表示分片,目前分片只有一个
黑色的ip代表leader
4. 项目连接集群在solrJ中提供了一个叫做CloudSolrServer的类,它是SolrServer的子类,用于连接solrCloud,它的构造参数就是zookeeper的地址列表,另外要求指定defaultCollection属性(默认的collection名称)。
这时候,只需要将之前的单机版的配置改成集群版的就可以了,配置如下所示:
5. 设置集群分片 5.1 创建新的Collection创建新的Collection进行分片处理,在浏览器输入以下地址,创建新的Collection
http://192.168.25.130:8180/solor/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2参数:
action:表示执行的动作
name:将被创建的集合的名字
numShards:集合创建时需要创建逻辑碎片的个数
replicationFactor:分片的副本数即从节点的总个数。
5.2 删除分片我们也可以删除新建的索引,例如:
http://192.168.25.130:8180/solor/admin/collections?action=DELETE&name=collection2