Solr6之SolrCloud在Linux系统中部署

需求

  SolrCloud(solr )Solr 提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用 SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用 SolrCloud 来满足这些需求。 SolrCloud 是基于 Solr Zookeeper的分布式搜索方案,它的主要思想是使用 Zookeeper作为集群的配置信息中心。

特色:1)集中式的配置信息

          2)自动容错

          3)近实时搜索

          4)查询时自动负载均衡 


SolrCloud结构



1物理结构

三个Solr实例( 每个实例包括两个Core),组成一个SolrCloud

2逻辑结构

索引集合包括两个Shardshard1shard2),shard1shard2分别由三个Core组成,其中一个Leader两个ReplicationLeader是由zookeeper选举产生,zookeeper控制每个shard上三个Core的索引数据一致,解决高可用问题。

用户发起索引请求分别从shard1shard2上获取,解决高并发问题。

3名词解析

① collection

CollectionSolrCloud集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个Shard(分片),它们使用相同的配置信息。

比如:针对某搜索服务可以创建一个collection

 collection=shard1+shard2+....+shardX

② Core

每个CoreSolr中一个独立运行单位,提供索引和搜索服务。一个shard需要由一个Core或多个Core组成。由于collection由多个shard组成所以collection一般由多个core组成。

③ MasterSlave

Mastermaster-slave结构中的主结点(通常说主服务器),Slavemaster-slave结构中的从结点(通常说从服务器或备服务器)。同一个Shardmasterslave存储的数据是一致的,这是为了达到高可用目的。

④ Shard

Collection的逻辑分片。每个Shard被化成一个或者多个replication,通过选举确定哪个是Leader

4 架构分析

本文档是单机版的安装,所以采用伪集群的方式进行安装,如果是真正的生产环境,将伪集群的ip改下就可以了,步骤是一样的。如下图:



SolrCloud 配置(本文档为伪集群配置,生产环境下修改相应的IP地址即可)

1 安装jdk1.8ZookeeperJava编写的,所以启动需要有Java环境)


(一)Zookeeper集群搭建

1 复制三份zookeeper zookeeper-3.4.12.tar.gz

[root@ip-172-17-30-28 ~]# mkdir -p /usr/local/solr/solr-cloud

[root@ip-172-17-30-28 ~]# cp /root/zookeeper-3.4.6.tar.gz /usr/local/solr/solr-cloud/

[root@ip-172-17-30-28 ~]# cd /usr/local/solr/solr-cloud/

[root@ip-172-17-30-28 solr-cloud]# tar -zxvf zookeeper-3.4.6.tar.gz

[root@ip-172-17-30-28 solr-cloud]# mv zookeeper-3.4.6  zookeeper01

[root@ip-172-17-30-28 solr-cloud]# cp -r zookeeper01/ zookeeper02

[root@ip-172-17-30-28 solr-cloud]# cp -r zookeeper01/ zookeeper03

 

2 配置zookeeper

① 给每个zookeeper的解压目录创建data文件夹

[root@ip-172-17-30-28 solr-cloud]# mkdir /usr/local/solr/solr-cloud/zookeeper01/data

[root@ip-172-17-30-28 solr-cloud]# mkdir /usr/local/solr/solr-cloud/zookeeper02/data

[root@ip-172-17-30-28 solr-cloud]# mkdir /usr/local/solr/solr-cloud/zookeeper03/data

② 给每个zookeeper的解压目录创建myid文件,并分别写入1,2,3

 

[root@ip-172-17-30-28 ~]# touch /usr/local/solr/solr-cloud/zookeeper01/data/myid

[root@ip-172-17-30-28 ~]# echo 1 > /usr/local/solr/solr-cloud/zookeeper01/data/myid

[root@ip-172-17-30-28 ~]# touch /usr/local/solr/solr-cloud/zookeeper02/data/myid

[root@ip-172-17-30-28 ~]# echo 2 > /usr/local/solr/solr-cloud/zookeeper02/data/myid

[root@ip-172-17-30-28 ~]# touch /usr/local/solr/solr-cloud/zookeeper03/data/myid

[root@ip-172-17-30-28 ~]# echo 3 > /usr/local/solr/solr-cloud/zookeeper03/data/myid

 

 

③ 给每个zookeeper的配置文件改名

[root@ip-172-17-30-28 ~]# cd /usr/local/solr/solr-cloud/

[root@ip-172-17-30-28 solr-cloud]# mv zookeeper01/conf/zoo_sample.cfg zookeeper01/conf/zoo.cfg

[root@ip-172-17-30-28 solr-cloud]# mv zookeeper02/conf/zoo_sample.cfg zookeeper02/conf/zoo.cfg

[root@ip-172-17-30-28 solr-cloud]# mv zookeeper03/conf/zoo_sample.cfg zookeeper03/conf/zoo.cfg

④ 修改每个zookeeper的配置文件

[root@ip-172-17-30-28 solr-cloud]# vim /usr/local/solr/solr-cloud/zookeeper01/conf/zoo.cfg

[root@ip-172-17-30-28 solr-cloud]# vim /usr/local/solr/solr-cloud/zookeeper02/conf/zoo.cfg

