`

Solr+tomcat分布式集群部署

 
阅读更多

本文以solr-5.5.2讲述solr+tomcat的单机分布式的部署

 

准备工作:

 

1、JDK1.7

 

2、zookeeper-3.5.1-alpha.tar.gz

 

3、apache-tomcat-8.0.30.zip

 

4、solr-5.5.2.zip

 

5、CentOS release 6.6

 

 

关键字说明:

Collection:在SolrCloud集群中逻辑意义上的完整的索引。它常常被划分为一个或多个Shard,它们使用相同的Config Set。如果Shard数超过一个,它就是分布式索引,SolrCloud让你通过Collection名称引用它,而不需要关心分布式检索时需要使用的和Shard相关参数。

Core:也就是Solr Core,一个Solr中包含一个或者多个Solr Core,每个Solr Core可以独立提供索引和查询功能,每个Solr Core对应一个索引或者Collection的Shard,Solr Core的提出是为了增加管理灵活性和共用资源。在SolrCloud中有个不同点是它使用的配置是在Zookeeper中的,传统的Solr core的配置文件是在磁盘上的配置目录中。

Leader:赢得选举的Shard replicas。每个Shard有多个Replicas,这几个Replicas需要选举来确定一个Leader。选举可以发生在任何时间,但是通常他们仅在某个Solr实例发生故障时才会触发。当索引documents时,SolrCloud会传递它们到此Shard对应的leader,leader再分发它们到全部Shard的replicas。

Replica:Shard的一个拷贝。每个Replica存在于Solr的一个Core中。一个命名为“test”的collection以numShards=1创建,并且指定replicationFactor设置为2,这会产生2个replicas,也就是对应会有2个Core,每个在不同的机器或者Solr实例。一个会被命名为test_shard1_replica1,另一个命名为test_shard1_replica2。它们中的一个会被选举为Leader。

 

Shard:Collection的逻辑分片。每个Shard被化成一个或者多个replicas,通过选举确定哪个是Leader。

 

附图:这是我的目录结构 

       基于个人虚拟机的原因,全是用root用户操作的,若在开发中遇到不可预测错误,不排除权限问题造成。

 

Hadoop为zookeeper伪集群目录 详细就参考http://coolxing.iteye.com/blog/1871009

 

A.   设置tomcat    复制三份tomcat,分别为tomcat8082、tomcat8083、tomcat8084,修改tomcat/conf/server.xml的各端口

 

B.   设置solrhome  复制三份solrhome,进入/root/solr/solr-5.5.2/server/solr,将solr复制三份,为了方便区别,命名为solrhome8082,solrhome8083,solrhome8084,并修改各solrhome下的solr.xml

<solr>
  <solrcloud>
    <str name="host">192.168.187.129</str>//tomcat的IP地址
    <int name="hostPort">8082</int>	//对应的tomcat端口
    <str name="hostContext">/solr</str>	//solr的webapp名字

    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>

    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
    <str name="zkCredentialsProvider">${zkCredentialsProvider:org.apache.solr.common.cloud.DefaultZkCredentialsProvider}</str>
    <str name="zkACLProvider">${zkACLProvider:org.apache.solr.common.cloud.DefaultZkACLProvider}</str>

  </solrcloud>

  <shardHandlerFactory name="shardHandlerFactory"
    class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:600000}</int>
    <int name="connTimeout">${connTimeout:60000}</int>
  </shardHandlerFactory>
</solr>

 

 

C.设置solr webapp

  a)   进入/root/solr/solr-5.5.2/server/solr-webapp,将webapp复制三份,分别为solr8082、solr8083、solr8084,修改solr8082/WEB-INF/web.xml

<env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value> /root/solr/solr-5.5.2/server/solrhome8082</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

    solr8083、solr8084的修改大同,注意:默认以上代码是注释的

 

    b)   Copy对应的jar包到webapp/WEB-INF/lib下

      1.   路径/root/solr/solr-5.5.2/server/lib/ext下的所有包

      2.   路径/root/solr/solr-5.5.2/dist下的solr-dataimporthandler-5.5.2.jar,solr-dataimporthandler-extras-5.5.2.jar包,用于数据库导入数据

      3.   上传mysql连接包mysql-connector-java-5.1.35.jar

         4.  路径/root/solr/solr-5.5.2/dist下的solr-dataimporthandler-5.5.2.jar,solr-dataimporthandler-extras-5.5.2.jar包,用于数据库导入数据

       c)   修改tomcat/conf/server.xml 各docBase需修改对应路径

<Context docBase="/root/solr/solr-5.5.2/server/solr-webapp/solr8082" path="/solr" reloadable="false" source="org.eclipse.jst.j2ee.server:solr"/>

   

 

     D.   设置 JAVA_OPTS 进入tomcat8082/bin下,修改catalina.sh 加下如下参数:

JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/root/solr/solr-5.5.2/server/solrhome8082 -DzkHost=192.168.187.129:12181,192.168.187.129:12182,192.168.187.129:12183"

     solr8083、solr8084的修改大同.

 

 

     E.    生成collection

      a)      进入/root/solr/solr-5.5.2/server/solr/configsets 复制sample_techproducts_configs,命名为core1,修改core1/conf下的schema.xml文件,(默认此文件不存在,新建一个)

<fields>
        		<field name="core1" type="string" indexed="true" stored="false"/>
</fields>

 这步有点玄乎,开始我建的时候,没有此文件报错,建立此文件后,发现新建的field.core1并没有生效

 

      b)       创建数据导入文件data-config.xml

<dataConfig>
    <dataSource type="JdbcDataSource"
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://172.20.11.129:3306/zjpedometerdb"
              user="root"
              password="root" />
    <document>
        <entity name="solr_test" transformer="DateFormatTransformer"
            query="select concat('menu.',MENU_ID) id,MENU_NAME subject,URL description from sys_menus where '${dataimporter.request.clean}' != 'false' ">

        </entity>
        <entity name="solr_user" 
            query="select concat('user.',user_id) id,user_name subject,user_password description from sys_users where '${dataimporter.request.clean}' != 'false' ">

        </entity>
    </document>
</dataConfig>

 

          c)      修改core1/conf/solrconfig.xml 在config下加入

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
            <str name="config">data-config.xml</str>
        </lst>
    </requestHandler>  

 

        d)      上传配置至zookeeper

java -classpath .:/root/solr/solr-5.5.2/server/solr-webapp/solr8082/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.187.129:12181,192.168.187.129:12182,192.168.187.129:12183 -confdir /root/solr/solr-5.5.2/server/core1/conf  -confname core1

 注:以上命令也可用于更新配置,如果更新单个文件,用

java -classpath .:/root/solr/solr-5.5.2/server/solr-webapp/solr8082/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.187.129:12181,192.168.187.129:12182,192.168.187.129:12183 -cmd putfile /configs/core1/schema.xml /root/solr/solr-5.5.2/server/core1/conf/schema.xml

    /configs/core1/schme.xml 是zookeeper文件路径,core1是配置文件路径名

 /root/solr/solr-5.5.2/server/core1/conf/schema.xml 本地文件

 

    启动各tomcat.打开任意tomcat.solr

 

 

         e)  创建一个collection 切换到/root/solr/solr-5.5.2

./bin/solr create_collection -c core1 -d /root/solr/solr-5.5.2/server/core1/conf -shards 3 -replicationFactor 3 -p 8082

 

        f)  关联配置

java -classpath .:/root/solr/solr-5.5.2/server/solr-webapp/solr8082/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection core1 -confname core1 -zkhost 192.168.187.129:12181,192.168.187.129:12182,192.168.187.129:12183

 

 

        g)      检测collection是否成功创建,在Solr UI中刷新页面,点击Cloud如果成功创建了Collection会显示出Solr的集群拓扑



 选中一个core,


 

 选中data-config.xml构建的dataimport

 



  点击Execute

 



 

请求2次,分别是两个 entity,导入17条数据

 

点击左边的query,点击execute query,查询结果如下。


 
 基本塔建已经完成,配上nginx负载均衡,第一次发表文档,有不足之处,请留言。

 

 

 

 

 

 

 

 

  • 大小: 19.7 KB
  • 大小: 36.5 KB
  • 大小: 74.6 KB
  • 大小: 10.3 KB
  • 大小: 57.1 KB
  • 大小: 72.8 KB
  • 大小: 72.1 KB
  • 大小: 60.1 KB
  • 大小: 54.9 KB
分享到:
评论

相关推荐

    solr+tomcat处理后的简易部署+说明文档(下)

    Solr与Tomcat的组合是常见的一种搜索引擎服务部署方式,其中Solr提供了强大的全文搜索功能,而Tomcat作为流行的Java应用服务器,为Solr提供运行环境。本篇将详细讲解如何进行Solr与Tomcat的简易部署,并结合提供的...

    solr+tomcat项目

    Solr+Tomcat项目整合是将Apache Solr搜索引擎与Apache Tomcat应用服务器结合使用的过程,以便在Web环境中部署和运行Solr服务。Solr是一个基于Lucene的全文搜索服务器,而Tomcat则是一个轻量级Java应用服务器,常用于...

    ZooKeeper实例 + Solr(tomcat)集群部署

    ### ZooKeeper实例与Solr(tomcat)集群部署详解 #### 一、部署背景与目的 在大数据处理和搜索引擎技术领域,ZooKeeper与Solr是两个不可或缺的技术组件。ZooKeeper作为分布式协调服务,提供了高可用性以及一致性保证...

    solr4.9+tomcat+zookeeper集群

    在这个集群环境中,Tomcat作为Servlet容器运行Solr,而Zookeeper则作为分布式协调服务,管理整个集群的状态和配置。 一、Solr 4.9 集群的核心概念 1. **Sharding**: Solr集群通过分片技术将大量数据分散到多个节点...

    solr-zookeeper-tomcat集群搭建

    为了实现高可用性和负载均衡,通常会将Solr部署在分布式环境中,这就需要用到Zookeeper进行集群协调。而Tomcat作为Java应用服务器,常被用来运行Solr服务器。本文将详细介绍如何搭建Solr-Zookeeper-Tomcat集群。 一...

    solrCloud5.2.1 + tomcat7 + zookeeper3.4.6

    **2.1 单机版Tomcat7 + Solr5.2.1部署** 1. 在D盘根目录创建`solrCloud`文件夹,解压`apache-tomcat-7.0.56.zip`至该目录,并重命名为`tomcat7_ser1`。 2. 解压`solr-5.2.1.tgz`,复制`solr-5.2.1\example\...

    solr_Tomcat_lib包

    安装`solr_Tomcat_lib`包到Tomcat的`WEB-INF/lib`目录下,是将Solr部署到Tomcat服务器的关键步骤。这使得Tomcat可以加载所有必要的库文件,以便正确地运行Solr实例。 在部署过程中,确保Tomcat版本与Solr版本兼容,...

    solr 3.5 tomcat 整合可直接使用

    Solr 3.5还提供了分布式搜索能力,允许在多台机器上构建大规模的搜索集群,以满足高并发和大数据量的需求。 **Tomcat集成Solr的步骤** 1. **下载和解压**: 首先,你需要从Apache Solr官方网站获取Solr 3.5的发行包...

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

    完成以上步骤后,即可启动`Zookeeper`集群,并进一步配置SolrCloud以利用该集群进行分布式索引和查询处理。 通过以上详细的步骤,您已经完成了SolrCloud 5.2.1 + Tomcat 7 + Zookeeper 3.4.6环境的搭建。这为构建...

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

    1. Apache Tomcat 7.0.56:这是一个开源的Servlet容器,用于部署Java Web应用程序,包括Solr。 - 下载地址:http://tomcat.apache.org/download-70.cgi 2. Zookeeper 3.4.6:它是Apache的一个项目,提供分布式一致...

    Apache Solr and Tomcat6 Search engine

    4. **分布式搜索**: Solr可以部署在多个服务器上,形成一个集群,实现索引和查询的分布式处理。这种架构使得Solr能够处理大规模的数据和高并发的请求。 5. **富文本处理**: Solr支持对文本进行预处理,如去除停用词...

    solr5.5.4部署及使用

    在实际应用中,Solr的部署和使用不仅涉及上述基础步骤,还需要考虑集群配置、性能优化、安全设置等多个方面。例如,通过SolrCloud实现分布式部署,利用Sharding和Replication提高可用性和性能,以及通过设置过滤器、...

    solr集群安装

    Solr集群安装是一个复杂的过程,涉及到多个步骤,包括Zookeeper集群的配置和Solr整合Tomcat的部署。这里我们将详细讲解这些步骤。 首先,我们来理解Zookeeper在Solr集群中的角色。Zookeeper是一个分布式协调服务,...

    windows-solr集群.docx

    - **高可用性**: 支持分布式环境下的集群部署,确保高可用性和负载均衡。 #### 二、Solr单机安装与配置 1. **下载Solr压缩包**: - 最新版本为7.7.2,下载地址为: ...

    solr6.3.0.zip tomcat专用

    Solr还支持集群部署,通过SolrCloud模式可以实现分布式搜索和数据冗余,从而确保系统的高可用性和扩展性。 总之,结合Solr 6.3.0与Tomcat 8,你能够快速构建一个强大且灵活的全文搜索引擎,适用于各种规模的业务...

    搜索引擎solr最新版,tomcat启动

    此外,Solr 7.x系列还引入了SolrCloud模式,支持集群部署,实现数据的高可用性和容错性。 在描述中提到,这个版本的Solr可以"进行无限的扩展与优化",这意味着用户可以根据需求定制各种插件和配置,以满足特定的...

Global site tag (gtag.js) - Google Analytics