服务器搭建(五)solr集群

搜索系统搭建

搜索功能需要发布服务共pc端、移动端使用。根据关键词搜索,得到json格式的搜索结果。
创建一个搜索系统,发布搜索服务。

Solr服务的搭建

第一步:安装jdk、安装tomcat,复制一份tomcat到/usr/local/solr/目录下
cp -r apache-tomcat-7.0.47 /usr/local/solr
mv apache-tomcat-7.0.47 tomcat

第二步:解压solr压缩包。
tar -zxf solr-4.10.3.tgz.tgz
mv solr-4.10.3 /usr/local

第三步:把dist/solr-4.10.3.war部署到tomcat

第四步:解压缩war包。启动tomcat解压。

第五步:需要把/usr/local/solr-4.10.3/example/lib/ext目录下的所有的jar包添加到solr工程中。

第六步:创建solrhome。先在/usr/local下创建一个solr目录,
cd /usr/local ->  mkdir solr
然后把/usr/local/solr-4.10.3/example/solr文件夹复制一份作为solrhome。
cp -r /usr/local/solr-4.10.3/example/solr /usr/local/solr/home

第七步:告诉solr服务solrhome的位置。需要修改web.xml
修改/usr/local/solr/tomcat/webapps/solr/WEB-INF/web.xml中的:
<env-entry>
   <env-entry-name>solr/home</env-entry-name>
   <env-entry-value>/usr/local/solr/solrhome</env-entry-value>
   <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

solr集群

第一步,安装4个tomcat到solr-cloud目录下,修改端口号分别为9001,9002,9003,9004

第二步,将solr分别部署到4个tomcat下,把单机版的solr复制到solr-cloud的tomcat/webapps下就可以了。

第三步,为每一个solr实例创建一个solrhome,修改
/usr/local/solr-cloud/tomcat01/webapps/solr/WEB-INF/下的web.xml

   <env-entry>
   <env-entry-name>solr/home</env-entry-name>
   <env-entry-value>/usr/local/solr-cloud/solrhome01</env-entry-value>
   <env-entry-type>java.lang.String</env-entry-type>
      </env-entry>

第四步,修改每个/usr/local/solr-cloud/solrhome下的solr.xml
32,33行分别为主机地址和端口号
<str name="host">${host:115.159.93.201}</str>
<int name="hostPort">${jetty.port:9001}</int>

第五步,把配置文件上传到zookeeper,由zookeeper来统一管理solr集群的配置信息。

    进入命令所在的目录
    cd /usr/local/solr-4.10.3/example/scripts/cloud-scripts/

    把/usr/local/solr-cloud/solrhome01/collection1/conf目录上传到zookeeper

    ./zkcli.sh -zkhost 115.159.93.201:2182, 115.159.93.201:2181, 115.159.93.201:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf

    进入一个zookeeper下的bin
    使用zkCli.sh查看是否上传成功

第六步,告诉solr实例zookeeper的位置,需要向tomcat的catalina.sh里添加:

    JAVA_OPTS="-DzkHost=115.159.93.201:2181,115.159.93.201:2182,115.159.93.201:2183"

第七步,启动4个tomcat

第八步,将4个solr分成2片,每片一个主节点,一个从节点。

    http://115.159.93.201:9001/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

第九步,删除不需要的collection1

    http://115.159.93.201:9001/solr/admin/collections?action=DELETE&name=collection1

将单机版solr切换到集群版

在applicationContext-service.xml中修改配置:

        <!-- 配置单机版solr客户端 -->
        <!-- <bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
            <constructor-arg name="baseURL" value="http://115.159.93.201:8080/solr"></constructor-arg>
        </bean>
         -->
        <!-- 配置集群版solr客户端 -->
        <bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
            <constructor-arg name="zkHost" value="115.159.93.201:2181,115.159.93.201:2182,115.159.93.201:2183"></constructor-arg>
            <property name="defaultCollection" value="collection2"></property>
        </bean>