zoukankan      html  css  js  c++  java
  • Apache SolrCloud安装

      1.介绍 

       SolrCloud通过ZooKeeper集群来进行协调,使一个索引进行分片,各个分片可以分布在不同的物理节点上,多个物理分片组成一个完成的索引Collection。SolrCloud自动支持Solr Replication,可以同时对分片进行复制,冗余存储。下面,我们基于Solr最新的4.4.0版本进行安装配置SolrCloud集群。

     2. 安装环境

    我使用的安装程序各版本如下:

    各个目录说明:

    • 所有的程序安装在/opt目录下,你可以依照你的实际情况下修改安装目录。
    • ZooKeeper的数据目录在/data/zookeeper/data
    • solr/home设置在/usr/local/solrhome

     3. 规划SolrCloud

    • 单一SolrCloud数据集合:product
    • ZooKeeper集群:3台
    • SolrCloud实例:3节点
    • 索引分片:3
    • 复制因子:2

       手动将3个索引分片(Shard)的复本(Replica)分布在3个SolrCloud节点上

    三个节点:

      • 192.168.137.101
      • 192.168.137.102
      • 192.168.137.103

    4. 安装ZooKeeper集群

    由于需要用到ZooKeeper,故我们先安装好ZooKeeper集群

    首先,再第一个节点上将zookeeper-3.3.6.zip解压到/opt目录:

    unzip zookeeper-3.3.6 -d /opt/

    创建zookeeper配置文件zookeeper-3.3.6/conf/zoo.cfg内容如下:

    # The number of milliseconds of each tick
    tickTime=2000
    # The number of ticks that the initial
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    dataDir=/data/zookeeper/data
    dataLogDir=/data/zookeeper/logs
    # the port at which the clients will connect
    clientPort=2181
    server.1=192.168.137.101:2888:3888
    server.2=192.168.137.102:2888:3888
    server.3=192.168.137.103:2888:3888

      zookeeper的数据目录指定在/data/zookeeper/data,日志文件指定目录/data/zookeeper/logs你也可以使用其他目录,通过下面命令进行创建该目录

       mkdir /data/zookeeper/data -p

      初始化myid,三个节点编号依次为1,2,3,在其余节点上分别执行命令

        echo "1" >/data/zookeeper/data/myid

      在第二个和第三个节点上依次重复上面的操作。这样第一个节点中myid内容为1,第二个节点为2,第三个节点为3。

      启动ZooKeeper集群,在每个节点上分别启动ZooKeeper服务:

       sh /opt/zookeeper-3.3.6/bin/zkServer.sh start

      可以查看ZooKeeper集群的状态,保证集群启动没有问题:

      [root@localhost ~]# sh /opt/zookeeper-3.3.6/bin/zkServer.sh status

      JMX enabled by default
      Using config: /opt/zookeeper-3.3.6/bin/../conf/zoo.cfg
      Mode: follower

     5. 安装Solr

     执行以下命令:

     tar zxvf apache-tomcat-7.0.47.tar.gz -C /opt/

     unzip solr-4.4.0.zip  -d /opt

     cd /opt
     chmod +x apache-tomcat-6.0.36/bin/*.sh

     cp solr-4.4.0/example/webapps/solr.war apache-tomcat-6.0.36/webapps/

      解压solr.war

      unzip solr.war -d solr

     cp solr-4.4.0/example/lib/ext/* apache-tomcat-6.0.36/webapps/solr/WEB-INF/lib/
     cp solr-4.4.0/example/resources/log4j.properties apache-tomcat-6.0.36/lib/
     将该节点的操作copy到其他节点

    6. ZooKeeper管理配置文件

    先将附件中的配置文件解压,然后拷贝到/usr/local/solrhome/core0/conf目录下(每个节点)

    1、 创建一个SolrCloud目录,并将solr的lib文件拷贝到这个目录:

    mkdir -p /usr/local/SolrCloud/solr-lib/
    cp apache-tomcat-7.0.47/webapps/solr/WEB-INF/lib/* /usr/local/SolrCloud/solr-lib/
     
    2、 通过bootstrap设置solrhome:
     
     java -classpath .:/usr/local/SolrCloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181 -cmd bootstrap -solrhome /usr/local/solrhome/
     
    3、SolrCloud是通过ZooKeeper集群来保证配置文件的变更及时同步到各个节点上,所以,需要将配置文件上传到ZooKeeper集群中:
     
    java -classpath .:/usr/local/SolrCloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181 -cmd upconfig -confdir /usr/local/solrhome/core0/conf -confname productconf

    说明:

    • zkhost指定ZooKeeper地址,逗号分割
    • /usr/local/solrhome/core0/conf目录下存在schema.xml和solrconfig.xml两个配置文件,你可以修改为你自己的目录。
    • productconf为在ZooKeeper上的配置文件名称。

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

    java -classpath .:/usr/local/SolrCloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181 -cmd linkconfig -collection product -confname productconf

    说明:

    • 创建的collection叫做product,并指定和productconf连接

    5、查看ZooKeeper上状态

    在任意一个节点的/opt目录下执行如下命令:

    [root@localhost opt]# zookeeper-3.3.6/bin/zkCli.sh
     
    [zk: localhost:2181(CONNECTED) 0] ls /
    [configs, zookeeper, clusterstate.json, aliases.json, live_nodes, overseer, collections, overseer_elect]
     
    [zk: localhost:2181(CONNECTED) 1] ls /configs
    [productconf]
     
    [zk: localhost:2181(CONNECTED) 1] ls /collections
    [product]
    查看/configs/collections目录均有值,说明配置文件已经上传到ZooKeeper上了,接下来启动solr

    7. Tomcat配置与启动

    1、修改每个节点上的tomcat配置文件,在环境变量中添加zkHost变量

    编辑apache-tomcat-6.0.36/bin/catalina.sh,添加如下代码:

    JAVA_OPTS='-Dsolr.solr.home=/usr/local/solrhome -DzkHost=192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181'

    /usr/local/solrhome/目录创建solr.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <solr persistent="true" sharedLib="lib">
        <cores adminPath="/admin/cores" zkClientTimeout="20000" hostPort="${jetty.port:8080}" hostContext="${hostContext:solr}"></cores>
    </solr>
     

    说明:

    • hostPort值应该和tomcat的端口保持一致
    • solr默认使用jetty服务器,端口默认为8983

    最后,在/opt目录下启动tomcat:

     sh apache-tomcat-7.0.47/bin/startup.sh  

     通过http://192.168.56.121:8080/solr/进行访问,界面提示There are no SolrCores running.,这是因为配置文件尚未配置solrcore。

    8. 创建Collection、Shard和Replication

    创建Collection及初始Shard

    直接通过REST接口来创建Collection,你也可以通过浏览器访问下面地址,如下所示:

    curl 'http://192.168.137.101:8080/solr/admin/collections?action=CREATE&name=product&numShards=3&replicationFactor=1'

    如果成功,会输出如下响应内容如图:

    上面链接中的几个参数的含义,说明如下:

    • name 待创建Collection的名称
    • numShards 分片的数量
    • replicationFactor 复制副本的数量

    可以通过Web管理页面,访问http://192.168.137.101:8080/solr/#/~cloud,查看SolrCloud集群的分片信息:

    实际上,我们从192.168.137.101节点可以看到,SOLR的配置文件内容,已经发生了变化,如下所示:

    同时,你还可以看另外两个节点上的solr.xml文件的变化。

    手动创建Replication

    下面对已经创建的初始分片进行复制。 shard1已经在192.168.137.102上,我们复制分片到192.168.56.101和192.168.56.103上,执行如下命令:

     
    结果如图:
    192.168.137.102上的shard1,在192.168.137.101节点上有1个副本,名称为product_shard1_replica_2,在192.168.137.103节点上有一个副本,名称为product_shard1_replica_3。也可以通过查看192.168.137.102和192.168.137.103上的目录变化,如下所示:

    你还可以对shard2和shard3添加副本。

    再次从192.168.137.101节点可以看到,SOLR的配置文件内容,又发生了变化,如下所示:

    到此为止,我们已经基于3个节点,配置完成了SolrCloud集群。

  • 相关阅读:
    SQLServer数据库自增长标识列的更新修改操作
    “~/Views/Login/Login.aspx”处的视图必须派生自 ViewPage、ViewPage<TModel>、ViewUserControl 或 ViewUserControl<TModel>。
    关于值类型与列类型不匹配,所需类型是 DataRow"的解决方案
    尝试为文件 F:visual studio 2010kbspaperCMSApp_DataProject.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。
    Django快速开发之投票系统
    super() 的入门使用
    [python]模块及包
    [转]大话后端开发的奇淫技巧大集合
    [.net 多线程]ThreadPool的安全机制
    [.net 多线程]Task
  • 原文地址:https://www.cnblogs.com/cora/p/4008313.html
Copyright © 2011-2022 走看看