[root@ip-172-17-30-28 solr-cloud]# vim /usr/local/solr/solr-cloud/zookeeper03/conf/zoo.cfg

修改dataDir和端口号

底部加上:

server.1=192.168.220.229:2881:3881

server.2=192.168.220.229:2882:3882

server.3=192.168.220.229:2883:3883



3启动zookeeper

[root@ip-172-17-30-28 solr-cloud] # zookeeper01/bin/zkServer.sh start

JMX enabled by default

Using config: /usr/local/solr/solr-cloud/zookeeper01/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

[root@ip-172-17-30-28 solr-cloud] # zookeeper02/bin/zkServer.sh start

JMX enabled by default

Using config: /usr/local/solr/solr-cloud/zookeeper02/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

[root@ip-172-17-30-28 solr-cloud] # zookeeper03/bin/zkServer.sh start

JMX enabled by default

Using config: /usr/local/solr/solr-cloud/zookeeper03/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

查看状态

[root@ip-172-17-30-28 solr-cloud] # ./zookeeper01/bin/zkServer.sh status  

JMX enabled by default

Using config: /usr/local/solr/solr-cloud/zookeeper01/bin/../conf/zoo.cfg

Mode: follower

[root@ip-172-17-30-28 solr-cloud] # ./zookeeper02/bin/zkServer.sh status

JMX enabled by default

Using config: /usr/local/solr/solr-cloud/zookeeper02/bin/../conf/zoo.cfg

Mode: leader

[root@ip-172-17-30-28 solr-cloud] # ./zookeeper03/bin/zkServer.sh status

JMX enabled by default

Using config: /usr/local/solr/solr-cloud/zookeeper03/bin/../conf/zoo.cfg

Mode: follower

(二)搭建单机版solr服务

1 安装Tomcatapache-tomcat-8.5.31.tar.gz

 

2安装solr单机版

① 上传solr

solr-6.6.4.tgz

② 移动solr

[root@ip-172-17-30-28 ~]# mv solr-6.6.4.tgz /usr/local/solr/

③ 解压solr

[root@ip-172-17-30-28 ~]# cd /usr/local/solr/

[root@ip-172-17-30-28 solr]# tar -zxf solr-6.6.4.tgz

④ solr部署到Tomcat

1. 复制Tomcat并删除webapps内所有文件,创建ROOT目录

[root@ip-172-17-30-28 example]# cd /usr/local/solr/tomcat/webapps/

[root@ip-172-17-30-28 webapps]# rm -rf *

[root@ip-172-17-30-28 webapps]# mkdir ROOT

 

2. 部署solr工程Tomcat

tomcatwebapps下创建个solr文件夹

[root@ip-172-17-30-28 solr]# cp /usr/local/solr/solr-6.6.4/server/solr-webapp/webapp/*  .

3. 把solr-6.6.4/server/lib/ext目录下的所有的jar包,添加到solr工程中

[root@ip-172-17-30-28 ROOT]# cd /usr/local/solr/solr-6.6.4/server/lib/ext/

