首页 > 代码库 > windows环境下solrcloud的配置安装(单机模拟多服务器)

windows环境下solrcloud的配置安装(单机模拟多服务器)

 
 
本文是在单机环境下模拟集群环境,进行solrcloud的配置安装。
-------------------------------------------
所用环境及软件:
------------------------------------------
    1. Windows 7 64bit:
    2. Jdk v1.7
    3. Tomcat v7.0.20 下载地址: http://tomcat.apache.org/
    4. Zookeepr v3.4.6 下载地址: http://zookeeper.apache.org/releases.html 
    5.  Solr v4.7.0 下载地址: https://lucene.apache.org/solr/ 
 
-------------------------------------------------------------------------------------------------------------------------------------------------
zookeeper的集群安装
-------------------------------------------------------------------------------------------------------------------------------------------------
    1. 下载Zookeeper,解压之;
   2. 在D:\appservers\hadoop\zookeeper\zookeeperv3.4.6 建立如下目录:
        
        zookeeperA|zookeeperB|zookeeperC用于存放刚才解压过的zookeeper,将刚才解压过的zookpeer文件分别拷入这3个文件夹;
        
        zookeeperA_data|zookeeperB_data|zookeeperC_data 用于存放数据快照及日志文件,并在此文件夹下建立data和logs目录;
        
    3.以zookeeperA为例,配置zoo.cfg文件
        拷贝zookeeperA/conf/zoo_sample.cfg,并修改文件名为zoo.cfg;
        修改zoo.cfg文件(参见附件):
            tickTime=2000
            initLimit=10
            syncLimit=5
            dataDir=D:/appservers/hadoop/zookeeper/zookeeperv3.4.6/zookeeperA_data/data
            clientPort=2181
            server.1=127.0.0.1:2788:3788
            server.2=127.0.0.1:2888:3888
            server.3=127.0.0.1:2988:3988
            dataLogDir=D:/appservers/hadoop/zookeeper/zookeeperv3.4.6/zookeeperA_data/logs
        参数说明:
            tickTime:心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间

            initLimit:多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值
            clientPort:服务的监听端口,
            dataDir:用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里

                            (注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)
            dataLogDir:用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争
            syncLimit:多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃。
    4. 修改ZookeeperB和zookeeperB中的zoo.cfg文件:
         在ZookeeperB中clientPort=2281    
         在ZookeeperC中clientPort=2381    
    5. 创建myid文件:
         ZookeeperA:在ZookeeperA_data/data中创建myid文件,文件内容为1。
         ZookeeperB:在ZookeeperB_data/data中创建myid文件,文件内容为2。
         ZookeeperC:在ZookeeperC_data/data中创建myid文件,文件内容为3。
    6. 依次启动Zookeeper:
zookeeperAZookeeperA/bin/zkServer
zookeeperBZookeeperB/bin/zkServer
zookeeperCZookeeperC/bin/zkServer

        依次启动zookeeper,启动第一台zookeeper后,你可以观察bin下的zookeeper.out可以看到报错,connection refused,没有关系,

        zookeeper需要等待其他另个节点的加入,全部启动之后就正常了。
    7. 客户端连接zookeeper:(以ZookeeperA为例)
zookeeperAZookeeperA/bin/zkCli -server localhost:2181
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1]
        备注:执行ls /命令后,可能会显示如下目录和文件(此时还未做solrcloud配置,故只显示zookeeper),
        configs:保存上传的配置文件信息
        clusterstate.json:集群状态json
        aliases:别名json
        live_node:当solr服务器启动的时候,会注册到这里
        overseer:保存shard信息
        overseer_elect:节点选举
        collections:所有的collection
-----------------------------------------------------------------------------------------------------------------------------------------------
TomCat安装及配置
-----------------------------------------------------------------------------------------------------------------------------------------------
D:\appservers\apache-tomcat-7.0.20\apache-tomcat-7.0.20-test-solrcloud目录中,创建如下目录:
apache-tomcat-7.0.20-solrcloudA|apache-tomcat-7.0.20-solrcloudB|apache-tomcat-7.0.20-solrcloudC
1.创建solr.xml文件
    在<Tomcat.home>/conf/catalina/localhost目录下创建solr文件,文件内容为:
    <?xml version="1.0" encoding="utf-8"?>
    <Context docBase="../../../webapps/solr.war" debug="0" crossContext="true">
      <Environment name="solr/home" type="java.lang.String" value="D:/projects/search-engine/solrcloudv47/solrCloudA"     override="true"/>
    </Context>
    备注:
    apache-tomcat-7.0.20-solrcloudA:solr/home的value为D:/projects/search-engine/solrcloudv47/solrCloudA;
    apache-tomcat-7.0.20-solrcloudB:solr/home的value为D:/projects/search-engine/solrcloudv47/solrCloudB;
    apache-tomcat-7.0.20-solrcloudC:solr/home的value为D:/projects/search-engine/solrcloudv47/solrCloudc;
