Solr集群环境搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_28196435/article/details/86469660

在做网站内搜索的时候,我们往往不会直接调用数据库进行搜索,这样数据库的负担很大而且性能低下。我们可以选择solr作为搜索工具,其中solr支持数据库数据导入,中文分词,以及分布式集群。

当搜索并发不是很高,我们直接使用solr单机版就可以了,如学校和企业的门户网站等。

但是当需要大规模,容错和分布式索引时候,我们就需要使用solrCloud来满足需求。它有几个特点

  • 集中式的配置信息(借助zookeeper)
  • 自动容错
  • 近实时搜索
  • 查询时自动负载均衡

这里介绍一下伪集群solrCloud的搭建过程。

首先看一下真实环境下的搭建架构图

真实环境中需要7台服务器做分布式集群,这里由于条件限制,先在一台虚拟机上安装伪集群,在搭建集群solr的时候一般有一下三个步骤

  1. 安装zookeeper集群
  2. 创建4个tomcat实例,端口为6060、7070、8080、9090
  3. 使用单机版的solr作为集群的节点使用

具体操作步骤如下

1.首先创建solrcloud,然后拷贝四个tomcat,注意tomcat里面已经部署好了solr的war包

2.修改tomcat的server.xml配置文件,注意有三个端口都需要修改,比如8005,8080,8009,可以依次加减1000左右,如7005、7070、7009

3.复制solrCore文件夹,修改core.properties文件,将名字改为core(你当前项目的名字即可),然后复制4个solrHome,分别为solrHome1...

这样创建的solr集群就有两个实例,为solrCore和core,也可以省略该步骤。

cd /usr/local/solrHome
cp solrCore core -rf
cd core
vim core.properties

4.修改solr服务中指向solr索引的路径,在tomcat下的solr下的web.xml文件修改,四个tomcat都需要修改

<env-entry-value>/usr/local/solrcloud/solrHome1</env-entry-value>

5.配置 Tomcat 的 catalina.sh

Tomcat1:放入 catalina.sh 的第一行即可

JAVA_OPTS="$JAVA_OPTS -DzkHost=192.168.30.20:2181,192.168.30.20:2182,192.168.30.20:2183 -Dbootstrap_confdir=/usr/local/solrcloud/solrHome1/core/conf -Dcollection.configName=solr -DnumShards=2 -DreplicationFactor=2"

Tomcat2、Tomcat3、Tomcat4

JAVA_OPTS="$JAVA_OPTS -DzkHost=192.168.30.20:2181,192.168.30.20:2182,192.168.30.20:2183 -DnumShards=2 -DreplicationFactor=2"

6.在solrHome1下配置solr.xml文件

<solrcloud>
    <str name="host">${host:}</str>
    <int name="hostPort">${jetty.port:8080}</int>
    <str name="hostContext">${hostContext:solr}</str>
    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>

同理,编辑solrHome2,solrHome3和solrHome4的solr.xml文件

7.启动tomcat,开启防火墙,每次启动都要确定端口没有被占用,如果已经启动了tomcat先运行shutdown.sh然后再启动。

猜你喜欢

转载自blog.csdn.net/baidu_28196435/article/details/86469660