`
haiziwoainixx
  • 浏览: 409244 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SolrCloud之搭建SolrCloud集群

 
阅读更多
搭建SOLRCLOUD集群

1.下载地址
    http://lucene.apache.org/solr/
 
2.运行demo 
 

(1)加压缩包并,将solr-4.9.0\example 文件件复制一份,cp -r example example2
(2)启动一个节点
cd example
java -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf -DzkRun -DnumShards=2 -jar start.jar
 
-DzkRun参数是启动一个嵌入式的Zookeeper服务器,它会作为solr服务器的一部分
-Dbootstrap_confdir参数是上传本地的配置文件上传到zookeeper中去,作为整个集群共用的配置文件
-DnumShards指定了集群的逻辑分组数目
(3)启动另一个节点并加入Zookeeper集群
cd example2
java -Djetty.port=7574 -DzkHost=localhost:9983 -jar start.jar

-DzkHost=localhost:9983就是指明了Zookeeper集群所在位置
然后我们可以打开http://localhost:8983/solr/collection1/admin/zookeeper.jsp 或者http://localhost:8983/solr/#/cloud看看目前集群的状态
(4)索引一些文档,
cd exampledocs
java -Durl=http://localhost:8983/solr/collection1/update -jar post.jar ipod_video.xml
java -Durl=http://localhost:8983/solr/collection1/update -jar post.jar monitor.xml
java -Durl=http://localhost:8983/solr/collection1/update -jar post.jar mem.xml
(5)这个集群现在就具备容错性了,你可以试着干掉一个Solr服务器,然后再发送查询请求。
但是尽管solr服务器可以容忍挂掉,但集群中只有一个zookeeper服务器来维护集群的状态信息,单点的存在即是不稳定的根源。
如果这个zookeeper服务器挂了,那么分布式查询还是可以工作的,因为每个solr服务器都会在内存中维护最近一次由zookeeper维护的集群状态信息,
但新的节点无法加入集群,集群的状态变化也不可知了。因此,为了解决这个问题,需要对Zookeeper服务器也设置一个集群,让其也具备高可用性和容错性。
有两种方式可选,一种是提供一个外部独立的Zookeeper集群,另一种是每个solr服务器都启动一个内嵌的Zookeeper服务器,再将这些Zookeeper服务器组成一个集群。
 我们这里用后一种做示例:
 
增加两个节点
cp -r example exampleB
cp -r example2 example2B
 
cd exampleB
java -Djetty.port=8900 -DzkHost=localhost:9983 -jar start.jar
 
cd example2B
java -Djetty.port=7500 -DzkHost=localhost:9983 -jar start.jar
 
现在这个demo就比较完善了,下图就是全部配置完成后的状态
 
 
 
 

 
3.部署单个solr
(1)把solr包下面example/solr目录下面所有的文件都拷贝到  solr_home 目录下面
         [root@HTML5 solrhome]# cp -r solr-4.9.0/example/solr/* ./ 
 
         把solr包下面的 dist/solr-4.7.2.war 拷到 /data/solr_home目录下面
         [root@HTML5 solrhome]# cp solr-4.9.0/dist/solr-4.9.0.war ./ 
         [root@HTML5 solrhome]# mv solr-4.9.0.war solr.war 
            

(2)在Tomcat的 conf/Catalina/localhost 目录下面增加一个文件 solr.xml,内容如下:

         <?xml version="1.0" encoding="UTF8" ?>
<Context docBase="/usr/local/solrhome/solr.war" debug="0" crossContext="false" >
   <Environment name="solr/home"
    type="java.lang.String"
    value="/usr/local/solrhome"
    override="true" />
</Context>

(3)启动tomcat,webapps 下边多了解压出来的solr文件夹
         进入solr/WEB-INF/ 下修改web.xml

  <!--

    <env-entry>

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

       <env-entry-value>/put/your/solr/home/here</env-entry-value>

       <env-entry-type>java.lang.String</env-entry-type>

    </env-entry>

   --> 

 改为 :

<env-entry>

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

       <env-entry-value>/usr/local/solrhome</env-entry-value>

       <env-entry-type>java.lang.String</env-entry-type>

    </env-entry>   
(4)复制example/lib/ext下所有jar包到tomcat 的lib下
         [root@HTML5 lib]# cp /usr/local/solrhome/solr-4.9.0/example/lib/ext/* ./
        复制example/resources/log4j.properties  到solr/WEB-INF/classes
(5)启动tomcat,访问http://192.168.66.99:8080/solr/ 无法打开,检查异常:
         严重: Exception starting filter SolrRequestFilter
java.lang.UnsupportedClassVersionError: org/apache/solr/servlet/SolrDispatchFilt
er : Unsupported major.minor version 51.0 (unable to load class org.apache.solr.
servlet.SolrDispatchFilter)
        原来是solr4.9版本是使用JDK1.7编译的,要求运行环境JDK也是1.7以上
        修改完成后启动,报错如下:
        [localhost-startStop-1] ERROR org.apache.solr.core.SolrCore – null:org.apa
che.solr.common.SolrException: Found multiple cores with the name [collection1],
 with instancedirs [/usr/local/solrhome/solr-4.9.0/example/example-schemaless/so
lr/collection1/] and [/usr/local/solrhome/solr-4.9.0/example/solr/collection1/]
 
原来我解压solr后的文件夹放到了solhome下,后来又复制了example/solr/下的文件到solhome,
solr启动时会到  solrhome下检查所有文件夹,并加载core配置,结果solrhome下有两个collection1 core
所以 Found multiple cores with the name [collection1],删除solr-4.9.0文件夹即可,再次重启成功运行!
至此单个solr启动完成
 
4.solrcloud集群配置(在一台虚拟机上测试,生产环境同理)
(1)复制3个tomcat,分别配置环境变量及端口,分别为 tomcat-1 端口:8080     tomcat-2 端口:9080      tomcat-3端口:7080
(2)复制solrhome 分别为solrhome-1  solrhome-2  solrhome-3 
         并分别修改下面solr.xml,如下:(生产环境中,多台服务器不需要该步骤,直接复制即可)
        <solr>
  <solrcloud>
    <str name="host">192.168.66.99</str> // admin界面地址
    <int name="hostPort">7080</int>  // admin界面地址端口
    <str name="hostContext">/solr</str> // admin界面地址工程名(即tomcat下solr解压出的工程名)
    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
  </solrcloud>
 
  <shardHandlerFactory name="shardHandlerFactory"
    class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:0}</int>
    <int name="connTimeout">${connTimeout:0}</int>
  </shardHandlerFactory>
 
</solr>
(3)进入各个tomcat/webapps/solr/WEB-INF/ 目录下修改web.xml,修改solrhome路径,参照上一节
(4)进入各个tomcat/conf/Catalina/localhost 目录下修改solr.xml,修改solrhome路径,参照上一节
(5)进入各个tomcat/bin下修改catalina.sh 加入以下参数:
        JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/usr/local/solr/solrhome-3 -DzkHost=127.0 .0.1:1181,127.0.0.1:2181,127.0.0.1:3181"
(6)上传配置文件到zookeeper集群中:
        java -classpath .:/usr/local/solr/solrhome-1/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:1181,127.0.0.1:2181,127.0.0.1:3181 -confdir /usr/local/solr/solrhome-1/conf  -confname solr-conf
        其中参数/usr/local/solr/solrhome-1/lib/可以自己创建,内容如下:
        复制tomcat/webapps/solr/WEB-INF/lib下所有jar包
        复制example/lib/ext下所有jar
        复制example/resources/log4j.properties
       zkhost 指明zookeeper集群地址
       confdir 指明配置文件目录 
       confname 配置文件名称
 
(7)将zookeeper中的配置文件与collection 联系起来(本步骤不清楚是否必须,待测试)
       java -classpath .:/usr/local/solr/solrhome-1/lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection core1 -confname solr-conf -zkhost 127.0.0.1:1181,127.0.0.1:2181,127.0.0.1:3181
(8)启动各个tomcat应用,集群配置完成! 使用任意一台应用都可以访问到控制台.           

 

分享到:
评论
1 楼 夜行侠 2016-09-01  
基于微博数据检测的Solr实战开发
课程观看地址:http://www.xuetuwuyou.com/course/145
课程出自学途无忧网:http://www.xuetuwuyou.com


solrcloud5.2.1+zookeeper一部精通
课程观看地址:http://www.xuetuwuyou.com/course/15


一、课程用到的软件
1.centos6.7
2.apache-tomcat-7.0.47
3.solr-5.5
4.zookeeper 3.4.6
5.eclipse-jee-neon-R-win32-x86_64

二、课程目标
在海量数据的情况下,传统的关系型数据库已经力不从心,快速检索已经成为了应用系统所必备的功能之一。本课程从实战角度出发,让学员能从实战中学习到:
1. 搜索引擎的原理及架构。
2. 掌握在大数据环境下经典检索算法。
3. 掌握如何使用solr实现系统快速检索目标。
4. 掌握solr在开发中常见的技术大坑与调优技术。

三、适用人群
开发人员、架构师、对分布式搜索引擎有兴趣的朋友。


四、课程内容介绍:

第1课、Solr简介与部署
    知识点:Solr基本概念以及应用的介绍、Solr单机版的搭建

第2课、Solr建库实战
    知识点:介绍managed-schame和solrConfig两大配置文件,并建立Solr库开始实操

第3课、Solr中文分词器与全量数据导入
    知识点:对比中文分词器IK与MMSeg4j的特点、Solr配置MMSeg4j中文分词器、把Mysql中的数据导入到Solr索引库上

第4课、Solr增量数据导入及新管理UI实战
    知识点:把Mysql的数据增量导入到Solr索引库上、对Solr5最新的UI进行全面介绍

第5课、Solr数据查询详解
    知识点:基于UI管理界面,实战Solr q查询、fq查询以及分页、高亮、Facet等高级特性的使用

第6课、Solrj编程实战之索引增删改
    知识点:基于Eclipse开发环境、搭建Solrj工程项目,对Solr的索引库的进行增、删、改的操作

第7课、Solrj编程实战之索引查询与分页
    知识点:基于Solrj实现q查询、fq查询以及分页查询的操作

第8课、Solrj编程实战之高亮与Facet
    知识点:基于Solrj实现高亮查询、Facet查询的操作

第9课、Solrj编程实战之设计模式
    知识点:基于前阶段所写的代码,发现代码中的不足,并使用单例模式、模块方法、回调方法的设计模式进行仿Spring Data的开发

第10课、Solr缓存与预热机制剖析
    知识点:从算法、应用场景以及实例的多个维度,剖析Solr中的四大缓存,并且站在SolrIndexSearcher的生命周期上解剖预热机制及其注意事项

第11课、Solr高级特性之近实时、实时检索
    知识点:从概念、原理以及实例的多个维度,剖析Solr近实时、实时检索

第12课、Solr高级特性之原子更新
    知识点:Solr在应用层面上对Lucene进行了封装,在Solr4之后提出了原子更新的新概念,从此在应用层面操作上方便我们进行索引更新

第13课、Solr高级特性之深度分页及性能调优
    知识点:Solr4的又一大特性,在面临海量据的情况下,占用更低的资源进行数据检索正是深度分页的一大亮点、后半节结合讲师的实际开发经验,分享Solr性能调优的策略

第14课、SolrCloud部署运维之集群搭建
    知识点:基于Centos、zookeeper环境下,搭建SolrCloud系统

第15课、SolrCloud部署运维之库管理
    知识点:SolrCloud的运维之道,从UI管理界面以及命令行的两个维度去剖析SolrCloud库的管理,包括库的新增、删除以及动态更新

第16课、SolrCloud部署运维之副本与扩容
    知识点:SolrCloud的运维之道,从UI管理界面以及命令行的两个维度去剖析SolrCloud分片的管理,包括分片的备份与库的扩容

第17课、中文分词器配置与使用Solrj操作SolrCloud
    知识点:配置中文分词器以及使用Solrj操作SolrCloud来实现增、删、改、查

第18课、项目介绍与环境搭建
    知识点:介绍项目的背景以及总体架构、突出Solr在实际项目中的角色。基于Maven搭建开发环境

第19课、框架代码开发之Spring集成Solrj之CRUD(maven版)
    知识点:Spring是一个JavaEE企业级框架,它很多主流的主件都进行集成支持。本节学习Spring与Solrj的集成,进行增、删、改、查操作

第20课、框架代码开发之Spring集成Solrj之(maven版)
    知识点:Spring是一个JavaEE企业级框架,它对很多主流的组件都进行集成支持。本节学习Spring与Solrj的集成,进行实时检索、高亮、深度分页、Facet查询操作

第21课、基于dom4j的导库组件开发(maven版)
    知识点:基于dom4j解析XML文件,并将数据批量高效导入到SolrCloud分布式索引库上进行检索分析

第22课、高级检索组件开发一
    知识点:基于SolrCloud实现高级检索,包括多条件查询、高亮、分页操作

第23课、高级检索组件开发二   
    知识点:基于SolrCloud实现高级检索,包括多条件查询、高亮、分页操作

第24课、相似匹配组件开发一
    知识点:基于SolrCloud实现相似性检索操作

第25课、相似匹配组件开发二
    知识点:基于SolrCloud实现相似性检索操作

第26课、课程总结与Solr6的展望
    知识点:课程大总结,并对最新版的Solr6进行亮点分析以及未来的展望

相关推荐

Global site tag (gtag.js) - Google Analytics