Solr集群配置

x33g5p2x  于2021-12-20 转载在 其他  
字(3.6k)|赞(0)|评价(0)|浏览(591)

1  概述

Solr是以Lucene为基础实现的文本检索应用服务。而Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库。SolrCloud是基于Solr和Zookeeper的分布式搜索方案。当索引越来越大,一个单一的系统无法满足磁盘需求,查询速度缓慢,此时就需要分布式索引。在分布式索引中,原来的大索引,将会分成多个小索引,solr可以将这些小索引返回的结果合并,然后返回给客户端。

2 参数说明

集群包括以下参数:

Cluster集群:一组Solr节点,逻辑上作为一个单元进行管理,整个集群使用同一套Schema和SolrConfig

Node节点:一个运行Solr的JVM实例

Collection:在SolrCloud集群中逻辑意义上的完整的索引,常常被划分为一个或多个Shard。这些Shard使用相同的config set,如果Shard数超过一个,那么索引方案就是分布式索引。

Core:也就是Solr Core,一个Solr中包含一个或者多个SolrCore,每个Solr Core可以独立提供索引和查询功能,Solr Core额提出是为了增加管理灵活性和共用资源。SolrCloud中使用的配置是在Zookeeper中的,而传统的Solr Core的配置文件是在磁盘上的配置目录中。

Config Set:Solr Core提供服务必须的一组配置文件,每个Config Set有一个名字。必须包含solrconfig.xml和schema.xml,初次之外,依据这两个文件的配置内容,可能还需要包含其他文件。ConfigSet存储在Zookeeper中,可以重新上传或者使用upconfig命令进行更新,可以用Solr的启动参数bootstrap_confdir进行初始化或者更新。

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

Replica:Shard的一个拷贝。每个Replica存在于Solr的一个Core中。

Leader:赢得选举的Shard replicas,每个Shard有多个replicas,这几个Replicas需要选举确定一个Leader。选举可以发生在任何时间。当进行索引操作时,SolrCloud将索引操作请求传到此Shard对应的leader,leader再分发它们到全部Shard的replicas。

3 逻辑视图

4  集群配置

4.1 下载

Solr下载:http://archive.apache.org/dist/lucene/solr/

Tomcat下载:http://tomcat.apache.org/

Zookeeper下载:http://www.apache.org/dyn/closer.cgi/zookeeper/

4.2 配置

该集群配置是在单机配置的基础上进行的,solr的一些基础配置这里就不做具体说明了,只记录集群需要的配置,

关于tomcat单机配置可以参考:http://blog.csdn.net/vtopqx/article/details/76165305

操作的是windows下solr集群配置,Linux下配置也是类似的。

数量1:zookeeper

数量3:solr

数量3:tomcat(需要tomcat8以上版本)

Zookeeper没有做集群,采用单机Zookeeper进行管理solr

目录如下:

4.2.1   Solr配置

1、修改Solr的web.xml引用路径

进入:G:\solr_cloud\tomcat1\webapps\solr\WEB-INF

修改web.xml,去掉<env-entry>注释,配置相应solr_home路径;

分别对剩下的tomcatX下solr都进行相应solr_home路径配置。

2、修改solr_home下solr.xml配置tomcat端口路径

进入:G:\solr_cloud\solr_home1\solr

修改solr.xml,分别修改为相应的端口和ip,

分别对剩下的solr_home进行tomcat对应配置。

4.2.2   tomcat配置

配置tomcat连接zookeeper

进入tomcat目录:G:\solr_cloud\tomcat1\bin 修改catalina.bat

先设置leader节点,新增

setJAVA_OPTS=-Dbootstrap_confdir=G:\solr_cloud\solr_home1\solr\test_core\conf-Dcollection.configName=clustercore -DzkRun -DzkHost=localhost:2181-DnumShards=2

如下图:

分别对剩下的tomcat进行非leader配置:

set JAVA_OPTS=-DzkRun-DzkHost=localhost:2181 -DnumShards=2

其中-DzkHost=localhost:2181为zookeeper默认端口连接

参数说明:

  • -Dbootstrap_confdir ZooKeeper需要准备一份集群配置的副本,这个参数是告诉SolrCloud这些配置是放在哪里,同时作为整个集群共用的配置文件。
  • -Dcollection.configName 指定你的配置文件上传到zookeeper后的名字,建议和你所上传的核心名字一致,这样容易识别。
  • -DzkRun 在Solr中启动一个内嵌的zooKeeper服务器,该服务会管理集群的相关配置。
  • -DzkHost 跟上面参数的含义一样,允许配置一个ip和端口来指定用哪个Zookeeper服务器进行协调。
  • -DnumShards=2 配置需要把你的数据分开到多少个shard中
  • -Dbootstrap_conf=true 将会上传solr/home里面的所有数据到zookeeper的home/data目录,也就是所有的core将被集群管理。

4.2.3   zookeeper配置

1、 进入zookeeper根目录,创建data空文件夹;

2、 配置zoo.cfg

进入:G:\solr_cloud\zookeeper-3.4.8\conf

配置dataDir目录为上一步创建的data目录路径

4.2.4   启动服务

1、 先启动zookeeper服务:

进入G:\solr_cloud\zookeeper-3.4.8\bin

启动:zkServer.cmd

2、 依次启动tomcat

进入tomcat\bin

启动:startup.bat

成功启动各个服务后,登录http://localhost:8080/solr/admin.html, 或者登录其他tomcat端口也可以,

可以看到Cloud已经部署成功了,在live_nodes下有三个solr节点

4.2.5   创建core

启动服务之后在平台页面,打开Graph关系图界面查看还是空的,那是因为Solr实例中还没有创建Core,所以在这不显示(PS:当初我在部署的时候出现这情况纠结了很久,为什么不出现关系图,网上各种找资料,基本上没有人遇到过…后面巧合之下创建了core就可以有关系图出来了)

打开Core Amin进行创建Core,所创建的Core将存放在tomat所对应的solr_home下,

插一个可能遇到的问题,

如果刚创建完Core之后马上去Query查询数据,会遇到错误,提示 No Servers hosting shard:shardX,

这是因为之前我们配置的时候设置了-DnumShards=2,所以单是创建一台机的Core是无法查询的,

因此:

分别访问剩下的tomcat页面并创建Core,注意Core的名称需要一致

http://localhost:8081/solr/admin.html

http://localhost:8082/solr/admin.html

创建完成后,再次刷新页面查看Graph关系图,可以看到三台机均已关联上。同时查询数据也可以查询出来了。

4.3     测试

所谓测试,这里主要进行下简单测试:

4.3.1   测试数据

随便登录一台机器Solr,

比如:http://localhost:8080/solr/admin.html

登录之后,添加数据

在任意一台机器上往core添加数据后,到其他其他机器上均可以查看到数据。

4.3.2   测试宕机

主要测试下把机器下线或者关闭,看zookeeper的切换情况:

1、试着把8080的tomcat机器关闭,关闭之后,刷新界面可以看到集群关系图中,已经变成了灰色,同时将8082自动替换成leader,同时查看8082的tomcat日志可以看到有替换信息:

2、将8080重新启动,可以看到之前8082已经变成leader了,所以8080启动后只是作为Replica从机的角色,如下图:

至此Solr集群配置完毕,上面只是做了简单的一些测试,后续将对一些参数及术语进行记录。

上一篇:Solr安装配置

相关文章