solr4.5集群环境搭建

来源:互联网 发布:521069新域名 编辑:程序博客网 时间:2024/06/14 01:12
这两天在搭建solr集群环境,刚开始在网上找资料,结果试了很久,自己都没弄成功,最后就直接去官网下载英文指导手册

      solr集群是通过Zookeeper进行管理的,而下载的solr中本身就已经内嵌的Zookeeper了,当然也可以独立开启Zookeeper,我是选择的采用内嵌的Zookeeper的方式

  1. 将solr-4.5.1/example/webapps/solr.war包发布到tomcat的webapps目录下发布
  2. 在tomcat/webapps/solr下新建一个solrhhome文件夹,然后将solr-4.5.1/example目录下的solr文件夹复制到solrhome目录下
  3. 配置tomcat/webapps/solr/WEB-INF下的web.xml文件,
    <env-entry><env-entry-name>solr/home</env-entry-name>
       <env-entry-value>E:/apache-tomcat-7.0.16/webapps/solr/solehome/solr配置solr/home,网上有很多种配置方法</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

       4.  同样在另外一台或者两台机器上重复以上的步骤

       5.  修改tomcat/bin/catalina.bat文件,假设我希望A机器作为Zookeeper的服务器,此机器的ip为192.168.1.100

           在文件第一行加上set JAVA_OPTS=-DzkRun -DnumShards=2 -Dbootstrap_confdir=E:/apache-tomcat-7.0.16/webapps/solr/solehome/solr/collection1/conf -Dcollection.configName=myconf

        其中-DzkRun代表运行开启内置Zookeeper,  -DnumShards=2代表两片分区

       6.接下来配置E:/apache-tomcat-7.0.16/webapps/solr/solehome/solr/solr.xml文件,内嵌的Zookeeper端口是solr端口+1000,

          <solrcloud>
    <str name="host">${host:}</str>
    <int name="hostPort">8080-此处修改为你的tomcat端口</int>
    <str name="hostContext">${hostContext:solr}</str>
    <int name="zkClientTimeout">${zkClientTimeout:15000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
  </solrcloud>

    7.接下来配置其它两台机器,很简单,首先再一次做第7步的工作,然后编辑tomcat/bin/catalina.bat文件,在第一行加上set JAVA_OPTS=-ZkHost=192.168.1.100:9080

     其中ip和端口都是Zookeeper服务器的Ip和端口 【set JAVA_OPTS=-DzkRun -DzkHost=localhost:9080】

   8.接下来首先启动Zookeeper所在的服务器,然后启动另外两台服务器,启动好之后,输入http://ip:port/solr/admin就可以看到cloud菜单,就可以看到你想看的了。。




SOLR复制模式,是一种在分布式环境下用于同步主从服务器的一种实现方式,因之前提到的基于rsync的SOLR不同方式部署成本过高,被SOLR1.4版本所替换,取而代之的就是基于HTTP协议的索引文件传输机制,该方式部署简单,只需配置一个文件即可。以下讲解具体操作步骤:
步骤分主服务器和从服务器,允许有多个从服务器,即从服务器的配置一样。

主服务器:
在solrConfig.xml中:
Xml代码  收藏代码

    <requestHandler name="/replication" class="solr.ReplicationHandler">  
             <lst name="master">  
                     <str name="replicateAfter">commit</str>  
                     <str name="confFiles">schema.xml,solrconfig_slave.xml:solrconfig.xml</str>  
                     <str name="commitReserveDuration">00:01:00</str>  
             </lst>  
     </requestHandler>  


说明:

    replicateAfter : SOLR会自行在以下操作行为发生后执行复制: 'commit', 'startup' 'optimize',这里我们选择commit , 即SOLR每一次接受到commit请求后,会执行复制策略。
    confFiles : 待分发的配置文件,solr 也会将主服务器上的字段配置文件:schema.xml和stopwords.txt,固排文件: elevate.xml同步到辅服务器上。
    commitReserveDuration: 每次commit之后,保留增量索引的周期时间,这里设置为5分钟。



从服务器:

Xml代码  收藏代码

       
    <requestHandler name="/replication" class="solr.ReplicationHandler">  
        <lst name="slave">  
            <str name="masterUrl">http://192.168.172.2:7100/solr/${solr.core.name}/replication</str>  
            <str name="pollInterval">00:08:00</str>  
            <!-- external 很容易有索引大小不对, 压缩文件损坏这2个问题, 导致复制无法进行, 且一直复制失败, 测试下来internal没任何问题 -->  
            <str name="compression">internal</str>  
            <str name="httpConnTimeout">1000</str>  
            <str name="httpReadTimeout">2000</str>  
        </lst>  
    </requestHandler>  


说明:

    masterUrl : 主服务器同步URL地址
    pollInterval:从服务器同步间隔,即每隔多长时间同步一次主服务器
    httpConnTimeout:设置连接超时(单位:毫秒)
    httpReadTimeout:如果设置同步索引文件过大,则应适当提高此值。(单位:毫秒)
    httpBasicAuthUser:验证用户名,需要和主服务器一致
    httpBasicAuthPassword:验证密码,需和主服务器一致
    compression:external or internal 使用SOLR自己的压缩算法或应用容器的


0 0