solrCloud+tomcat+zookeeper配置
   
  需要用到以下的软件:
  solr-4.10.3  zookeeper-3.4.6.tar.gz  apache-tomcat-7.0.57
   
  首先在/opt 目录下新建 solr_platform (mkdir solr_platform)
   
  进入 solr_platform (zookeeper solr tomcat 都安装在该目录中)
   
  一 zookeeper安装
    1 解压缩zookeeper ———— tar -zxvf zookeeper-3.4.6.tar.gz
    2 在solr_platform目录下新建zookeeper_data和zookeeper_log文件夹(如图1)所示
   
  图1
    3 修改配置:每台机器都复制conf下的zoo_sample.cfg为zoo.cfg,并在zoo.cfg删除以前的配置,加现如下配置
    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/opt/solr_platform/zookeeper_data
    dataLogDir=/opt/solr_platform/zookeeper_log
    clientPort=2181
    server.1=ip1:2888:3888
    #server.2=ip2:2889:3889
    #server.3=ip3:2890:3890
    注:其中ip1、ip2为机器的ip,添加前请确保每台机器的2888和3888端口没有被占用。(有多台机器,server.2,server.3就是其他机器的zookeeper)
   
  
    4 并且在zookeeper_data文件夹下新建myid文件,里面写一个1(文件没有后缀名,第二台机子myid文件里面写2,第三台写3以此内推)如(图2)所示
  
  图2
   
  二 solr安装
   
   1 首先在solr_platform目录下新建solr_home_1文件夹
   2 解压缩solr-4.10.3文件,将solr-4.10.3/example/solr所有的东西复制到 solr_home_1
   3 新建一个data-config.xml文件,添加如下内容:
   <?xml version="1.0" encoding="utf-8"?>   
  <dataConfig> 
   <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"   
     url="jdbc:mysql://192.168.7.154:3306/merchant"   
     user="wechatadmin"   
     password="portal!(!)cp"/> 
     <document> 
        <entity name="label" pk="id" query="select a.id as id,a.name as name from mer_label a">   
            <field column="id" name="id" />   
            <field column="name" name="name" />    
        </entity>
   </document>  
  </dataConfig>
  并将该文件放在/opt/solr_platform/solr_home_1/collection1/conf目录中 如(图3)所示
  
  (图3)
   
  4 修改/opt/solr_platform/solr_home_1/collection1/conf目录下的solrconfig.xml文件
  将如下内容  如(图4) (图5)所示
    <lib dir="${solr.install.dir:../../..}/contrib/extraction/lib" regex=".*\.jar" />
    <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-cell-\d.*\.jar" />
   
    <lib dir="${solr.install.dir:../../..}/contrib/clustering/lib/" regex=".*\.jar" />
    <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-clustering-\d.*\.jar" />
   
    <lib dir="${solr.install.dir:../../..}/contrib/langid/lib/" regex=".*\.jar" />
    <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-langid-\d.*\.jar" />
   
    <lib dir="${solr.install.dir:../../..}/contrib/velocity/lib" regex=".*\.jar" />
    <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-velocity-\d.*\.jar" />
    替换为:
    <lib dir="../../contrib/extraction/lib" regex=".*\.jar" />
   
    <lib dir="../../contrib/clustering/lib/" regex=".*\.jar" />
   
    <lib dir="../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
   
    <lib dir="../../contrib/langid/lib/" regex=".*\.jar" />
   
    <lib dir="../../contrib/velocity/lib" regex=".*\.jar" />
    <lib dir="../../dist/" regex=".*\.jar" />
  
  图4
  
  图5
    在 solrconfig.xml文件<requestHandler name="/select" class="solr.SearchHandler"> 这一行前添加
   <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">   
   <lst name="defaults">   
    <str name="config">data-config.xml</str>   
   </lst>   
  </requestHandler>
  如(图6)所示
  
  图6
   
  5将解压缩的solr-4.10.3目录下的dist文件夹和contrib都拷贝到/opt/solr_platform/solr_home_1下 如(图7)所示
  
  图7
   
  三 solr web端安装
  1解压tomcat7并其重命名为tomcat_1,将solr-4.10.3\dist目录下的solr-4.10.3.war文件解压到 /opt/solr_platform/tomcat_1/webapps下
  注:要手动解压
   
  2在/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF目录下新建classes文件夹
  复制solr-4.10.3\example\resources目录下的log4j.properties文件到 /opt/solr_platform/tomcat_1/webapps/classes下(图8所示)
  
  图8
   
  3复制solr-4.10.3\example\lib\ext下所有的jar文件到/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF/lib目录下 (图9所示)
  
  图9
  4复制solr-4.10.3\dist下的solr-dataimporthandler-4.10.3.jar,solr-dataimporthandler-extras-4.10.3.jar到/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF/lib目录下
  (图10)所示
  
  5添加一个mysql-connector-java-5.1.20-bin.jar到/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF/lib目录下(图11)所示
  
  图11
  6将/opt/solr_platform/tomcat_1/webapps/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>/opt/solr_platform/solr_home_1</env-entry-value> 
     <env-entry-type>java.lang.String</env-entry-type> 
  </env-entry> 
  如(图12,图13)所示
  
  图12
  
  图13
   
  四 复制/opt/solr_platform/solr_home_1/下的collection1文件夹重命名为:mycore
  (图14)所示
  
  图14
  1修改/opt/solr_platform/solr_home_1/mycore/conf下的data-config.xml为
  <?xml version="1.0" encoding="utf-8"?>   
  <dataConfig> 
   <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"   
     url="jdbc:mysql://192.168.7.154:3306/merchant"   
     user="wechatadmin"   
     password="portal!(!)cp"/> 
     <document> 
        <entity name="productname" query="select t.id,t.pro_name,t.label_name,CONVERT(t.audit_status,SIGNED) audit_status,CONVERT(t.publish_status,SIGNED) publish_status from mer_product t left join mer_black_user b  ON t.user_id = b.user_id WHERE b.ID IS  NULL AND t.audit_status IN (2, 4) AND t.publish_status = 1">   
            <field column="id" name="id" />   
            <field column="label_name" name="label_name" />   
               <field column="pro_name" name="pro_name" />
               <field column="publish_status" name="publish_status" />
               <field column="audit_status" name="audit_status" />
              
        </entity> 
   </document>  
  </dataConfig> 
  
   
  2在/opt/solr_platform/solr_home_1/mycore/conf下schema.xml文件添加
     <field name="pro_name" type="string" indexed="true" stored="true"/>
     <field name="label_name" type="string" indexed="true" stored="true"/> 
     <field name="publish_status" type="string" indexed="true" stored="true"/>
     <field name="audit_status" type="string" indexed="true" stored="true"/> 
   
  3修改/opt/solr_platform/solr_home_1下的solr.xml文件
  <solr>
      <cores adminPath="/admin/cores"  host="${host:}"  hostPort="${jetty.port:对应的tomcat端口号}" hostContext="${hostContext:solr}">
      <core name="collection1" instanceDir="collection1" />
        <core name="mycore" instanceDir="mycore" />
            <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
        <str name="urlScheme">${urlScheme:}</str>
      </shardHandlerFactory>
    </cores>
  </solr>
  五tomcat配置信息
   1修改/opt/solr_platform/tomcat_1/bin下的catalina.sh文件
   添加配置
   JAVA_OPTS="-Dsolr.solr.home=/opt/solr_platform/solr_home_1 -Dbootstrap_conf=true -Dcollection.configName=myconftt  -DnumShards=2 -DzkHost=zookeeper机器ip:2181"
   -DzkHost指向的是zookeeper的址,-Dsolr.solr.home指向的是solr的配置信息,-DnumShards是几个碎片
   
  六 将上面的tomcat整体复制一份重命名为tomcat_2,将solr_home_1整体复制一份重命名为solr_home_2
  1 修改/opt/solr_platform/tomcat_2/bin下的catalina.sh文件
  JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr_platform/solr_home_2  -DzkHost=zookeeper机器ip:2181"
   
  2 修改/opt/solr_platform/tomcat_2/webapps/solr/WEB-INF/web.xml文件
      <env-entry> 
     <env-entry-name>solr/home</env-entry-name> 
     <env-entry-value>/opt/solr_platform/solr_home_2</env-entry-value> 
     <env-entry-type>java.lang.String</env-entry-type> 
  </env-entry>
   
  七启动
  启动时,先启动zookeeper,(bin/zkServer.sh start)
  然后启动tomcat
  注:ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以上面日志前面部分的异常是可以忽略的。