2. 修改<Tomcat.home>/conf/Server.xml文件中端口:
    apache-tomcat-7.0.20-solrcloudA:
        <Server port="7005" shutdown="SHUTDOWN">
        <Connector port="7080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="7443" />
        <Connector port="7009" protocol="AJP/1.3" redirectPort="7443" />    
     apache-tomcat-7.0.20-solrcloudB:
        <Server port="8005" shutdown="SHUTDOWN">
        <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
     apache-tomcat-7.0.20-solrcloudC:
        <Server port="9005" shutdown="SHUTDOWN">
        <Connector port="9080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="9443" />
        <Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
3.分别启动这3个tomcat,测试是否能成功启动。
-------------------------------------------------------------------------------------------------------------------------------------------------
solrcloud的安装及配置
-------------------------------------------------------------------------------------------------------------------------------------------------
1. 创建Solrcloud相关目录
    在D:\projects\search-engine\solrcloudv47下创建solrcloudA|solrcloudB|solrcloudC目录:
    以solrCloudA为例,在solrCloudA下创建collection1和lib目录,在collections1下建立conf和data目录,
    solrcloundB和solrCloudC也建立同样目录结构
    
2. solr基本配置:
    a) 下载的SOLR的压缩包解压缩,将solr-4.7.0\example\webapps\solr.war解开,
    b) 将solr-4.7.0\example\webapps\solr\WEB-INF\lib和solr-4.7.0\example\lib\ext中的jar文件
        拷贝到solr-4.7.0\example\webapps\solr\WEB-INF\lib中;
    c) 然后传到服务器的Tomcat下的webapps目录下。
    d) 将solr-4.7.0\example\webapps\solr\WEB-INF\lib和solr-4.7.0\example\lib\ext下面的jar文件都拷贝到指定目录solrcloudA/lib/中。
    e) 将solr-4.7.0\contrib目录下的jar文件拷贝到指定目录solrcloudA/lib/中。
    f) 将solr-4.7.0\dist目录下的jar文件拷贝到指定目录solrcloudA/lib/中。
3. 创建solr文件(参见附件):
    在<solr.home>下建立slor文件,如solrcloudA,则是在solrcloudA目录下建立,即:solrcloudA/solr.xml
    在solrcloudB和solrcloudC中也建立solr.xml文件。
    该文件中指定了ZooKeeper的相关配置,以及Solr Core的配置内容:
    <?xml version="1.0" encoding="UTF-8" ?>
    <solr persistent="true">
<cores defaultCoreName="collection1" host="${host:}" adminPath="/admin/cores"     zkClientTimeout="${zkClientTimeout:15000}" hostPort="8080" hostContext="${hostContext:solr}">
</cores>
    </solr>
    注意:hostPort在solrcloudA中为7080;在solrCloudB中为8080;在solrCloudC中为9080;
    这里,我们并没有配置任何的core元素,这个等到整个配置安装完成之后,通过SOLR提供的REST接口,来实现Collection以及Shard的创建,从而来更新这些配置文件。
 
------------------------------------------------------------------------------------------------------------------------------------------------
Zookeeper管理监控配置文件
------------------------------------------------------------------------------------------------------------------------------------------------
1、上solr配置文件到Zookeeper
    java -classpath .;D:/projects/search-engine/solrcloudv47/solrCloudA/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381 -confdir D:/projects/search-engine/solrcloudv47/solrCloudA/collection1/conf -confname testconf
2、把将上传到zookeeper上的配置文件和目标collection联系起来
    java -classpath .;D:/projects/search-engine/solrcloudv47/solrCloudA/lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection collection1 -confname testconf -zkhost 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381
    -confname 与第一个命令中的-confname一致
3、检查zookeeper上的存储情况:
    D:\appservers\hadoop\zookeeper\zookeeperv3.4.6\zookeeperA\bin>zkCli -server localhost:2181
    
     其中的命令为:ls /    ls /configs    ls /configs/testconf
