`
lsh4894
  • 浏览: 105000 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

搭建Tomcat8+ solr-5.5.1+zookeeper3.4.6集群

阅读更多

 

1、软件环境配置

环境: Windows 7

apache-tomcat-8.0.35下载地址: http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/

Zookeepr v3.4.6 下载地址: http://apache.fayea.com/zookeeper/

solr-5.5.1  下载地址: http://mirrors.cnnic.cn/apache/lucene/solr/

JDK1.7 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

 

2、部署过程

2.1 部署好单机版Tomcat7 +Solr5.5.1

第一步:在E盘根目录下建立solrcloud目录。并把apache-tomcat-8.0.35-windows-x64.zip解压到solrcloud目录下,复制apache-tomcat-8.0.35并重命名为tomcat8-1。把solr-5.5.1.zip解压,并把solr-5.5.1\example\example-DIH\solr目录下的 solr文件夹 和 solr.xml  复制保存到solr_home_1\home 目录。如下图:

第一步:把apache-tomcat-8.0.35-windows-x64.zip解压到solrCloud目录下,复制apache-tomcat-8.0.35并重命名为tomcat8-1,

第二步,新建 solr_home_1 文件夹如下图,并在目录下,创建 home  和 server 文件夹

 

第三步:把solr-5.2.1\example\example-DIH\solr指定文件复制到solr_home_1\home目录下,如下图

第四步:把solr-5.5.1\server\solr-webapp\webapp下的内容复制到solr_home_1\server\solr下面,solr文件夹可以自己新建一个。

复制到

 

第五步:修改E:\solrcloud\solr_home_1\server\solr\WEB-INF目录下的web.xml文件,里面修改solr/home的value值,如下图。

 

 

第六步:在E:\solrcloud\solr_home_1\server\solr\WEB-INF目录下创建classes文件夹,将solr-5.5.1\example\resources\log4j.properites文件复制到classes目录下。

第七步:因为我们未将solr 服务放到tomcat webapps下面,所以需要修改E:\solrcloud\tomcat8-1\conf\server.xml 指向solr服务路径。如下图。

第八步:将solr-5.5.1\dist 和solr-5.5.1\server\lib\ext目录下的jar包复制到solr_home_1\server\solr\WEB-INF\lib 下(有这两个目录的jar大部分功能都是支持了,当然其它的jar肯定有用的,只是我们初学都暂时用不到)。

 

 

第九步:现在单机版本的就已经配置OK了。 启动tomcat, 访问http://localhost:8080/solr

 

2.2 配置多Tomcat+solr同时运行

 

第一步:

把tomcat8-1复制2份,分别命名tomcat8-2,tomcat8-3; 

把solr_home_1复制2份,分别命名solr_home_2,solr_home_3。

目录结构如下:

 

第二步:修改E:\solrcloud\tomcat8-*\conf\server.xml配置。

1、 修改 tomcat8-* 分别对应 各自solr_home_* 和 solr 服务 。

如下图:tomcat8-*对应solr_home_1、2 、3;

 

2、  为了三个tomcat能够在一台机器上同时启动,需要在server.xml修改tomcat的端口信息。修改方案如下:

  SHUTDOWN Port HTTP/1.1 Port AJP/1.3 Port
tomcat8-1 8005 8080 8009
tomcat8-2 8015 8081 8019
tomcat8-3 8025 8082 8029

 

第三步:配置各个tomcat和solr 之间的关系,修改E:\solrcloud\solr_home_*\server\solr\WEB-INF目录下的web.xml文件(对应关系)

 

第四步:验证修改是否成功,依次启动三个Tomcat。并在浏览器输入如下的URL: 

http://localhost:8080/solr/

http://localhost:8081/solr/

http://localhost:8082/solr/

如果都能正常访问到solr的admin页面,那么说明配置是成功的。否则就需要检查哪里错了或者遗漏了。

 

2.3 配置ZooKeeper集群

这部分的内容与前面tomcat+solr是没有关联的,所以配置这里,可以跟忘记前面的内容。

 

第一步:新建一个文件夹zookeeper-1,并且在下面新建data和datalog目录,解压zookeeper-3.4.6.tar.gz到E:\solrcloud\zookeeper-1目录下。

 

第二步:把E:\solrcloud\zookeeper-1\zookeeper-3.4.6\conf目录下的zoo_sample.cfg修改为zoo.cfg。并写入如下的配置参数:

在data目录中创建文件myid(不需要后缀名),在myid文件中写入数字1并保存退出。

 

第三步:把zookeeper-1复制2份,分别命名为zookeeper-2、zookeeper-3。然后修改各个zookeeper-*的conf目录下zoo.cfg的dataDir和dataLogDir和clientPort。修改方案如下:

  dataDir dataLogDir clientPort
zookeeper-1 E:\solrcloud\zookeeper-1\data E:\solrcloud\zookeeper-1\datalog 2181
zookeeper-2 E:\solrcloud\zookeeper-2\data E:\solrcloud\zookeeper-2\datalog 2182
zookeeper-3 E:\solrcloud\zookeeper-3\data E:\solrcloud\zookeeper-3\datalog 2183

 并且修改每个data目录下的myid文件中的内容。zookeeper-1是1, zookeeper-2是2,zookeeper-3是3 。

 

第四步:启动三个zookeeper。并验证是否配置成功。目录结构以及启动目录如下图:

 

注意:连接第一台时有异常信息,不用管,等都连接起来就没有异常了。

进入cmd 命令,输入: netstat -ano|findstr 2181 查看端口是否启用

2.4搭建Tomcat8+ solr-5.5.1+zookeeper3.4.6集群

前面tomcat+solr能够启动和访问了,而且zookeeper也能启动成功了。接下来就需要把他们关联起来。大家看那么多贴子应该知道(当然不知道也要记住这个知识点):solrcloud 的所有配置 需要zookeeper统一管理。

第一步: 将需要的配置库 集中放到一个目录中。

在E:\solrcloud 下创建cloud_conf文件夹作为配置库,将solr-5.5.1\server\ solr\configsets\sample_techproducts_configs\conf 下配置文件复制到cloud_conf文件夹中。(也可以使用solr-5.2.1\example\example-DIH\solr\solr\conf中的配置文件)

第二步: 配置zookeeper路径

在E:\solrcloud\tomcat8-1\bin\catalina.bat文件中, 我是在 setlocal 上一行添加:

如下图:

 

set JAVA_OPTS=-Dbootstrap_confdir=E:/solrcloud/cloud_conf -Dcollection.configName=myconf -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -DnumShards=3

配置参数解释:

-DzkHost是用来指定zookeeper服务器的ip和端口。

-Dnumshareds=3 用来指定当前集群中分片数为3

-Dcollection.configName   是在指定你的配置文件上传到zookeeper后的名字,省略这个参数将导致配置名字为默认的“configuration1”

-Dbootstrap_confdir :zooKeeper需要准备一份集群配置的副本,所以这个参数是告诉SolrCloud这些 配置是放在哪里。同时作为整个集群共用的配置文件。可以看作是第一份solr配置。因为后续我们可以通过上传,来实现多collection。

 

其余tomcat7_ser* catalina.bat设置

set JAVA_OPTS= -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

 

第三步:  因为配置由zookeeper 统一管理了,所以home下面的solr配置就不起使用了。 删除solr_home_*\home\solr文件夹, 修改配置solr.xml。

 

hostPort 修改为对应的tomcat端口号 8080 8081 8082

第四步:重启tomcat。访问任务一个端口都成,比如: http://localhost:8081, 能正常访问,且菜单中,出现了Cloud说明我们已经部署成功了

 

接下来分别从Core Admin创建一个Core,输入 name , instanceDir, collection, shard,点击AddCore。 说明下,当collection 名称样的core 索引是通用的。(反之collection不一样则索引之前不可相互访问了)

即 你在 new_core 下面创建的索引,在new_core1下面也是能够查询到的。 当我们创建完core之后,分支图就已经出现了。如下:

 

 

 

2.5常用命令

通过REST接口来创建Collection

http://192.168.175.1:8080/solr/admin/collections?action=CREATE&name=mycollection1&numShards=3&replicationFactor=1

下面对已经创建的初始分片进行复制

http://192.168.175.1:8080/solr/admin/cores?action=CREATE&collection=mycollection&name=mycollection_shard1_replica1&shard=shard1

上传另一份collection配置文件

在window cmd模式:

java -classpath .;E:\solrcloud\solr_home_1\server\solr\WEB-INF\lib\* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -confdir E:\solrcloud\cloud_conf -confname mycollection1

命令说明:

上传(upconfig) 到指定的服务(-zkhost 27.0.0.1:2181, 127.0.0.1:2182, 127.0.0.1:2183)  配置文件路径(-confdir):E:\solrcloud\cloud_conf。 配置名称(-confname)为: mycollection1

 

 注: 要添加 E:\solrcloud\solr_home_1\server\solr\WEB-INF\lib\* cmd才能识别  org.apache.solr.cloud.ZkCLI 的命令。

 

删除collection

java -classpath .;E:\solrcloud\solr_home_1\server\solr\WEB-INF\lib\* org.apache.solr.cloud.ZkCLI -cmd clear /configs/mycollection1 -zkhost 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381

 

删除所有

java -classpath .;E:\solrcloud\solr_home_1\server\solr\WEB-INF\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

 

2.6solrj链接solrcloud

 

        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <version>5.5.0</version>
        </dependency>

 

package com.demo;



import org.apache.solr.client.solrj.SolrClient;

import org.apache.solr.client.solrj.SolrQuery;

import org.apache.solr.client.solrj.SolrServerException;

import org.apache.solr.client.solrj.impl.CloudSolrClient;

import org.apache.solr.client.solrj.response.QueryResponse;

import org.apache.solr.common.SolrDocument;

import org.apache.solr.common.SolrDocumentList;

import org.apache.solr.common.SolrInputDocument;



import java.io.IOException;

import java.util.ArrayList;

import java.util.Collection;



/**

* Created by liuxun on 2016/6/14.

*/

public class solrDemo {

private static CloudSolrClient cloudSolrClient;



private static synchronized CloudSolrClient getCloudSolrClient(final String zkHost) {

if (cloudSolrClient == null) {

try {

cloudSolrClient = new CloudSolrClient(zkHost);

} catch (Exception e) {

e.printStackTrace();

}

}

return cloudSolrClient;

}

private static void addIndex(SolrClient solrClient) {

try {

SolrInputDocument doc1 = new SolrInputDocument();

doc1.addField("id", "421245251215121452521251");

doc1.addField("name", "张三");

doc1.addField("description", "张三是个农民,勤劳致富,奔小康");



SolrInputDocument doc2 = new SolrInputDocument();

doc2.addField("id", "4224558524254245848524243");

doc2.addField("name", "李四");

doc2.addField("description", "李四是个企业家,白手起家,致富一方");



SolrInputDocument doc3 = new SolrInputDocument();

doc3.addField("id", "2224558524254245848524299");

doc3.addField("name", "王五");

doc3.addField("description", "王五好吃懒做,溜须拍马,跟着李四,也过着小康的日子");



Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();

docs.add(doc1);

docs.add(doc2);

docs.add(doc3);

solrClient.add(docs);

solrClient.commit();

} catch (SolrServerException e) {

System.out.println("Add docs Exception !!!");

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (Exception e) {

System.out.println("Unknowned Exception!!!!!");

e.printStackTrace();

}

}

public static void search(SolrClient solrClient, String String) {

SolrQuery query = new SolrQuery();

query.setQuery(String);

// query.setParam("shards.tolerant", true);

try {

QueryResponse response = solrClient.query(query);

SolrDocumentList docs = response.getResults();



System.out.println("文档个数:" + docs.getNumFound());

System.out.println("查询时间:" + response.getQTime());



for (SolrDocument doc : docs) {

String id = (String) doc.getFieldValue("id");

String name = (String) doc.getFieldValue("name");

String desc = (String) doc.getFieldValue("description");

System.out.println("id: " + id);

System.out.println("name: " + name);

System.out.println("description: " + desc);

System.out.println();

}

} catch (SolrServerException e) {

e.printStackTrace();

} catch (Exception e) {

System.out.println("Unknowned Exception!!!!");

e.printStackTrace();

}

}

public void deleteAllIndex(SolrClient solrClient) {

try {

solrClient.deleteByQuery("*:*");// delete everything!

solrClient.commit();

} catch (SolrServerException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (Exception e) {

System.out.println("Unknowned Exception !!!!");

e.printStackTrace();

}

}

public static void main(String[] args) {

try {

final String zkHost = "127.0.0.1:2181";

final String defaultCollection = "mycollection";

final int zkClientTimeout = 20000;

final int zkConnectTimeout = 1000;



CloudSolrClient cloudSolrClient = getCloudSolrClient(zkHost);

System.out.println("The Cloud cloudSolrClient Instance has benn created!");

cloudSolrClient.setDefaultCollection(defaultCollection);

cloudSolrClient.setZkClientTimeout(zkClientTimeout);

cloudSolrClient.setZkConnectTimeout(zkConnectTimeout);

cloudSolrClient.connect();

System.out.println("The cloud Server has been connected !!!!");

//创建索引

solrDemo.addIndex(cloudSolrClient);

System.out.println("create index end!!!");

//查询

solrDemo.search(cloudSolrClient, "name:李");

cloudSolrClient.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

 

 

 

分享到:
评论

相关推荐

    SolrCloud4.9.0+tomcat7+zookeeper-3.4.6搭建教程

    本文将指导读者在Windows操作系统下搭建SolrCloud单机伪集群环境,使用Tomcat作为Servlet容器,Zookeeper作为分布式应用程序协调服务。 SolrCloud的安装和配置 1. 首先,需要下载SolrCloud、Tomcat和Zookeeper的...

    solrCloud5.2.1 + tomcat7 + zookeeper3.4.6

    在Windows 7环境下搭建SolrCloud5.2.1、Tomcat7和Zookeeper3.4.6的集成环境是进行分布式搜索和索引管理的重要步骤。下面将详细介绍整个配置过程。 1. **软件环境配置** - **操作系统**: Windows 7 - **Tomcat**: ...

    solr-5.5.1.zip

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...

    SolrCloud5.2.1+tomcat7+zookeeper3.4.6搭建教程

    **步骤1:** 解压`zookeeper-3.4.6.tar.gz`到`D:\Java\solrCloud5`目录下,并重命名为`zookeeper-1`。 **步骤2:** 配置`Zookeeper`集群,包括配置`zookeeper-1`的`myid`文件以及`zoo.cfg`配置文件,以便与SolrCloud...

    tomcat8+solr7直装版

    总的来说,“Tomcat8+Solr7直装版”为用户提供了便捷的方式来搭建和运行Solr搜索服务,降低了部署的复杂度,使得开发者可以更专注于应用开发和搜索功能的实现,而不需要过多关注底层基础设施的配置。

    SolrCloud5.2.1+tomcat7+zookeeper3.4.6搭建教程.docx

    本教程主要介绍如何在Windows 7环境下搭建SolrCloud 5.2.1,使用Tomcat 7作为应用服务器,以及Zookeeper 3.4.6作为集群协调器。 首先,我们需要准备以下软件: 1. Apache Tomcat 7.0.56:这是一个开源的Servlet...

    solr-zookeeper-tomcat集群搭建

    Solr-Zookeeper-Tomcat集群搭建教程 在大数据和搜索引擎领域,Apache Solr是一个非常流行的全文检索服务。它能够提供高效、可扩展的搜索和分析功能。为了实现高可用性和负载均衡,通常会将Solr部署在分布式环境中,...

    solr-8.6.3.tgz+hbase-2.3.3-bin.tar.gz

    标题中的"solr-8.6.3.tgz+hbase-2.3.3-bin.tar.gz"表明我们有两个重要的开源软件版本:Apache Solr 8.6.3和HBase 2.3.3。Solr是Apache软件基金会的一个项目,主要用于全文搜索、企业级搜索和大数据分析。而HBase则是...

    solr-7.7.2+ik-analyzer-solr7x.zip

    2. **分布式搜索**:通过Sharding和Replication,Solr可以在多台服务器上构建大规模的搜索集群,实现数据的分散存储和并行处理。 3. **多字段类型支持**:Solr允许为不同的字段定义不同的数据类型,如text、int、...

    solr-data-import-scheduler

    solr 增量更新所需要的包 solr-dataimporthandler-6.5.1 + solr-dataimporthandler-extras-6.5.1 + solr-data-import-scheduler-1.1.2

    IK分词器+tomcat-7.0.47+jdk+sol+zookeepe

    IK分词器+apache-tomcat-7.0.47.tar.gz+jdk-7u55-linux-i586.tar.gz+solr-4.10.3.tgz.tgz+zookeeper-3.4.6.tar.gz

    tomcat8+solr7.4+IK

    【标题】"Tomcat8+Solr7.4+IK"是一个在Linux环境下搭建的搜索引擎解决方案,其中包含了Apache Tomcat 8作为应用服务器,Solr 7.4作为搜索引擎核心,以及IK Analyzer作为中文分词工具。这个配置适用于需要处理大量...

    tomcat9 + solr

    标题 "Tomcat9 + Solr" 提示我们讨论的是如何在Apache Tomcat 9服务器上部署和运行Apache Solr搜索引擎。Solr是一个基于Java的开源全文搜索引擎,它提供了高效的索引和搜索功能,广泛用于企业级的信息检索系统。...

    lucene-5.3.0+solr-5.3.0 jar包和文档示例

    Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。...

    IKAnalyzer-5.0.jar+solr-analyzer-extra-5.3.jar

    本篇将详细介绍IKAnalyzer-5.0.jar和solr-analyzer-extra-5.3.jar这两个Solr的IK分词器组件及其功能。 首先,IKAnalyzer-5.0.jar是IK分词器的主要核心库,由开源社区维护和更新。这个版本的IKAnalyzer支持词典动态...

    集群搭建(zookeeper集群+solr集群)

    ### 集群搭建(Zookeeper集群 + Solr集群) #### 一、SolrCloud概述 **SolrCloud**是Apache Solr提供的分布式搜索解决方案,适用于需要处理大规模数据集、支持高并发搜索请求的场景。当单一服务器上的索引数据量较...

    solr-mongo-importer-1.1.0.jar

    solr-mongo-importer-1.1.0.jar solr-mongo-importer-1.1.0.jar solr-mongo-importer-1.1.0.jar

    tomcat-8.0.28+solr5.3.1安装教程.doc

    ### Tomcat 8.0.28 + Solr 5.3.1 安装教程 #### 一、JDK 下载与安装 1. **下载** 访问官方下载页面:[http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html]...

Global site tag (gtag.js) - Google Analytics