• tomcat7.0+zookeeper+solr5.0.0搭建solr集群


    solrCloud的搭建可以有两种方式:使用solr内嵌的jetty来搭建;使用外部web容器tomcat来搭建。对于使用jett来搭建参考solr官方的手册照着做就ok了,非常简单,下面我主要讲的是如何使用tomcat来搭建solrCloud。 因最新版本solr5.0.0较4.x版本文件结构上有一些变化,网上大多是以前版本的安装,特在此记录一下。

    准备工作

    solr5.0.0

    apache-tomcat-7.0.42

    zookeeper3.4.6

    1.搭建tomcat单机版solr

        可参照http://www.cnblogs.com/iiot/p/4408846.html

    a. 将solr-5.0.0/server/webapps/solr.war目录下的solr.war拷贝到/usr/apache-tomcat-7.0.42/webapps/下,启动tomcat解压“solr.war”

    b. 在/usr/apache-tomcat-7.0.42/webapps/solr/下新建文件夹solr_home(此处solr_home目录可以根据实际情况建立)

    c. 把solr解压目录中的"solr-5.0.0/server/solr"目录下的所有内容复制到solr_home中。(此处solr_home为  /usr/local/solr5.0.0/solr_cloud)

    d. 在solr_home中新建自己的conf。可以从configsets中复制一个出来,修改文件夹名称

    e. apache-tomcat-7.0.42-solr/webapps/solr/WEB-INF/classes目录下加入log4j.properties,打印日志记录

    2.安装配置zookeeper集群

    具体下载,安装,配置不详细说了,比较简单,网上一搜一大堆。只列出我的关键配置项,如下:

    clientPort=2181

    server.1=slave-01:12888:13888 #server.2=slave-02:12888:13888

    一般来讲zookeeper集群为奇数个,最少3个,来维持其稳定性,保证一个节点宕机不影响使用,因服务器资源问题,此处暂时只用1个

    3.安装配置solrcloud

    我们选择/usr/local/solr5.0.0/solr_cloud目录存放Solr的库文件和配置文件,该目录下有lib和device_values两个子目录。 lib下为jar文件,包括/server/lib/ext中的和war包里的jar,device_values里为conf文件 存储索引的目录,设置为/data/solr/dev_values(可以根据实际情况修改)

    将配置文件上传到ZooKeeper集群中

    java -classpath .:/usr/local/solr5.0.0/solr_cloud/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.0.177:2181 -confdir /usr/local/solr5.0.0/solr_cloud/device_values/conf -confname dev_values
    
    java -classpath .:/usr/local/solr5.0.0/solr_cloud/lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection dev_values -confname dev_values -zkhost 192.168.0.177:2181
    View Code


    修改solr.xml  新增zkHost节点,修改hostPort为tomcat的启动端口

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <solr>
    
      <solrcloud>
    
        <str name="host">${host:}</str>
        <!-- <int name="hostPort">${jetty.port:8983}</int>-->
        <int name="hostPort">8983</int>
        <str name="zkHost">192.168.0.177:2181</str>
        <str name="hostContext">${hostContext:solr}</str>
    
        <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
    
        <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
        <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
        <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
    
      </solrcloud>
    
      <shardHandlerFactory name="shardHandlerFactory"
        class="HttpShardHandlerFactory">
        <int name="socketTimeout">${socketTimeout:600000}</int>
        <int name="connTimeout">${connTimeout:60000}</int>
      </shardHandlerFactory>
    
    </solr>
    View Code


    在schema.xml中增加要索引的字段  uniqueKey根据实际情况修改  默认为id

       <field name="rowkey" type="string" indexed="true" stored="true" required="true" multiValued="false" />
       <field name="did" type="string" indexed="true" stored="true" multiValued="false"/>
       <field name="dvid" type="string" indexed="true" stored="true" multiValued="false"/>
       <field name="timestamp" type="string" indexed="true" stored="true" multiValued="false"/>
       <field name="value" type="string" indexed="true" stored="true" multiValued="false"/>
       <field name="model" type="string" indexed="true" stored="true" multiValued="false"/>
    
    
     <uniqueKey>rowkey</uniqueKey>

    修改日志路径及格式(如不想要日志,此步骤可以省略)

    默认情况下,solr的日志是瞬时的,tomcat重启后,就消失了。可以通过图形化界面http://ip:port/solr/#/~logging查看,在linux命令行下可以通过命令curl 'http://ip:port/solr/admin/info/logging?wt=json&since=0'获取。 生成持久日志的方法: apache-tomcat-7.0.42-solr/webapps/solr/WEB-INF/classes目录下加入log4j.properties,打印日志记录

    #  Logging level
    solr.log=/var/logs/solr
    log4j.rootLogger=INFO, file, CONSOLE
    
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x u2013 %m%n
    
    #- size rotation with log cleanup.
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.MaxFileSize=10MB
    log4j.appender.file.MaxBackupIndex=999
    
    #log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
    #log4j.appender.file.DatePattern = '.'yyyy-MM-dd
    
    
    #- File to log to and log format
    log4j.appender.file.File=${solr.log}/solr.log
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    #log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m
    
    log4j.appender.file.layout.ConversionPattern = 
    [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} %n%m%n
    
    log4j.logger.org.apache.zookeeper=WARN
    log4j.logger.org.apache.hadoop=WARN
    
    # set to INFO to enable infostream log messages
    log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF
    View Code

    官网参考链接:http://wiki.apache.org/solr/SolrLogging

    修改启动脚本

    在Tomcat的启动脚本bin/catalina.sh中,增加如下配置:

    JAVA_OPTS="$JAVA_OPTS -server -Xmx1024m -Xms256m -verbose:gc -Xloggc:solr_gc.log -Dbootstrap_confdir=/usr/local/solr5.0.0/solr_cloud/device_values/conf -DzkHost=192.168.0.177:2181"

    将solo5.0.0文件夹scp到其他服务器

    启动Tomcat服务器:

    cd servers/apache-tomcat-7.0.42 bin/catalina.sh start

    访问 http://192.168.0.177:8983/solr/#/  查看是否出现页面

    启动其它服务器的tomcate

    5、创建Collection、Shard和Replication

    两种方式

    a. 通过api接口创建

    http://192.168.0.177:8983/solr/admin/cores?action=CREATE&name=dev_values-shard1-replica1&instanceDir=/usr/local/solr5.0.0/solr_cloud/dev_values-shard1-replica1&dataDir=/data/solr/dev_values/dev_values-shard1-replica1&collection=dev_values&shard=shard1

    b. 通过管理页面创建

    此处注意:instancedir 一定要在solr_home目录中,否则重启时,会找不到core实例,导致cores启动失败

    创建3个分片,每个分片两个副本集,创建成功之后,查看如下

    c. 通过api接口删除

    http://192.168.0.177:8983/solr/admin/cores?action=UNLOAD&core=dev_values-shard1-replica1&deleteIndex=true&deleteDataDir=true&deleteInstanceDir=true

  • 相关阅读:
    Java代理(静态/动态 JDK,cglib)
    Java数据库基础(JDBC)
    Servlet基础(工作原理、生命周期)
    Java XML DOM解析(xPath)
    java 文件操作
    从源码看集合ArrayList
    全面理解java异常机制
    python3 利用pip安装ipython notebook
    Centos的一个find命令配合rm删除某天前的文件
    在Pandas中直接加载MongoDB的数据
  • 原文地址:https://www.cnblogs.com/iiot/p/4414798.html
Copyright © 2020-2023  润新知