-------------------------------------------------------------------------------------------------------------------------------------------------
Tomcat 配置修改
-------------------------------------------------------------------------------------------------------------------------------------------------
1、修改bin/catalina.bat
    分别在apache-tomcat-7.0.20-solrcloudA 
             apache-tomcat-7.0.20-solrcloudB
             apache-tomcat-7.0.20-solrcloudC中设置:
    set JAVA_OPTS=%JAVA_OPTS% -DzkHost=127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381
   
    这就是solr和zookeeper交互的地方。
2、启动Tomcat
      分别在apache-tomcat-7.0.20-solrcloudA 
              apache-tomcat-7.0.20-solrcloudB
              apache-tomcat-7.0.20-solrcloudC中启动 tomcat:
    bin/statup.bat
3、查看zookeeper中的数据状态
    D:\appservers\hadoop\zookeeper\zookeeperv3.4.6\zookeeperA\bin>zkCli -server localhost:2181
    ls /live_nodes 中可以看出存在3个活跃节点。
 
4、访问solr,多出Cloud菜单
6、创建collectoin、shard、replication
    http://localhost:7080/solr/admin/collections?action=CREATE&name=testcollection&numShards=3&replicationFactor=1
    参数说明:
    name                待创建Collection的名称
    numShards           分片的数量
    replicationFactor   复制副本的数量
    如果成功,响应内容如下:
    
7、查看zookeeper中的数据状态
    D:\appservers\hadoop\zookeeper\zookeeperv3.4.6\zookeeperA\bin>zkCli -server localhost:2181
    
8、访问solr
 
9、查看<solr.home>/solr.xml, solr.xml的内容已自动发生了变化
    D:\projects\search-engine\solrcloudv47\solrCloudA>type solr.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <solr persistent="true">
<cores defaultCoreName="collection1" host="${host:}" adminPath="/admin/cores" zkClientTimeout="${zkClientTimeout:15000}" hostPort="9080" hostContext="${hostContext:solr}">
        <core numShards="3" name="testcollection_shard3_replica1" instanceDir="testcollection_shard3_replica1" shard="shard3" collection="testcollection" coreNodeName="192.168.56.1:9080_solr_testcollection_shard3_replica1"/>
        </cores>
    </solr>
10、创建Replication
   创建shard3的replication
    http://localhost:8080/solr/admin/cores?action=CREATE&collection=testcollection&name=testcollection_shard3_replica2&shard=shard3
 
    http://localhost:9080/solr/admin/cores?action=CREATE&collection=testcollection&name=testcollection_shard3_replica3&shard=shard3
    
    创建Shard2的replication
    http://localhost:7080/solr/admin/cores?action=CREATE&collection=testcollection&name=testcollection_shard2_replica2&shard=shard2
 
   http://localhost:8080/solr/admin/cores?action=CREATE&collection=testcollection&name=testcollection_shard2_replica3&shard=shard2
    
    创建Shard1的replication
    http://localhost:7080/solr/admin/cores?action=CREATE&collection=testcollection&name=testcollection_shard1_replica2&shard=shard1
 
    http://localhost:9080/solr/admin/cores?action=CREATE&collection=testcollection&name=testcollection_shard1_replica3&shard=shard1
   
   
 
 
------------------------------------------------
索引数据
------------------------------------------------
cd D:\projects\framework_refrence\searchEngine\solr\solr-4.7.0\solr-4.7.0\example\exampledocs
java -Durl=http://localhost:7080/solr/testcollection/update -jar post.jar *.xml
 
 
备注:
----------------------
如果要修改solr的data目录的位置,可以在<solr.home>/conf目录下建立solrcore.properties文件,在
solrcore.properties文件中加入如下内容
solr.data.dir=/home/hadoop/applications/storage/cloud/data
---------------------- org.apache.solr.cloud.ZkCLI的使用--------------------------
查看命令帮助:
java -classpath .;D:/projects/search-engine/solrcloudv47/solrCloudA/lib/* org.apache.solr.cloud.ZkCLI -cmd help -zkhost 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381
删除已有configs:
java -classpath .;D:/projects/search-engine/solrcloudv47/solrCloudA/lib/* org.apache.solr.cloud.ZkCLI -cmd clear /configs -zkhost 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381
------------------------删除collectoin----------------------------------------------
http://localhost:7080/solr/admin/collections?action=DELETE&name=testcollection
----------------------------删除索引------------------------------------------------------------
http://localhost:8080/solr/testcollection/update?stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E&stream.contentType=text/xml;charset=utf-8&commit=true
 
参考:
solrcloud,tomcat,外部zookeeper配置详解
SolrCloud 4.3.1+Tomcat 7安装配置实践

 

附件列表

 

windows环境下solrcloud的配置安装(单机模拟多服务器)