Linux ·

Solr集群solrCloud的搭建

上一章讲了Solr单机版的搭建 http://www.linuxidc.com/Linux/2017-03/141401.htm,本章将讲解sole集群的搭建。solr集群的搭建需要使用到zookeeper,搭建参见Zookeeper集群的安装

一、solr实例的搭建

1. tomcat安装

   这里我们需要4个tomcat,分别是tomcat1,2,3,4

Solr集群solrCloud的搭建 Linux 第1张

  同时修改tomcat1,2,3,4的端口为8080-8083。保证两个tomcat可以正常运行不发生端口冲突。

2.解压solr-4.10.3.tar.gz压缩包。从压缩包中复制/solr-4.10.3/dist/solr-4.10.3.war到tomcat1,并重命名为solr.war。

 Solr集群solrCloud的搭建 Linux 第2张

3.启动tomcat,解压solr.war。解压成功后关闭tomcat,删除solr.war

4.将solr日志相关的jar包拷贝到解压的solr项目的lib包中

  Solr集群solrCloud的搭建 Linux 第3张

5.创建solrhome文件

  这里直接拷贝单机版中创建的solrhome

Solr集群solrCloud的搭建 Linux 第4张

6.修改tomcat1-4中的solr的web.xml对应的env-entry-value值为/usr/local/solrcloud/solrhome1-4,指定对应的solrhome

  Solr集群solrCloud的搭建 Linux 第5张

7.其他的配置参见Solr单机版的搭建 http://www.linuxidc.com/Linux/2017-03/141401.htm

二、solr集群的搭建

  1.把solrhome中的配置文件上传到zookeeper集群。使用zookeeper的客户端上传。

    使用solr安装包中的/opt/mysoft/solr-4.10.3/example/scripts/cloud-scripts中的zkcli.sh

  Solr集群solrCloud的搭建 Linux 第6张

  运行命令

./zkcli.sh -zkhost 192.168.198.130:2181,192.168.198.130:2182,192.168.198.130:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf

 

  查看运行是否成功,使用zookeeper中的脚本

Solr集群solrCloud的搭建 Linux 第7张

2.修改solrhome1-4下的solr.xml文件,指定当前实例运行的ip地址及端口号8080-8083。

 Solr集群solrCloud的搭建 Linux 第8张

3.修改每一台solr的tomcat 的 bin目录下catalina.sh文件中加入DzkHost指定zookeeper服务器地址:

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

Solr集群solrCloud的搭建 Linux 第9张

4.重启tomcat

 查看运行结果

Solr集群solrCloud的搭建 Linux 第10张

5.创建一个两片的collection,每片是一主一备

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

Solr集群solrCloud的搭建 Linux 第11张

回到主界面查看

Solr集群solrCloud的搭建 Linux 第12张

6.删除collection1

http://192.168.198.130:8080//solr/admin/collections?action=DELETE&name=collection1

Solr集群solrCloud的搭建 Linux 第13张

查看主界面

Solr集群solrCloud的搭建 Linux 第14张

三、Java测试代码

@Test
    public void testAddDocument() throws Exception {
        //创建一个和solr集群的连接
        //参数就是zookeeper的地址列表,使用逗号分隔
        String zkHost = "192.168.198.130:2181,192.168.198.130:2182,192.168.198.130:2183";
        CloudSolrServer solrServer = new CloudSolrServer(zkHost);
        //设置默认的collection
        solrServer.setDefaultCollection("collection2");
        //创建一个文档对象
        SolrInputDocument document = new SolrInputDocument();
        //向文档中添加域
        document.addField("id", "test001");
        document.addField("item_title", "测试商品");
        //把文档添加到索引库
        solrServer.add(document);
        //提交
        solrServer.commit();
    }
    
    @Test
    public void queryDocument() throws Exception{
        //创建一个和solr集群的连接
        //参数就是zookeeper的地址列表,使用逗号分隔
        String zkHost = "192.168.198.130:2181,192.168.198.130:2182,192.168.198.130:2183";
        CloudSolrServer solrServer = new CloudSolrServer(zkHost);
        //设置默认的collection
        solrServer.setDefaultCollection("collection2");        
        solrServer.deleteByQuery("*:*");
        solrServer.commit();
    }
    

四、spring集成

<bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer"> 
        <constructor-arg name="zkHost" value="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"></constructor-arg> 
        <property name="defaultCollection" value="collection2"></property>
</bean>

java代码使用方法不变,因为SolrServer是CloudSolrServer的父类

Solr集群solrCloud的搭建 Linux 第15张

 

PDF文档可以到Linux公社资源站下载:

------------------------------------------分割线------------------------------------------

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2017年资料/3月/5日/Solr集群solrCloud的搭建/

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割线------------------------------------------

更多

参与评论