[root@ip-172-17-30-28 ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/

⑤ 创建solrhome

solr-6.6.4/server/solr目录就是一个solrhome。复制此目录到/usr/local/solr/solrhome

[root@ip-172-17-30-28 ext]# cd /usr/local/solr/solr-6.6.4/server/

[root@ip-172-17-30-28 example]# cp -r solr /usr/local/solr/solrhome

 

⑥ 准备自己的业务域

根据业务需求,修改自己的solrcore的配置文件的业务域等等。如下图:



(三)solr集群搭建

solr的集群应该有4solr服务

1solrhome复制到solr-cloud目录下,复制四份。

[root@ip-172-17-30-28 example]# cd /usr/local/solr/

[root@ip-172-17-30-28 solr]# mkdir solr-cloud/

[root@ip-172-17-30-28 solr]# cp -r solrhome/ solr-cloud/solrhome01

[root@ip-172-17-30-28 solr]# cp -r solrhome/ solr-cloud/solrhome02

[root@ip-172-17-30-28 solr]# cp -r solrhome/ solr-cloud/solrhome03

[root@ip-172-17-30-28 solr]# cp -r solrhome/ solr-cloud/solrhome04

2安装4Tomcat,其实就是复制4Tomcat

[root@ip-172-17-30-28 solr]# cp -r tomcat/ solr-cloud/tomcat-solr01

[root@ip-172-17-30-28 solr]# cp -r tomcat/ solr-cloud/tomcat-solr02

[root@ip-172-17-30-28 solr]# cp -r tomcat/ solr-cloud/tomcat-solr03

[root@ip-172-17-30-28 solr]# cp -r tomcat/ solr-cloud/tomcat-solr04

3修改Tomcat端口号8081~8084

[root@ip-172-17-30-28 solr]# cd solr-cloud/

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr01/conf/server.xml

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr02/conf/server.xml

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr03/conf/server.xml

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr04/conf/server.xml

需要修改3个地方的端口号,

如下图第一个Tomcat为例,修改三个端口号8001,8081,8011,其他Tomcat类似






4修改每个Tomcatsolr服务的web.xml

4Tomcat都要修改为对应的solrhome

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr01/webapps/ROOT/WEB-INF/web.xml

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr02/webapps/ROOT/WEB-INF/web.xml

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr03/webapps/ROOT/WEB-INF/web.xml

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr04/webapps/ROOT/WEB-INF/web.xml

修改各自的solrhome

例如/usr/local/solr/solr-cloud/solrhome01



5修改4solrhome里面的solr.xml,设置运行的端口号

[root@ip-172-17-30-28 solr-cloud]# vim solrhome01/solr.xml

[root@ip-172-17-30-28 solr-cloud]# vim solrhome02/solr.xml

[root@ip-172-17-30-28 solr-cloud]# vim solrhome03/solr.xml

[root@ip-172-17-30-28 solr-cloud]# vim solrhome04/solr.xml

例如solrhome01需要修改为8081,其他类似



6把配置文件上传到zookeeper集群

进入/usr/local/solr/solr-6.6.4/server/scripts/cloud-scripts,执行命令

[root@ip-172-17-30-28 solr-cloud]# cd /usr/local/solr/solr-6.6.4/server/scripts/cloud-scripts

需要运行的以下命令,需要修改IP地址和修改solrcore的路径地址

[root@ip-172-17-30-28 cloud-scripts]# ./zkcli.sh -zkhost 192.168.220.229:2181,192.168.220.229:2182,192.168.220.229:2183 -cmd upconfig -confdir /usr/local/solr/solr-cloud/solrhome01/collection1/conf -confname myconf

注意:collection1solrCore

zookeeper是做配置文件的集中管理,

以上命令的作用是配置文件上传给zookeeperzookeeper管理配置文件

zookeeper把所有的solr集群的配置文件进行统一管理

7查看zookeeper中的配置文件

进入任意zookeeper,使用客户端进行查看

[root@ip-172-17-30-28 cloud-scripts]# cd /usr/local/solr/solr-cloud/zookeeper01/bin

[root@ip-172-17-30-28 bin]# ./zkCli.sh -server 192.168.220.229:2181

使用ls命令查看zookeeper配置信息

8设置zookeeper的地址给Tomcat

需要修改每个Tomcatbin/catalina.sh文件

[root@ip-172-17-30-28 bin]# cd /usr/local/solr/solr-cloud/

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr01/bin/catalina.sh

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr02/bin/catalina.sh

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr03/bin/catalina.sh

[root@ip-172-17-30-28 solr-cloud]# vim tomcat-solr04/bin/catalina.sh

例如Tomcat01,其他Tomcat都一样设置,添加JAVA_OPTS

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


9启动所有的Tomcat

[root@ip-172-17-30-28 solr-cloud]# ./tomcat-solr01/bin/startup.sh

[root@ip-172-17-30-28 solr-cloud]# ./tomcat-solr02/bin/startup.sh

[root@ip-172-17-30-28 solr-cloud]# ./tomcat-solr03/bin/startup.sh

[root@ip-172-17-30-28 solr-cloud]# ./tomcat-solr04/bin/startup.sh

10访问solr集群

访问任意一个solr集群的节点都可以

例如http://192.168.220.229:8081/solr/index.html

效果如下:


11集群分片

如果集群中有四个solr节点创建新集群collection2,将集群分为两片,每片一个副本。

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

响应如下:


效果如下:


12删除原来的solrcore



http://192.168.220.229:8081/solr/admin/collections?action=DELETE&name=collection1

响应如下:


效果如下:


 SolrCloud相关文档(重要

1. Collection API 
https://cwiki.apache.org/confluence/display/solr/Collections+API 

        里面还有其他相关的API,比如设置和增删tomcat副本数,我希望读者可以仔细查看文档,方便对集群的管理,这是最为集群的管理者最为基本的吧!这里就不再展开细说,希望读者可以自行整理,加深对sorlCloud的理解!

Add Replicahttp://localhost:8983/solr/admin/collections?action=ADDREPLICA&collection=test2&shard=shard2&node=172.17.30.88:8080_solr

Delete a Replicahttp://localhost:8983/solr/admin/collections?action=DELETEREPLICA&collection=test2&shard=shard2&replica=core_node3

Delete collection :

http://localhost:8983/solr/admin/collections?action=DELETE&name=newCollection

2. Solr内置jetty  集群

https://www.cnblogs.com/1315925303zxz/p/6372004.html?utm_source=itdadao&utm_medium=referral  


3.Solr6.3+tomcat8+zookeeper3.4.8+jdk搭建SolrCloud

https://blog.csdn.net/lyd8483789/article/details/71123805


4详细请参见相关文档SolrSolrCloud部署说明:

https://www.w3cschool.cn/solr_doc/solr_doc-7yp92gzc.html


solr的配置参数:

制定Xmx Xms 参数调整heap 的大小在solr/bin/solr.in.sh文件中,修改相应参数,如:
SOLR_HEAP="512m"
SOLR_JAVA_MEM="-Xms512m -Xmx512m" 


猜你喜欢

转载自blog.csdn.net/weixin_42245930/article/details/80965453