`
BradyZhu
  • 浏览: 258423 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SolrCloud简介和搭建指导

 
阅读更多

一、搜索集群架构简介

1.1整体功能描述

通过独立的zookeeper集群管理solrcloud集群。

Solrcloud集群负责索引的创建、查询、更新和删除操作。Solrcloud集群做sharding,每个sharding内做主从备份。

Search服务通过zookeeper集群获取solrcloud信息,向solrcloud提交用户信息索引请求,并向solrcloud提交用户信息搜索请求以完成用户信息的搜索。

Service服务对客户端提供搜索接口,给Search服务提供用户信息获取接口,同时从Search服务中查询获取用户信息。

1.2结构

二、zookeer集群配置

2.1下载并安装zookeeper

下载最新发布版本zookeeper-3.4.6,并解压。

建议3台以上奇数,参考:zookeeper过半则选举机制。

2.2配置zookeeper

需要配置zookeeper集群的服务器列表,同时指定本zookeeper服务器的ID。

2.2.1配置zookeeper集群服务器列表

在conf/zoo.cfg文件中配置zookeeper集群的服务器列表。

心跳时间默认2s

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/work/bin/zookeeper-3.4.6/data
dataLogDir=/home/work/bin/zookeeper-3.4.6/logs
clientPort=2181
server.1=host1:2888:3888
server.2=host2:2888:3888
server.3=host3:2888:3888


2.2.2配置zookeeper服务器日志

在conf/log4j.properties文件中配置日志文信息,指定日志文件路径。

log4j.rootLogger=info,console,file
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-ddHH:mm:ss} [%c]-[%p] %m%n
 
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=/data/logs/zookeeper/stdout.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-ddHH:mm:ss}[%c]-[%p] %m%n
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.DatePattern='.'yyyyMMdd
log4j.appender.file.encoding=UTF-8


2.2.3配置zookeeper服务器的标识

zookeeper服务器标识需要和zoo.cfg文件中定义的一致。

在data目录下创建myid文件,myid文件内容为服务器id,例如1。三个zookeeper服务器的id分别对应为1,2和3。

如果在zookeeper安装目录下没有data目录,则手动创建。

2.3启动zookeeper服务

使用bin目录下的脚本来管理zookeeper服务。

启动zookeeper服务命令:./zkServer.sh start

三、Solrcloud集群配置

3.1下载并安装solr(N台机器分别)

下载最新发布版本solr-4.10.3,并解压。

从dist/solr-4.10.3.war拷贝到web主目录下并解压。假定web主目录为/data/work/solr/。

将example/lib/ext/*.jar拷贝到/data/work/solr1/WEB-INF/lib目录下。

或者

git上面拉取鲁班solr项目,3台部署。

3.2配置solr日志文件

在WEB-INF目录下创建classes目录,在classes目中中修改log4j.properties文件。

log4j.properties日志文件内容:

log4j.rootLogger=info,console,file
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-ddHH:mm:ss}[%c]-[%p] %m%n
 
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-ddHH:mm:ss}[%c]-[%p] %m%n
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.DatePattern='.'yyyyMMdd
log4j.appender.file.encoding=UTF-8
 
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN
 
# set to INFO to enable infostream logmessages
log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF


3.3配置搜索服务

分别在三台机器上创建home目录/home/work/services/solrcloud/solrhome,用于放置跟solr有关的配置文件。

端口8080,保持和resin容器监听端口一致

<?xml version="1.0"encoding="UTF-8" ?>
<solr persistent="true"sharedLib="lib">
       <coresadminPath="/admin/cores" zkClientTimeout="20000"hostPort="8080" hostContext="solr"></cores>
</solr>


3.3.1上传solr的配置和关联Zookeeper

随机选中一台机器。

在其/home/work/services/solrcloud 下面新建solr-config solr-lib 目录


在solr-lib中

将solr WEB-INF/lib中的jar文件Copy到solrcloud/solr-lib文件目录中:

cp/home/work/services/solrcloud/solr/WEB-INF/lib/ /home/work/services/solrcloud/solr-lib/

在solr_config 中

新建collection(商品), goods/conf,在conf中配置对应的schema.xml ,solrconfig.xml

新建collection(搜索热词),hotword/conf,在conf中配置对应的schema.xml , solrconfig.xml

3.3.2配置搜索运行参数

通过bootstrap设置solrhome:

java -classpath.:/home/work/services/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhosthost1:2181,host2:2181,host3:2181 -cmd bootstrap -solrhome/home/work/services/solrcloud/solrhome/

SolrCloud是通过ZooKeeper集群来保证配置文件的变更及时同步到各个节点上,所以,需要将配置文件上传到ZooKeeper集群中-对应zk的config目录的子目录:

java -classpath.:/home/work/services/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhosthost1:2181,host2:2181,host3:2181 -cmd upconfig -confdir/home/work/services/solrcloud/solr-config/goods/conf -confname goods

java -classpath.:/home/work/services/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhosthost1:2181,host2:2181,host3:2181 -cmd upconfig -confdir/home/work/services/solrcloud/solr-config/hotword/conf -confname hotword


把配置文件和目标collection联系起来

java -classpath.:/home/work/services/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhosthost1:2181,host2:2181,host3:2181 -cmd linkconfig -collection goods -confnamegoods
java -classpath.:/home/work/services/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhosthost1:2181,host2:2181,host3:2181 -cmd linkconfig -collection hotword -confnamehotword


3.4配置resin

resin中需要指定web主目录,并且指定日志文件路径。

3.4.1配置resin启动文件

在resin/conf/resin.xml文件中配置resin启动参数。参考

<cluster id="solr">
        <root-directory>.</root-directory>
        <server-default>
            <http address="*" port="8080" />
            <jvm-arg>-DzkHost=host1:2181,host2:2181,host3:2181</jvm-arg>
            <jvm-arg>-Xmx1g</jvm-arg>
            <jvm-arg>-Xms1g</jvm-arg>
            <jvm-arg>-Xss256k</jvm-arg>
            <jvm-arg>-Xmn256m</jvm-arg>
            <jvm-arg>-XX:-UseParallelGC</jvm-arg>
            <jvm-arg>-XX:ParallelGCThreads=4</jvm-arg>
            <jvm-arg>-XX:PermSize=256m</jvm-arg>
        </server-default>
        <server id="solr" address="127.0.0.1" port="6083"/>
        <host id="" root-directory=".">
            <web-app id="/solr" root-directory="/home/work/services/solrcloud/solr" >
                <env-entry>
                    <env-entry-name>solr/home</env-entry-name>
                    <env-entry-type>java.lang.String</env-entry-type>
                    <env-entry-value>/home/work/services/solrcloud/solrhome</env-entry-value>
                </env-entry>
            </web-app>
            <stdout-log path='/home/work/log/solr/solr.stdout.log' rollover-period='1D' rollover-size='50mb' />
            <stderr-log path='/home/work/log/solr/solr.stderr.log' rollover-period='1D' rollover-size='50mb' />
        </host>
   </cluster>


其中特别要注意到有一段solr特有的配置,用来指定solr配置文件主目录。这里指定的solr配置文件主目录必须与之前配置的solr目录保持一致,否则会因为找不到solr配置导致solr服务启动失败。

<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>*</env-entry-value>
</env-entry>


3.4.3配置第一个solr服务器的resin启动脚本

在resin/conf/resin.xml文件中配置resin启动脚本,增加启动参数。

JAVA_OPTS="-Dbootstrap_confdir=/data/work/solr1/home/usercore/conf-Dcollection.configName=usercoreConf-DzkHost=10.221.144.87:2181,10.221.144.87:2182,10.221.144.87:2183-DnumShards=2"

这个启动参数中,需要指定zookeeper集群的地址,solr集群分片数量,solr配置文件主目录,以及在zookeeper集群中标记的配置名称。

修改后的启动脚本:

exec $JAVA_EXE $JAVA_OPTS -jar${RESIN_HOME}/lib/resin.jar $*

注意必须保证solr集群中的第一个solr服务器首先启动,然后其他solr集群中的其他服务器才能启动。否则整个solr集群可能启动失败。

3.4.4配置第二个及后续solr服务器的resin启动脚本

在resin/conf/resin.xml文件中配置resin启动脚本,增加启动参数。

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

或者在resin.xml中添加

这个启动参数中,只需要指定zookeeper集群的地址,其它信息将在solr服务器连接到zookeeper集群后自动获取。

修改后的启动脚本:

exec $JAVA_EXE $JAVA_OPTS -jar ${RESIN_HOME}/lib/resin.jar$*

3.5索引管理

solr服务器创建的索引默认保存在文档集合目录下的data目录/home/work/services/solrcloud/solrhome中。

复制或者删除索引仅需要删除这个data目录即可。

如果索引模式文件改变,例如增加或者删除字段后需要重建索引,重建之前必须删除data目录。

3.6管理solr控制台

登录solr服务器集群管理控制台http://host1:8080/solr。通过这个管理控制台可以对solr集群进行管理。

solr管理控制台建议不要对外网开放。

3.7配置集群参数

创建数据集(Collection)

curl 'http://host1:8080/solr/admin/collections?action=CREATE&name=goods&numShards=3&replicationFactor=2&maxShardsPerNode=3'<span style="font-size: 12px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span>

name:数据集名称

numShards:分片数

replicationFactor:每个分片的复本数

maxShardsPerNode:每个Solr服务器节点上最大分片数(Solr 4.2新增)

删除数据集:

curl 'http://host1:8080/solr/admin/collections?action=DELETE&name=goods'

分享到:
评论

相关推荐

    SolrCloud4.9.0+tomcat7+zookeeper-3.4.6搭建教程

    本文将指导读者在Windows操作系统下搭建SolrCloud单机伪集群环境,使用Tomcat作为Servlet容器,Zookeeper作为分布式应用程序协调服务。 SolrCloud的安装和配置 1. 首先,需要下载SolrCloud、Tomcat和Zookeeper的...

    solr搭建教程文档

    本教程将指导你在Win7环境下搭建一个单机版的伪分布式SolrCloud环境,利用Tomcat作为应用服务器,以及Zookeeper进行集群协调。 **一、软件工具箱** 1. **Tomcat-7.0.62**:作为Solr的容器,负责部署和运行Solr应用...

    利用Solr搭建你的搜索引擎

    文件列表中的“开源企业搜索引擎SOLR的应用教程.doc”可能提供了更深入的指导,包括实战案例、常见问题和解决方案。通过阅读这份文档,你将能更好地理解和应用Solr,构建自己的企业级搜索引擎。记得实践是掌握技术的...

    HADOOP快速入门及搭建集群环境

    本资源旨在指导读者快速入门HADOOP,并搭建集群环境,以便更好地进行大数据处理和分析。 1. HADOOP背景介绍 HADOOP是apache基金会下的开源项目,始于2005年,由Doug Cutting和Mike Cafarella开发。HADOOP的出现...

    cloudera search官网参考资料

    在**创建索引**时,首先需要**搭建SolrCloud**集群,这是通过启动多个Solr实例并使用ZooKeeper进行集群管理和协调。ZooKeeper是Apache Hadoop项目的一个关键组件,它提供了高可用性和一致性,确保在分布式环境中各个...

    赵丽娜 二个班1

    - **搭建Hadoop集群**:让学生了解Hadoop的部署和配置,理解分布式计算的基本原理。 - **熟悉相关工具**:包括Zookeeper、Hbase、SolrCloud,理解它们在大数据生态中的作用和使用方法。 - **编写Python网络爬虫**:...

    最新版linux solr-7.7.3.tgz

    如果需要处理大规模数据或构建高可用的搜索系统,可以利用SolrCloud搭建分布式集群。这需要配置Zookeeper以协调各个Solr节点,实现数据的自动分布和一致性。 6. **索引和查询**: 创建索引时,Solr支持多种数据...

    solr7官方文档

    文档的【描述】部分反复强调“solr 使用官方指南”,这意味着文档是权威的、官方认可的学习材料,包含了使用 Solr 进行搜索引擎搭建、部署、管理等操作的官方指导和最佳实践。 【标签】为 "solr",直接反映了文档...

    简历-javaEE软件工程师.doc

    * 熟练掌握 Hadoop1 和 Hadoop2.2 完全分布式集群的搭建和配置 * 熟悉 MapReduce、HDFS、YARN 的原理,熟悉分布式计算模型 * 熟悉 Linux 操作系统以及了解部分 Shell 脚本的应用 * 熟悉 Hive、Sqoop、Hbase、...

    高性能分布式搜索引擎Solr的研究与实现.pdf

    在本文中,SolrCloud(Solr的分布式实现)与Mongodb数据库的搭建是连接起来的。SolrCloud通过建立索引集群组,使用分布式架构来管理索引的创建和查询处理,提高了对数据库搜索功能的效率。 文章提到了Zookeeper在...

    solr cookbook

    总之,《Solr Cookbook》是一部集理论与实践于一身的优秀教程,无论是初学者还是有经验的开发者,都能从中获得有价值的指导和启发,从而更好地利用Apache Solr的强大功能,构建高效、可靠的搜索服务。

    Apache.Solr.3.1.Cookbook

    - **环境搭建**: 包括如何在不同操作系统上安装 Solr 和配置必要的环境变量。 - **Solr 的配置文件**: 如何理解 solrconfig.xml 和 schema.xml 文件的作用及其配置选项。 2. **数据导入** - **数据导入处理器**: ...

    基于分布式集群架构下的SSM电商购物平台设计.pdf

    另外,eGoBuy还使用了SolrCloud进行搜索服务的搭建,Solr是一个基于Lucene的开源搜索服务器,可以提供全文检索和搜索服务。对于集群管理,eGoBuy采用了Zookeeper进行服务的管理和协调,确保分布式环境中的一致性和...

    solr4.7+中文分词器IK Analyzer 2012FF_hf1

    2. **下载与解压**:指导用户如何下载 Solr 4.7 和 IK Analyzer 2012FF_hf1,并将它们解压到相应目录。 3. **配置修改**:说明如何在 Solr 的配置文件中引入 IK Analyzer,如修改 `schema.xml` 和 `solrconfig.xml`...

Global site tag (gtag.js) - Google Analytics